diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..72d44d72504a2dadf5b70d766419a12f58af8e8d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,37 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +web/assets/classifier.gif filter=lfs diff=lfs merge=lfs -text +web/assets/outlier.gif filter=lfs diff=lfs merge=lfs -text diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..e21c72c8f9c19c5937ae528410d9b9826aedda73 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,55 @@ +# Copyright 2025 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. +# +# This is used to build a Docker image that includes the necessary dependencies +# for running the Path Foundation as a microservice. + +FROM python:3.12-slim-bullseye + +#RUN apt-get update && apt-get install -y nano tmux + +# Set up a new user named "user" with user ID 1000 +RUN useradd -m -u 1000 user + +ENV HOME=/home/user \ + PATH=/home/user/.local/bin:$PATH + +WORKDIR $HOME/app +# Change ownership of /app to the non-root user + + +RUN apt-get update && \ + apt-get install -y --no-install-recommends unzip wget && \ + rm -rf /var/lib/apt/lists/* +RUN mkdir /home/user/app/path-cache + +RUN chown -R user /home/user/app + + +# Switch to the "user" user +USER user + +RUN wget https://storage.googleapis.com/healthai-us/pathology/cache/path-cache.zip -O $HOME/app/path-cache.zip +RUN unzip $HOME/app/path-cache.zip -d $HOME/app/path-cache && rm $HOME/app/path-cache.zip + + +COPY --chown=user ./requirements.txt $HOME/app +RUN pip3 install -r requirements.txt + +COPY --chown=user ./ $HOME/app +ENV PYTHONPATH=${PYTHONPATH}:$HOME/app + +RUN ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/' + +ENTRYPOINT ["python3", "server_gunicorn.py"] diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..df07f09a52d37e819f11e43c09581405ff752395 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +--- +title: Path Foundation Demo +emoji: 🔬 +colorFrom: red +colorTo: yellow +sdk: docker +pinned: false +header: mini +app_port: 8080 +models: [google/path-foundation] +--- + +Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference diff --git a/auth.py b/auth.py new file mode 100644 index 0000000000000000000000000000000000000000..50d51999b1be24e6e9f6e94668dbd9c729808f08 --- /dev/null +++ b/auth.py @@ -0,0 +1,40 @@ +import datetime +import os +from google.oauth2 import service_account +import google.auth.transport.requests +import json + +def create_credentials() -> service_account.Credentials: + secret_key_json = os.environ.get("SERVICE_ACC_KEY") + if not secret_key_json: + raise ValueError("Environment variable 'SERVICE_ACC_KEY' is not set or is empty.") + try: + service_account_info = json.loads(secret_key_json) + except (SyntaxError, ValueError) as e: + raise ValueError("Invalid service account key JSON format.") from e + + return service_account.Credentials.from_service_account_info( + service_account_info, + scopes=['https://www.googleapis.com/auth/cloud-platform'] + ) + +def refresh_credentials(credentials: service_account.Credentials) -> service_account.Credentials: + if credentials.expiry: + expiry_time = credentials.expiry.replace(tzinfo=datetime.timezone.utc) + + # Calculate the time remaining until expiration + time_remaining = expiry_time - datetime.datetime.now(datetime.timezone.utc) + + # Check if the token is about to expire (e.g., within 5 minutes) + if time_remaining < datetime.timedelta(minutes=5): + request = google.auth.transport.requests.Request() + credentials.refresh(request) + else: + request = google.auth.transport.requests.Request() + credentials.refresh(request) + + return credentials + +def get_access_token_refresh_if_needed(credentials: service_account.Credentials) -> str: + credentials = refresh_credentials(credentials) + return credentials.token \ No newline at end of file diff --git a/data_models/__init__.py b/data_models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..7a1593d86c2203c884c5ef38da566e82e966daf2 --- /dev/null +++ b/data_models/__init__.py @@ -0,0 +1,14 @@ +# +# Copyright 2024 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. diff --git a/data_models/embedding_converter.py b/data_models/embedding_converter.py new file mode 100644 index 0000000000000000000000000000000000000000..3a56eb1967c453d9a7b0184fa800d2f822a034f5 --- /dev/null +++ b/data_models/embedding_converter.py @@ -0,0 +1,445 @@ +# Copyright 2024 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. + +"""Converts Embedding Requests and Responses to json and vice versa.""" + +import dataclasses +import json +from typing import Any, List, Mapping, Sequence + +from ez_wsi_dicomweb import patch_embedding_endpoints + +import pete_errors +from data_models import embedding_request +from data_models import embedding_response +from data_models import patch_coordinate as patch_coordinate_module + +_EndpointJsonKeys = patch_embedding_endpoints.EndpointJsonKeys + + +class ValidationError(Exception): + pass + + +class _InvalidCoordinateError(Exception): + pass + + +class _InstanceUIDMetadataError(Exception): + pass + + +def validate_int(val: Any) -> int: + if isinstance(val, float): + cast_val = int(val) + if cast_val != val: + raise ValidationError('coordinate value is not int') + val = cast_val + elif not isinstance(val, int): + raise ValidationError('coordinate value is not int') + return val + + +def _get_patch_coord(patch_coordinates: Sequence[Mapping[str, Any]]): + """Returns patch coodianates.""" + result = [] + if not isinstance(patch_coordinates, list): + raise _InvalidCoordinateError('patch_coordinates is not list') + for patch_coordinate in patch_coordinates: + try: + pc = patch_coordinate_module.create_patch_coordinate(**patch_coordinate) + except TypeError as exp: + if not isinstance(patch_coordinate, dict): + raise _InvalidCoordinateError('Patch coordinate is not dict.') from exp + keys = ', '.join( + list( + dataclasses.asdict( + patch_coordinate_module.create_patch_coordinate(0, 0) + ) + ) + ) + raise _InvalidCoordinateError( + f'Patch coordinate dict has invalid keys; expecting: {keys}' + ) from exp + try: + validate_int(pc.x_origin) + validate_int(pc.y_origin) + validate_int(pc.width) + validate_int(pc.height) + except ValidationError as exp: + raise _InvalidCoordinateError( + f'Invalid patch coordinate; x_origin: {pc.x_origin}, y_origin:' + f' {pc.y_origin}, width: {pc.width}, height: {pc.height}' + ) from exp + result.append(pc) + if not result: + raise _InvalidCoordinateError('empty patch_coordinates') + return result + + +def embedding_response_v1_to_json( + response: embedding_response.EmbeddingResponseV1, +) -> Mapping[str, Any]: + """Loads the model artifact. + + Args: + response: Structed EmbeddingResponse object. + + Returns: + The value of the JSON payload to return in the API. + """ + json_response = dataclasses.asdict(response) + if response.error_response: + json_response['error_response'][ + 'error_code' + ] = response.error_response.error_code.value + return {_EndpointJsonKeys.PREDICTIONS: json_response} + + +def embedding_response_v2_to_json( + json_response: Sequence[Mapping[str, Any]], +) -> Mapping[str, Any]: + return {_EndpointJsonKeys.PREDICTIONS: json_response} + + +def validate_str_list(val: Any) -> List[str]: + if not isinstance(val, List): + raise ValidationError('not list') + for v in val: + if not isinstance(v, str) or not v: + raise ValidationError('list contains invalid value') + return val + + +def _validate_instance_uids_not_empty_str_list(val: Any) -> List[str]: + try: + val = validate_str_list(val) + except ValidationError as exp: + raise _InstanceUIDMetadataError() from exp + if not val: + raise _InstanceUIDMetadataError('list is empty') + return val + + +def validate_str_key_dict(val: Any) -> Mapping[str, Any]: + if not isinstance(val, dict): + raise ValidationError('not a dict') + if val: + for k in val: + if not isinstance(k, str) or not k: + raise ValidationError('dict contains invalid value') + return val + + +def validate_str(val: Any) -> str: + if not isinstance(val, str): + raise ValidationError('not string') + return val + + +def _validate_not_empty_str(val: Any) -> str: + if not isinstance(val, str) or not val: + raise ValidationError('not string or empty') + return val + + +def _generate_instance_metadata_error_string( + metadata: Mapping[str, Any], *keys: str +) -> str: + """returns instance metadata as a error string.""" + result = {} + for key in keys: + if key not in metadata: + continue + if key == _EndpointJsonKeys.EXTENSIONS: + value = metadata[key] + if isinstance(value, Mapping): + value = dict(value) + # Strip ez_wsi_state from output. + # Not contributing to validation errors here and may be very large. + if _EndpointJsonKeys.EZ_WSI_STATE in value: + del value[_EndpointJsonKeys.EZ_WSI_STATE] + result[key] = value + continue + elif key == _EndpointJsonKeys.BEARER_TOKEN: + value = metadata[key] + # If bearer token is present, and defined strip + if isinstance(value, str) and value: + result[key] = 'PRESENT' + continue + # otherwise just associate key and value. + result[key] = metadata[key] + return json.dumps(result, sort_keys=True) + + +def _validate_instance_list(json_metadata: Mapping[str, Any]) -> List[Any]: + val = json_metadata.get(_EndpointJsonKeys.INSTANCES) + if isinstance(val, list): + return val + raise pete_errors.InvalidRequestFieldError( + 'Invalid input, missing expected' + f' key: {_EndpointJsonKeys.INSTANCES} and associated list of values.' + ) + + +class EmbeddingConverterV1: + """Class containing methods for transforming embedding request and responses.""" + + def json_to_embedding_request( + self, json_metadata: Mapping[str, Any] + ) -> embedding_request.EmbeddingRequestV1: + """Converts json to embedding request. + + Args: + json_metadata: The value of the JSON payload provided to the API. + + Returns: + Structured EmbeddingRequest object. + + Raises: + InvalidRequestFieldError: If the provided fields are invalid. + """ + instances = [] + try: + model_params = json_metadata[_EndpointJsonKeys.PARAMETERS] + try: + parameters = embedding_request.EmbeddingParameters( + model_size=_validate_not_empty_str( + model_params.get(_EndpointJsonKeys.MODEL_SIZE) + ), + model_kind=_validate_not_empty_str( + model_params.get(_EndpointJsonKeys.MODEL_KIND) + ), + ) + except ValidationError as exp: + raise pete_errors.InvalidRequestFieldError( + 'Invalid model size and/or kind parameters.' + ) from exp + for instance in _validate_instance_list(json_metadata): + ez_wsi_state = instance.get(_EndpointJsonKeys.EZ_WSI_STATE, {}) + try: + ez_wsi_state = validate_str_key_dict(ez_wsi_state) + except ValidationError: + try: + ez_wsi_state = validate_str(ez_wsi_state) + except ValidationError as exp: + raise pete_errors.InvalidRequestFieldError( + 'Invalid EZ-WSI state metadata.' + ) from exp + try: + instances.append( + embedding_request.EmbeddingInstanceV1( + dicom_web_store_url=_validate_not_empty_str( + instance.get(_EndpointJsonKeys.DICOM_WEB_STORE_URL) + ), + dicom_study_uid=_validate_not_empty_str( + instance.get(_EndpointJsonKeys.DICOM_STUDY_UID) + ), + dicom_series_uid=_validate_not_empty_str( + instance.get(_EndpointJsonKeys.DICOM_SERIES_UID) + ), + bearer_token=_validate_not_empty_str( + instance.get(_EndpointJsonKeys.BEARER_TOKEN) + ), + ez_wsi_state=ez_wsi_state, + instance_uids=_validate_instance_uids_not_empty_str_list( + instance.get(_EndpointJsonKeys.INSTANCE_UIDS) + ), + patch_coordinates=_get_patch_coord( + instance.get(_EndpointJsonKeys.PATCH_COORDINATES) + ), + ) + ) + except ValidationError as exp: + instance_error_msg = _generate_instance_metadata_error_string( + instance, + _EndpointJsonKeys.DICOM_WEB_STORE_URL, + _EndpointJsonKeys.DICOM_STUDY_UID, + _EndpointJsonKeys.DICOM_SERIES_UID, + _EndpointJsonKeys.BEARER_TOKEN, + _EndpointJsonKeys.INSTANCE_UIDS, + ) + raise pete_errors.InvalidRequestFieldError( + f'Invalid instance; {instance_error_msg}' + ) from exp + except _InstanceUIDMetadataError as exp: + instance_error_msg = _generate_instance_metadata_error_string( + instance, + _EndpointJsonKeys.PATCH_COORDINATES, + ) + raise pete_errors.InvalidRequestFieldError( + f'Invalid DICOM SOP Instance UID metadata; {instance_error_msg}' + ) from exp + except _InvalidCoordinateError as exp: + raise pete_errors.InvalidRequestFieldError( + f'Invalid patch coordinate; {exp}' + ) from exp + except (TypeError, ValueError, KeyError) as exp: + raise pete_errors.InvalidRequestFieldError( + f'Invalid input: {json.dumps(json_metadata)}' + ) from exp + return embedding_request.EmbeddingRequestV1( + parameters=parameters, instances=instances + ) + + +class EmbeddingConverterV2: + """Class containing methods for transforming embedding request and responses.""" + + def json_to_embedding_request( + self, json_metadata: Mapping[str, Any] + ) -> embedding_request.EmbeddingRequestV2: + """Converts json to embedding request. + + Args: + json_metadata: The value of the JSON payload provided to the API. + + Returns: + Structured EmbeddingRequest object. + + Raises: + InvalidRequestFieldError: If the provided fields are invalid. + """ + instances = [] + for instance in _validate_instance_list(json_metadata): + try: + patch_coordinates = _get_patch_coord( + instance.get(_EndpointJsonKeys.PATCH_COORDINATES) + ) + except _InvalidCoordinateError as exp: + instance_error_msg = _generate_instance_metadata_error_string( + instance, + _EndpointJsonKeys.PATCH_COORDINATES, + ) + raise pete_errors.InvalidRequestFieldError( + f'Invalid patch coordinate; {exp}; {instance_error_msg}' + ) from exp + if _EndpointJsonKeys.DICOM_PATH in instance: + try: + dicom_path = validate_str_key_dict( + instance.get(_EndpointJsonKeys.DICOM_PATH) + ) + except ValidationError as exp: + raise pete_errors.InvalidRequestFieldError( + 'Invalid DICOM path.' + ) from exp + try: + instances.append( + embedding_request.DicomImageV2( + series_path=_validate_not_empty_str( + dicom_path.get(_EndpointJsonKeys.SERIES_PATH) + ), + bearer_token=validate_str( + instance.get( + _EndpointJsonKeys.BEARER_TOKEN, + '', + ) + ), + extensions=validate_str_key_dict( + instance.get( + _EndpointJsonKeys.EXTENSIONS, + {}, + ) + ), + instance_uids=_validate_instance_uids_not_empty_str_list( + dicom_path.get(_EndpointJsonKeys.INSTANCE_UIDS) + ), + patch_coordinates=patch_coordinates, + ) + ) + except _InstanceUIDMetadataError as exp: + error_msg = _generate_instance_metadata_error_string( + instance, + _EndpointJsonKeys.SERIES_PATH, + _EndpointJsonKeys.BEARER_TOKEN, + _EndpointJsonKeys.EXTENSIONS, + _EndpointJsonKeys.INSTANCE_UIDS, + ) + raise pete_errors.InvalidRequestFieldError( + f'Invalid DICOM SOP Instance UID metadata; {error_msg}' + ) from exp + except ValidationError as exp: + error_msg = _generate_instance_metadata_error_string( + instance, + _EndpointJsonKeys.SERIES_PATH, + _EndpointJsonKeys.BEARER_TOKEN, + _EndpointJsonKeys.EXTENSIONS, + _EndpointJsonKeys.INSTANCE_UIDS, + ) + raise pete_errors.InvalidRequestFieldError( + f'DICOM instance JSON formatting is invalid; {error_msg}' + ) from exp + elif _EndpointJsonKeys.IMAGE_FILE_URI in instance: + try: + instances.append( + embedding_request.GcsImageV2( + image_file_uri=_validate_not_empty_str( + instance.get(_EndpointJsonKeys.IMAGE_FILE_URI) + ), + bearer_token=validate_str( + instance.get( + _EndpointJsonKeys.BEARER_TOKEN, + '', + ) + ), + extensions=validate_str_key_dict( + instance.get( + _EndpointJsonKeys.EXTENSIONS, + {}, + ) + ), + patch_coordinates=patch_coordinates, + ) + ) + except ValidationError as exp: + error_msg = _generate_instance_metadata_error_string( + instance, + _EndpointJsonKeys.IMAGE_FILE_URI, + _EndpointJsonKeys.BEARER_TOKEN, + _EndpointJsonKeys.EXTENSIONS, + ) + raise pete_errors.InvalidRequestFieldError( + 'Google Cloud Storage instance JSON formatting is invalid;' + f' {error_msg}' + ) from exp + elif _EndpointJsonKeys.RAW_IMAGE_BYTES in instance: + try: + instances.append( + embedding_request.EmbeddedImageV2( + image_bytes=_validate_not_empty_str( + instance.get(_EndpointJsonKeys.RAW_IMAGE_BYTES) + ), + extensions=validate_str_key_dict( + instance.get( + _EndpointJsonKeys.EXTENSIONS, + {}, + ) + ), + patch_coordinates=patch_coordinates, + ) + ) + except ValidationError as exp: + error_msg = _generate_instance_metadata_error_string( + instance, + _EndpointJsonKeys.IMAGE_FILE_URI, + _EndpointJsonKeys.BEARER_TOKEN, + _EndpointJsonKeys.EXTENSIONS, + ) + raise pete_errors.InvalidRequestFieldError( + 'Embedded image instance JSON formatting is invalid; ' + f' {error_msg}' + ) from exp + else: + raise pete_errors.InvalidRequestFieldError('unidentified type') + return embedding_request.EmbeddingRequestV2(instances) diff --git a/data_models/embedding_request.py b/data_models/embedding_request.py new file mode 100644 index 0000000000000000000000000000000000000000..1a1c230ef08bfb5ea9efeb3c4db1ad34382495cb --- /dev/null +++ b/data_models/embedding_request.py @@ -0,0 +1,103 @@ +# Copyright 2024 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. + +"""Request dataclasses for Pete.""" + +import dataclasses +import enum +from typing import Any, List, Mapping, Union +from data_models import patch_coordinate + + +class ModelSize(enum.Enum): + UNDEFINED = 0 + SMALL = 1 # ~1M parameters + MEDIUM = 2 # ~20M parameters. + LARGE = 3 # ~100M parameters. + + +class ModelKind(enum.Enum): + UNDEFINED = 0 + # Best suited for high magnification images. + # Pixel spacings of .002mm, .001mm, .0005mm or 5x, 10x, 20x. + LOW_PIXEL_SPACING = 1 + # Best suited for low magnification images. + # Pixel spacings of .004mm, .008mm, .016mm, 5x_div_2, 5x_div4, 5x_div8. + HIGH_PIXEL_SPACING = 2 + + +@dataclasses.dataclass(frozen=True) +class EmbeddingInstanceV1: + """An instance in a DICOM Embedding Request as described in the schema file.""" + + dicom_web_store_url: str + dicom_study_uid: str + dicom_series_uid: str + bearer_token: str + ez_wsi_state: Union[str, Mapping[str, Any]] + instance_uids: List[str] + patch_coordinates: List[patch_coordinate.PatchCoordinate] + + +@dataclasses.dataclass(frozen=True) +class DicomImageV2: + """An instance in a DICOM Embedding Request as described in the schema file.""" + series_path: str + bearer_token: str + extensions: Mapping[str, Any] + instance_uids: List[str] + patch_coordinates: List[patch_coordinate.PatchCoordinate] + + +@dataclasses.dataclass(frozen=True) +class GcsImageV2: + """An instance in a DICOM Embedding Request as described in the schema file.""" + + image_file_uri: str + bearer_token: str + extensions: Mapping[str, Any] + patch_coordinates: List[patch_coordinate.PatchCoordinate] + + +@dataclasses.dataclass(frozen=True) +class EmbeddedImageV2: + """An instance in a DICOM Embedding Request as described in the schema file.""" + image_bytes: str + extensions: Mapping[str, Any] + patch_coordinates: List[patch_coordinate.PatchCoordinate] + + +EmbeddingInstanceV2 = Union[DicomImageV2, GcsImageV2, EmbeddedImageV2] + + +@dataclasses.dataclass(frozen=True) +class EmbeddingParameters: + """A prediction in a DICOM Embedding Request as described in the schema file.""" + + model_size: str + model_kind: str + + +@dataclasses.dataclass(frozen=True) +class EmbeddingRequestV1: + """A DICOM Embedding Request is a single parameter and list of instances.""" + parameters: EmbeddingParameters + instances: List[EmbeddingInstanceV1] + + +@dataclasses.dataclass(frozen=True) +class EmbeddingRequestV2: + """A DICOM Embedding Request is a list of instances.""" + + instances: List[EmbeddingInstanceV2] diff --git a/data_models/embedding_response.py b/data_models/embedding_response.py new file mode 100644 index 0000000000000000000000000000000000000000..04d0baa95991e15ad26cdbe5226db679401b5dba --- /dev/null +++ b/data_models/embedding_response.py @@ -0,0 +1,143 @@ +# Copyright 2024 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. + +"""Response dataclasses for Pete.""" + +import dataclasses +import enum +from typing import Any, List, Mapping, Optional, Sequence + +from ez_wsi_dicomweb import patch_embedding_endpoints + +import pete_errors +from data_models import patch_coordinate + +_MAX_ERROR_DESCRIPTION_LENGTH = 1024 + + +class ErrorCode(enum.Enum): + """The error codes for PeteErrorResponse mapped from PeteErrors.""" + + TOO_MANY_PATCHES_ERROR = 'TOO_MANY_PATCHES_ERROR' + INVALID_CREDENTIALS_ERROR = ( + patch_embedding_endpoints.EndpointJsonKeys.INVALID_CREDENTIALS + ) + PATCH_DIMENSIONS_DO_NOT_MATCH_ENDPOINT_INPUT_DIMENSIONS_ERROR = ( + 'PATCH_DIMENSIONS_DO_NOT_MATCH_ENDPOINT_INPUT_DIMENSIONS_ERROR' + ) + INSTANCES_NOT_CONCATENATED_ERROR = 'INSTANCES_NOT_CONCATENATED_ERROR' + INVALID_REQUEST_FIELD_ERROR = 'INVALID_REQUEST_FIELD_ERROR' + INVALID_RESPONSE_ERROR = 'INVALID_RESPONSE_ERROR' + LEVEL_NOT_FOUND_ERROR = 'LEVEL_NOT_FOUND_ERROR' + EZ_WSI_STATE_ERROR = 'EZ_WSI_STATE_ERROR' + IMAGE_ERROR = 'IMAGE_ERROR' + HTTP_ERROR = 'HTTP_ERROR' + INVALID_ICC_PROFILE_TRANSFORM_ERROR = 'INVALID_ICC_PROFILE_TRANSFORM_ERROR' + IMAGE_DIMENSION_ERROR = 'IMAGE_DIMENSION_ERROR' + DICOM_TILED_FULL_ERROR = 'DICOM_TILED_FULL_ERROR' + DICOM_ERROR = 'DICOM_ERROR' + DICOM_IMAGE_DOWNSAMPLING_TOO_LARGE_ERROR = ( + 'DICOM_IMAGE_DOWNSAMPLING_TOO_LARGE_ERROR' + ) + PATCH_OUTSIDE_OF_IMAGE_DIMENSIONS_ERROR = ( + 'PATCH_OUTSIDE_OF_IMAGE_DIMENSIONS_ERROR' + ) + DICOM_PATH_ERROR = 'DICOM_PATH_ERROR' + GCS_IMAGE_PATH_FORMAT_ERROR = 'GCS_IMAGE_PATH_FORMAT_ERROR' + UNAPPROVED_DICOM_STORE_ERROR = 'UNAPPROVED_DICOM_STORE_ERROR' + UNAPPROVED_GCS_BUCKET_ERROR = 'UNAPPROVED_GCS_BUCKET_ERROR' + + +@dataclasses.dataclass(frozen=True) +class PeteErrorResponse: + """The response when Pete is unable to successfully complete a request.""" + + error_code: ErrorCode + + +@dataclasses.dataclass(frozen=True) +class PatchEmbeddingV1: + """A List of embeddings, instance uids, and patch coordinate.""" + + embeddings: List[float] + patch_coordinate: patch_coordinate.PatchCoordinate + + +@dataclasses.dataclass(frozen=True) +class PatchEmbeddingV2: + """A List of embeddings, instance uids, and patch coordinate.""" + + embedding_vector: List[float] + patch_coordinate: patch_coordinate.PatchCoordinate + + +@dataclasses.dataclass(frozen=True) +class EmbeddingResultV1: + """The response when Pete is able to successfully complete a request.""" + + dicom_study_uid: str + dicom_series_uid: str + instance_uids: List[str] + patch_embeddings: List[PatchEmbeddingV1] + + +@dataclasses.dataclass(frozen=True) +class EmbeddingResponseV1: + """An instance in a Embedding Response as described in the schema file.""" + + model_version: str + error_response: Optional[PeteErrorResponse] + embedding_result: List[EmbeddingResultV1] + + def __post_init__(self): + if self.error_response is None and self.embedding_result is None: + raise pete_errors.InvalidResponseError( + 'At least one of error_response or embedding_result must be set.' + ) + + +def embedding_instance_response_v2( + results: Sequence[PatchEmbeddingV2], +) -> Mapping[str, Any]: + """Returns a JSON-serializable embedding instance responses.""" + return { + patch_embedding_endpoints.EndpointJsonKeys.RESULT: { + patch_embedding_endpoints.EndpointJsonKeys.PATCH_EMBEDDINGS: [ + dataclasses.asdict(patch_embedding) for patch_embedding in results + ] + }, + } + + +def instance_error_response_v2( + error_code: ErrorCode, description: str = '' +) -> Mapping[str, Any]: + error = { + patch_embedding_endpoints.EndpointJsonKeys.ERROR_CODE: error_code.value + } + if description: + error[patch_embedding_endpoints.EndpointJsonKeys.ERROR_CODE_DESCRIPTION] = ( + description[:_MAX_ERROR_DESCRIPTION_LENGTH] + ) + return { + patch_embedding_endpoints.EndpointJsonKeys.ERROR: error, + } + + +def prediction_error_response_v2(error_code: ErrorCode) -> Mapping[str, Any]: + return { + patch_embedding_endpoints.EndpointJsonKeys.VERTEXAI_ERROR: ( + error_code.value + ) + } diff --git a/data_models/patch_coordinate.py b/data_models/patch_coordinate.py new file mode 100644 index 0000000000000000000000000000000000000000..a2288b1fe7ef50560d67000219876173d63f7454 --- /dev/null +++ b/data_models/patch_coordinate.py @@ -0,0 +1,54 @@ +# Copyright 2024 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. + +"""Shared dataclasses across requests and responses for Pete.""" + +import dataclasses + +import pete_errors + + +@dataclasses.dataclass(frozen=True) +class PatchCoordinate: + """A coordinate of a patch.""" + + x_origin: int + y_origin: int + height: int + width: int + + def __post_init__(self): + if (self.width != 224 or self.height != 224): + raise pete_errors.PatchDimensionsDoNotMatchEndpointInputDimensionsError( + 'Patch coordinate width and height must be', f' 224x224.' + ) + + +def create_patch_coordinate( + x_origin: int, + y_origin: int, + width: int = -1, + height: int = -1, +) -> PatchCoordinate: + """Creates a patch coordinate.""" + if width == -1: + width = 224 + if height == -1: + height = 224 + return PatchCoordinate( + x_origin=x_origin, + y_origin=y_origin, + width=width, + height=height, + ) diff --git a/npy2bin.py b/npy2bin.py new file mode 100644 index 0000000000000000000000000000000000000000..fb3e25d5de224e2584081f4e49b4cfa2f1124262 --- /dev/null +++ b/npy2bin.py @@ -0,0 +1,30 @@ +import numpy as np +import argparse + +def npy_to_bin(npy_filepath, bin_filepath): + """Loads an .npy file, and saves it as a binary file (.bin). + + Args: + npy_filepath: Path to the .npy file. + bin_filepath: Path to save the .bin file. + """ + try: + data = np.load(npy_filepath) + except FileNotFoundError: + print(f"Error: File not found at {npy_filepath}") + return + except Exception as e: + print(f"Error loading npy file: {e}") + return + + with open(bin_filepath, "wb") as f: + f.write(data.tobytes()) + print(f"Successfully converted '{npy_filepath}' to '{bin_filepath}'") + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Convert .npy file to .bin file.") + parser.add_argument("npy_file", help="Path to the input .npy file.") + parser.add_argument("bin_file", help="Path to the output .bin file.") + args = parser.parse_args() + + npy_to_bin(args.npy_file, args.bin_file) diff --git a/pete_errors.py b/pete_errors.py new file mode 100644 index 0000000000000000000000000000000000000000..e76113d6dec5d377be0c68de9a4f0ea8daad7c24 --- /dev/null +++ b/pete_errors.py @@ -0,0 +1,119 @@ +# Copyright 2024 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. + +"""Error classes for Pete.""" + + +class InternalBugError(Exception): + """Internal error capture exceptions which should never happen. + + The exception is purposefully not a child of PeteError to prevent it from + being caught by pete exception handling logic. If InternalBugError are + raised they should be investigated as bugs. Most internal errors check for + expected conditions between the EZ-WSI pete interface. + """ + + +class PeteError(Exception): + """Base error class for Pete Errors.""" + + def __init__(self, message: str = '', api_description: str = ''): + """Errors with optional alternative descriptions for API echoing.""" + super().__init__(message if message else api_description) + self._api_description = api_description + + @property + def api_description(self) -> str: + """Returns the API description of the error.""" + return self._api_description if self._api_description else str(self) + + +class InstancesNotConcatenatedError(PeteError): + pass + + +class InvalidRequestFieldError(PeteError): + pass + + +class InvalidResponseError(PeteError): + pass + + +class InvalidCredentialsError(PeteError): + pass + + +class LevelNotFoundError(PeteError): + pass + + +class TooManyPatchesError(PeteError): + pass + + +class EzWsiStateError(PeteError): + pass + + +class GcsImagePathFormatError(PeteError): + pass + + +class ImageError(PeteError): + pass + + +class PatchOutsideOfImageDimensionsError(PeteError): + pass + + +class HttpError(PeteError): + pass + + +class InvalidIccProfileTransformError(PeteError): + pass + + +class ImageDimensionError(PeteError): + pass + + +class DicomTiledFullError(PeteError): + pass + + +class DicomPathError(PeteError): + pass + + +class DicomError(PeteError): + pass + + +class DicomImageDownsamplingTooLargeError(PeteError): + pass + + +class UnapprovedDicomStoreError(PeteError): + pass + + +class UnapprovedGcsBucketError(PeteError): + pass + + +class PatchDimensionsDoNotMatchEndpointInputDimensionsError(PeteError): + pass diff --git a/pete_predictor_v2.py b/pete_predictor_v2.py new file mode 100644 index 0000000000000000000000000000000000000000..488e673ab085fdf3fcaf25e92f69e64ff09b4183 --- /dev/null +++ b/pete_predictor_v2.py @@ -0,0 +1,106 @@ +# Copyright 2024 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. + +"""Callable responsible for running Inference on provided patches.""" + +import functools +from typing import Any, Mapping + +from huggingface_hub import from_pretrained_keras +from ez_wsi_dicomweb import credential_factory +from ez_wsi_dicomweb import dicom_slide +from ez_wsi_dicomweb import patch_embedding +from ez_wsi_dicomweb import dicom_web_interface +from ez_wsi_dicomweb import patch_embedding_endpoints +from ez_wsi_dicomweb.ml_toolkit import dicom_path +import numpy as np +import tensorflow as tf + +from data_models import embedding_response +from data_models import embedding_request +from data_models import embedding_converter +#from huggingface_hub import hf_hub_download +from huggingface_hub import snapshot_download + + + +def _load_huggingface_model() -> tf.keras.Model: + snapshot_download("google/path-foundation", local_dir="./model") + return tf.keras.layers.TFSMLayer('./model', call_endpoint='serving_default') + #return from_pretrained_keras("./model", compile=False) + + +def _endpoint_model(ml_model: tf.keras.Model, image: np.ndarray) -> np.ndarray: + """Function ez-wsi will use to run local ML model.""" + result = ml_model.signatures['serving_default']( + tf.cast(tf.constant(image), tf.float32) + ) + return result['output_0'].numpy() + + +# _ENDPOINT_MODEL = functools.partial(_endpoint_model, _load_huggingface_model()) + + +class PetePredictor: + """Callable responsible for generating embeddings.""" + + def predict( + self, + prediction_input: Mapping[str, Any], + ) -> Mapping[str, Any]: + """Runs inference on provided patches. + + Args: + prediction_input: JSON formatted input for embedding prediction. + model: ModelRunner to handle model step. + + Returns: + JSON formatted output. + + Raises: + ERROR_LOADING_DICOM: If the provided patches are not concated. + """ + embedding_json_converter = embedding_converter.EmbeddingConverterV2() + request = embedding_json_converter.json_to_embedding_request(prediction_input) + endpoint = patch_embedding_endpoints.LocalEndpoint(_ENDPOINT_MODEL) + + embedding_results = [] + for instance in request.instances: + patches = [] + if not isinstance(instance, embedding_request.DicomImageV2): + raise ValueError('unsupported') + token = instance.bearer_token + if token: + cf = credential_factory.TokenPassthroughCredentialFactory(token) + else: + cf = credential_factory.NoAuthCredentialsFactory() + dwi = dicom_web_interface.DicomWebInterface(cf) + path = dicom_path.FromString(instance.series_path) + ds = dicom_slide.DicomSlide(dwi=dwi, path=path) + level = ds.get_instance_level(instance.instance_uids[0]) + for coor in instance.patch_coordinates: + patches.append(ds.get_patch(level, coor.x_origin, coor.y_origin, coor.width, coor.height)) + + patch_embeddings = [] + for index, result in enumerate(patch_embedding.generate_patch_embeddings(endpoint, patches)): + embedding = np.array(result.embedding) + patch_embeddings.append( + embedding_response.PatchEmbeddingV2( + embedding_vector=embedding.tolist(), + patch_coordinate=instance.patch_coordinates[index], + )) + embedding_results.append( + embedding_response.embedding_instance_response_v2(patch_embeddings) + ) + return embedding_converter.embedding_response_v2_to_json(embedding_results) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..53affbb31cf5bd3f07013a51d421b3cbba7749c3 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,13 @@ +absl-py~=2.1.0 +#ez-wsi-dicomweb~=6.0.9 +flask~=3.1.0 +gunicorn~=23.0.0 +numpy~=1.26.4 +tensorflow~=2.18.0 +typing-extensions~=4.12.2 +huggingface-hub==0.27.1 +google-auth~=2.11.0 +requests~=2.28.1 +flask-cors~=3.0.10 +flask-caching~=2.3.0 +diskcache \ No newline at end of file diff --git a/run_local.sh b/run_local.sh new file mode 100755 index 0000000000000000000000000000000000000000..fda29698bad52d7c1fb2469666481e073d7f94c5 --- /dev/null +++ b/run_local.sh @@ -0,0 +1,3 @@ +docker build -t path-foundation-demo . && +docker stop $(docker ps -a -q) && +docker run -p 8080:8080 -it --env-file env.list path-foundation-demo diff --git a/server_gunicorn.py b/server_gunicorn.py new file mode 100644 index 0000000000000000000000000000000000000000..8243ef37d3db1f86bf45904c10a8335c3faa2593 --- /dev/null +++ b/server_gunicorn.py @@ -0,0 +1,350 @@ +# Copyright 2024 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. + +"""Gunicorn application for passing requests through to the executor command. + +Provides a thin, subject-agnostic request server for Vertex endpoints which +handles requests by piping their JSON bodies to the given executor command +and returning the json output. +""" + +from collections.abc import Mapping +import http +import os +import sys +from typing import Any, Optional, Sequence +import json +from flask_cors import CORS +import diskcache +import gzip +from io import BytesIO +import shutil +import tempfile + + +import requests + +from absl import app +from absl import logging +import auth +import flask +from flask import render_template, send_from_directory, Response, send_file, request, current_app, abort +from gunicorn.app import base as gunicorn_base +from flask_caching import Cache + +# import pete_predictor_v2 + +# Define a persistent cache directory +CACHE_DIR = "/home/user/app/path-cache" + +# Configure the cache to use the persistent directory +cache_disk = diskcache.Cache(CACHE_DIR, size_limit=45e9) # Limit cache to 45GB + +print(f"Cache stats: {cache_disk.stats()}") + + +DICOM_SERVER_URL = os.environ.get("DICOM_SERVER_URL") +PREDICT_SERVER_URL = os.environ.get("PREDICT_ENDPOINT_URL") + + +def validate_allowed_predict_request(data): + for item in data['instances']: + if 'dicom_path' not in item: + raise ValueError("Missing 'dicom_path' key in request data.") + if 'patch_coordinates' not in item: + raise ValueError("Missing 'patch_coordinates' key in request data.") + if 'raw_image_bytes' in item: + raise ValueError("'raw_image_bytes' key found in request data, but it is not expected") + if 'image_file_uri' in item: + raise ValueError("'image_file_uri' key found in request data, but it is not expected") + + +def test_series_path_prefix(data, server_url): + for item in data['instances']: + series_path = item['dicom_path']['series_path'] + if not series_path.startswith(server_url): + logging.error(f"series_path '{series_path}' does not start with '{server_url}'") + return False + return True + + +def replace_series_path_prefix(data, prefix, server_url): + for item in data['instances']: + item['dicom_path']['series_path'] = item['dicom_path']['series_path'].replace(prefix, server_url) + return data + + +def provide_dicom_server_token(data, token): + for item in data['instances']: + item['bearer_token'] = token + return data + + +def compress_response(json_data): + """Compresses JSON data using gzip.""" + compressed_data = BytesIO() + with gzip.GzipFile(fileobj=compressed_data, mode='w') as gz: + gz.write(json_data.encode('utf-8')) + return compressed_data.getvalue() + + +def create_gzipped_response(data, status=http.HTTPStatus.OK.value, content_type='application/json'): + """Creates a gzipped Flask response.""" + json_data = json.dumps(data) + compressed_data = compress_response(json_data) + response = Response(compressed_data, status=status, content_type=content_type) + response.headers['Content-Encoding'] = 'gzip' + return response + + +def get_cached_and_uncached_patches(instance, dicom_path): + """Separates cached and uncached patches.""" + cached_patch_embeddings = [] + uncached_patches = [] + uncached_patch_indices = [] + for i, patch in enumerate(instance['patch_coordinates']): + cache_key = json.dumps({"dicom_path": dicom_path, "patch": patch}, sort_keys=True) + cached_result = cache_disk.get(cache_key) + if cached_result is not None: + cached_patch_embeddings.append({"patch_coordinate": patch, "embedding_vector": cached_result}) + else: + uncached_patches.append(patch) + uncached_patch_indices.append(i) + return cached_patch_embeddings, uncached_patches, uncached_patch_indices + + +def process_new_results(response_json, dicom_path): + """Processes new results from the prediction server.""" + new_patch_embeddings = [] + if "predictions" in response_json: + for prediction in response_json["predictions"]: + if "result" in prediction and "patch_embeddings" in prediction["result"]: + for patch_embedding in prediction["result"]["patch_embeddings"]: + patch = patch_embedding["patch_coordinate"] + embedding_vector = patch_embedding["embedding_vector"] + cache_key = json.dumps({"dicom_path": dicom_path, "patch": patch}, sort_keys=True) + cache_disk.set(cache_key, embedding_vector) + new_patch_embeddings.append({"patch_coordinate": patch, "embedding_vector": embedding_vector}) + else: + logging.error("Unexpected response format: missing 'result' or 'patch_embeddings'") + return None + else: + logging.error("Unexpected response format: missing 'predictions'") + return None + return new_patch_embeddings + + +def combine_results(instance, cached_patch_embeddings, new_patch_embeddings, uncached_patch_indices): + """Combines cached and new results.""" + final_patch_embeddings = [None] * len(instance['patch_coordinates']) + cached_index = 0 + new_index = 0 + for i in range(len(instance['patch_coordinates'])): + if i in uncached_patch_indices: + final_patch_embeddings[i] = new_patch_embeddings[new_index] + new_index += 1 + else: + final_patch_embeddings[i] = cached_patch_embeddings[cached_index] + cached_index += 1 + return final_patch_embeddings + + +def _create_app() -> flask.Flask: + """Creates a Flask app with the given executor.""" + # Create credentials and get access token on startup + try: + global credentials + credentials = auth.create_credentials() + auth.refresh_credentials(credentials) + + except ValueError as e: + logging.exception(f"Failed to create credentials: {e}") + # Handle credential creation failure appropriately, e.g., exit the application. + sys.exit(1) + # predictor = pete_predictor_v2.PetePredictor() + flask_app = flask.Flask(__name__, static_folder='web', static_url_path='') + CORS(flask_app, origins='http://localhost:5432') + flask_app.config.from_mapping({"CACHE_TYPE": "simple"}) + cache = Cache(flask_app) + + @flask_app.route("/", methods=["GET"]) + def display_html(): + index_path = 'web/index.html' + try: + with open(index_path, 'r') as f: + content = f.read() + return Response(content, mimetype='text/html') + except FileNotFoundError: + abort(404, f"Error: index.html not found at {index_path}") + + @flask_app.route("/dicom/", methods=["GET"]) + @cache.cached(timeout=0) + def dicom(url_path): + access_token = auth.get_access_token_refresh_if_needed(credentials) + + if not DICOM_SERVER_URL: + abort(http.HTTPStatus.INTERNAL_SERVER_ERROR.value, "DICOM server URL not configured.") + + full_url = f"{DICOM_SERVER_URL}/{url_path}" + headers = dict() # flask.request.headers + headers['Authorization'] = f"Bearer {access_token}" + + try: + response = requests.get(full_url, params=flask.request.args, data=flask.request.get_data(), headers=headers) + response.raise_for_status() + return Response(response.content, status=response.status_code, content_type=response.headers['Content-Type']) + except requests.RequestException as e: + logging.exception("Error proxying request to DICOM server. %s", e) + headers['Authorization'] = "hidden" + censored_content = response.content.replace("Bearer " + access_token, "hidden") + logging.error("Interal request headers: %s", json.dumps(headers, indent=2)) + logging.error("Internal request data: %s", censored_content) + abort(http.HTTPStatus.BAD_GATEWAY.value, f"Error proxying request to DICOM server: {e}") + + @flask_app.route("/predict", methods=["POST"]) + def predict(): + access_token = auth.get_access_token_refresh_if_needed(credentials) + + if not PREDICT_SERVER_URL: + abort(http.HTTPStatus.INTERNAL_SERVER_ERROR.value, "PREDICT server URL not configured.") + + headers = { + 'Authorization': f"Bearer {access_token}", + 'Content-Type': 'application/json', + } + + try: + body = json.loads(flask.request.get_data()) + validate_allowed_predict_request(body) + except ValueError as e: + abort(http.HTTPStatus.BAD_REQUEST.value, f"disallowed {str(e)}") + + try: + body = replace_series_path_prefix(body, "http://localhost:8080/dicom/", "/dicom/") + if not test_series_path_prefix(body, '/dicom/'): + abort(http.HTTPStatus.BAD_REQUEST.value, "series_path does not start with dicom server url.") + + body = replace_series_path_prefix(body, "/dicom/", f"{DICOM_SERVER_URL}/") + + instance = body['instances'][0] # assume single instance + dicom_path = instance['dicom_path'] + + cached_patch_embeddings, uncached_patches, uncached_patch_indices = get_cached_and_uncached_patches(instance, dicom_path) + + # If all patches are cached, return the cached results + if not uncached_patches: + return create_gzipped_response({"predictions": [{"result": {"patch_embeddings": cached_patch_embeddings}} ]}) + + # Prepare the request for uncached patches + request_body = {"instances": [{"dicom_path": dicom_path, "patch_coordinates": uncached_patches}]} + request_body = provide_dicom_server_token(request_body, access_token) + + response = requests.post(PREDICT_SERVER_URL, json=request_body, headers=headers) + response.raise_for_status() + + response_json = response.json() + + new_patch_embeddings = process_new_results(response_json, dicom_path) + if new_patch_embeddings is None: + abort(http.HTTPStatus.INTERNAL_SERVER_ERROR, "Unexpected response format from predict server") + + final_patch_embeddings = combine_results(instance, cached_patch_embeddings, new_patch_embeddings, uncached_patch_indices) + + return create_gzipped_response({"predictions": [{"result": {"patch_embeddings": final_patch_embeddings}} ]}, status=response.status_code) + + except requests.RequestException as e: + headers['Authorization'] = "hidden" + censored_content = request_body.content.replace("Bearer " + access_token, "hidden") + logging.exception("Error proxying request to predict server: %s", e) + print("Internal request headers:", json.dumps(headers, indent=2)) + print("Internal request body:", json.dumps(censored_content, indent=2)) + abort(http.HTTPStatus.BAD_GATEWAY.value, "Error proxying request to predict server.") + except json.JSONDecodeError as e: + headers['Authorization'] = "hidden" + censored_content = request_body.content.replace("Bearer " + access_token, "hidden") + logging.exception("Error decoding JSON response from predict server: %s", e) + print("Internal request headers:", json.dumps(headers, indent=2)) + print("Internal request body:", json.dumps(censored_content, indent=2)) + abort(http.HTTPStatus.BAD_GATEWAY.value, "Error decoding JSON response from predict server.") + + @flask_app.route("/download_cache", methods=["GET"]) + def download_cache(): + """ + Downloads the entire cache directory as a zip file. + """ + print("Downloading cache") + print(f"Cache stats: {cache_disk.stats()}") + zip_filename = "path-cache.zip" + # Use tempfile to create a temporary directory + with tempfile.TemporaryDirectory() as temp_dir: + zip_filepath = os.path.join(temp_dir, zip_filename) + + try: + shutil.make_archive( + os.path.splitext(zip_filepath)[0], + "zip", + CACHE_DIR, + ) + + # Send the file and delete it afterwards + return send_file( + zip_filepath, + mimetype="application/zip", + as_attachment=True, + download_name=zip_filename, + ) + except Exception as e: + current_app.logger.error(f"Error creating zip archive: {e}") + abort(500, f"Error creating zip archive: {e}") + + return flask_app + + +class PredictionApplication(gunicorn_base.BaseApplication): + """Application to serve predictors on Vertex endpoints using gunicorn.""" + + def __init__( + self, + *, + options: Optional[Mapping[str, Any]] = None, + ): + self.options = options or {} + self.options = dict(self.options) + self.options["preload_app"] = False + self.application = _create_app() + super().__init__() + + def load_config(self): + config = { + key: value + for key, value in self.options.items() + if key in self.cfg.settings and value is not None + } + for key, value in config.items(): + self.cfg.set(key.lower(), value) + + def load(self) -> flask.Flask: + return self.application + + +def main(argv: Sequence[str]) -> None: + options = {'bind': f'0.0.0.0:8080', + 'workers': 6, + 'timeout': 600 + } + PredictionApplication(options=options).run() + + +if __name__ == '__main__': + app.run(main) diff --git a/test.py b/test.py new file mode 100644 index 0000000000000000000000000000000000000000..d2a5a19df0ca96be2dfdd89289870553e86de0c3 --- /dev/null +++ b/test.py @@ -0,0 +1,18 @@ +from ez_wsi_dicomweb import credential_factory +from ez_wsi_dicomweb import dicom_slide +from ez_wsi_dicomweb import dicom_web_interface +from ez_wsi_dicomweb import patch_embedding +from ez_wsi_dicomweb import patch_embedding_endpoints +from ez_wsi_dicomweb.ml_toolkit import dicom_path + + +if __name__ == '__main__': + endpoint = patch_embedding_endpoints.V2PatchEmbeddingEndpoint(credential_factory=credential_factory.NoAuthCredentialsFactory()) + endpoint._end_point_url = 'http://127.0.0.1/predict' + + dwi = dicom_web_interface.DicomWebInterface(credential_factory.NoAuthCredentialsFactory()) + path = dicom_path.FromString("https://proxy.imaging.datacommons.cancer.gov/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb/studies/2.25.247578737460869511622147617375340640521/series/1.3.6.1.4.1.5962.99.1.1334257398.450227235.1637716829942.2.0") + slide = dicom_slide.DicomSlide(dwi, path) + patch = slide.get_patch(slide.native_level, 0,0, 224,224) + embedding = patch_embedding.get_patch_embedding(endpoint, patch) + print(embedding) diff --git a/web/111.817d8c8fd13374f1.js b/web/111.817d8c8fd13374f1.js new file mode 100644 index 0000000000000000000000000000000000000000..ffa2efd4d1e8bc279713c293481f8afcd5fd343c --- /dev/null +++ b/web/111.817d8c8fd13374f1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[111],{8111:(R,p,n)=>{n.r(p),n.d(p,{ConfigComponent:()=>U});var _=n(177),u=n(1626),i=n(9417),g=n(5558),d=n(8141),f=n(9437),h=n(7673),O=n(5964),a=n(4119),E=n(5717),l=n(7161),t=n(4438),M=n(8472),C=n(2168);function b(r,m){1&r&&t.nrm(0,"div",13)}function I(r,m){1&r&&(t.j41(0,"div",14),t.EFF(1,"\u2713"),t.k0s())}function v(r,m){1&r&&(t.j41(0,"div",15),t.EFF(1,"\u2717"),t.k0s())}function P(r,m){if(1&r&&(t.j41(0,"div",16),t.EFF(1),t.k0s()),2&r){const c=t.XpG();t.R7$(),t.JRh(c.errorMessage)}}let U=(()=>{class r{constructor(c,o,s,e){this.formBuilder=c,this.http=o,this.authGuard=s,this.router=e,this.isLoading=!1,this.testResult=null,this.errorMessage=""}ngOnInit(){this.dicomForm=this.formBuilder.group({endpointUrl:[a.c.IMAGE_DICOM_STORE_BASE_URL||"",[i.k0.required,i.k0.pattern(/./)]],annotationsUrl:[a.c.ANNOTATIONS_DICOM_STORE_BASE_URL||""]})}copyEndpointToAnnotations(){const c=this.dicomForm.get("endpointUrl").value;this.dicomForm.get("annotationsUrl").setValue(c.replace(/dicomWeb.*/i,"dicomWeb"))}onSubmit(){if(this.dicomForm.valid){this.isLoading=!0,this.testResult=null,this.errorMessage="";const c=this.dicomForm.value.endpointUrl.replaceAll("%2F","/"),o=(0,l.LG)(c);if(!o.baseUrl)return this.errorMessage="Failed to parse URL.",this.isLoading=!1,void(this.testResult="error");(o.baseUrl.startsWith("/project")||o.baseUrl.startsWith("project"))&&(o.baseUrl="https://healthcare.googleapis.com/v1/"+o.baseUrl,o.baseUrl.endsWith("/dicomWeb")||(o.baseUrl+="/dicomWeb"));const s=(0,l.rH)(o);this.authGuard.getOAuthToken().pipe((0,g.n)(e=>this.http.get(`${s}/instances`,{responseType:"json",params:{limit:1},...e&&{headers:new u.Lr({Authorization:`Bearer ${e}`})}})),(0,d.M)(()=>{this.testResult="success",a.c.IMAGE_DICOM_STORE_BASE_URL=o.baseUrl,a.c.ENABLE_SERVER_INTERPOLATION=!a.c.IMAGE_DICOM_STORE_BASE_URL.includes("healthcare.googleapis.com/v1")}),(0,f.W)(e=>{console.log(e);const T=e?.error?.[0]?.error?.message??e?.message??e?.statusText??e;return this.testResult="error",this.errorMessage=`${T} ${e?.status}`,0===e.status&&!e.message&&(this.errorMessage="CORS or other HTTP error"),(0,h.of)(null)}),(0,O.p)(e=>null!==e),(0,d.M)(()=>{if(a.c.ENABLE_ANNOTATION_WRITING=!1,!this.dicomForm.value.annotationsUrl)return;const e=(0,l.LG)(this.dicomForm.value.annotationsUrl).baseUrl;e&&(a.c.ANNOTATIONS_DICOM_STORE_BASE_URL=e,a.c.ANNOTATIONS_DICOM_STORE_PARENT="",a.c.ENABLE_ANNOTATION_WRITING=!0)}),(0,d.M)(()=>{if((0,E._l)(),o.path.seriesUID){const e={series:(0,l.rH)(o)};this.router.navigate(["/viewer"],{queryParams:e})}else this.router.navigate(["/search"])})).subscribe({complete:()=>this.isLoading=!1})}}static{this.\u0275fac=function(o){return new(o||r)(t.rXU(i.ok),t.rXU(u.Qq),t.rXU(M.u),t.rXU(C.Ix))}}static{this.\u0275cmp=t.VBU({type:r,selectors:[["app-dicom-endpoint-form"]],decls:29,vars:6,consts:[[1,"container"],[1,"form-wrapper"],[3,"ngSubmit","formGroup"],[1,"input-group"],["href","https://docs.google.com/document/d/184kEwQeIOBwWxsG02SESFfrxOsF11kQWX2bM_KZ7fgY/edit?usp=sharing&resourcekey=0-BOAD2fPB3RV0VLMHneZLHA","target","_blank"],["type","text","id","endpointUrl","formControlName","endpointUrl","placeholder","DICOM store pathway or DICOMweb URL"],["class","spinner",4,"ngIf"],["class","checkmark",4,"ngIf"],["class","crossmark",4,"ngIf"],["class","error-message",4,"ngIf"],["type","button",1,"example-url",3,"click"],["type","text","id","annotationsUrl","formControlName","annotationsUrl","placeholder","DICOM store pathway or DICOMweb URL for annotations"],["type","submit",3,"disabled"],[1,"spinner"],[1,"checkmark"],[1,"crossmark"],[1,"error-message"]],template:function(o,s){1&o&&(t.j41(0,"div",0)(1,"div",1)(2,"h2"),t.EFF(3,"Welcome to the Pathology Image Viewer"),t.k0s(),t.j41(4,"form",2),t.bIt("ngSubmit",function(){return s.onSubmit()}),t.j41(5,"div",3)(6,"p"),t.EFF(7,"Enter the pathway for your DICOM store ("),t.j41(8,"a",4),t.EFF(9,"show me how to find this"),t.k0s(),t.EFF(10,"):"),t.k0s(),t.j41(11,"p"),t.EFF(12,"Or provide a full URL your DICOMWeb endpoint (may include path to series UID)"),t.k0s(),t.nrm(13,"input",5),t.DNE(14,b,1,0,"div",6)(15,I,2,0,"div",7)(16,v,2,0,"div",8)(17,P,2,1,"div",9),t.j41(18,"p"),t.EFF(19,"If you wish to create annotations, enter the DICOM store path or DICOMweb endpoint corresponding to the store used to write annotations. This may be the same store as above:"),t.k0s(),t.j41(20,"p"),t.EFF(21,"The logged in user must have read and write permissions to write permissions to this store."),t.k0s(),t.j41(22,"p"),t.EFF(23,"(Note that the user must have read and write permissions for this store.)"),t.k0s(),t.j41(24,"button",10),t.bIt("click",function(){return s.copyEndpointToAnnotations()}),t.EFF(25,"Copy from above"),t.k0s(),t.nrm(26,"input",11),t.k0s(),t.j41(27,"button",12),t.EFF(28,"Open Image"),t.k0s()()()()),2&o&&(t.R7$(4),t.Y8G("formGroup",s.dicomForm),t.R7$(10),t.Y8G("ngIf",s.isLoading),t.R7$(),t.Y8G("ngIf","success"===s.testResult),t.R7$(),t.Y8G("ngIf","error"===s.testResult),t.R7$(),t.Y8G("ngIf",s.errorMessage),t.R7$(10),t.Y8G("disabled",!s.dicomForm.valid))},dependencies:[_.MD,_.bT,i.X1,i.qT,i.me,i.BC,i.cb,i.j4,i.JD],styles:[".container[_ngcontent-%COMP%]{display:grid;place-items:center;min-height:100vh;background-color:#f4f4f4}.form-wrapper[_ngcontent-%COMP%]{background:linear-gradient(135deg,#2980b9,#6dd5fa);padding:40px;border-radius:20px;box-shadow:0 8px 16px #0003;text-align:center;max-width:50%}.form-wrapper[_ngcontent-%COMP%] h2[_ngcontent-%COMP%], .form-wrapper[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#fff}.example-url[_ngcontent-%COMP%]{font-size:.9em;color:#777;margin-bottom:15px;font-style:italic}.input-group[_ngcontent-%COMP%]{margin-bottom:20px}input[type=text][_ngcontent-%COMP%]{width:100%;padding:12px;border:1px solid #ccc;border-radius:5px;box-sizing:border-box;font-size:1em}input[type=text][_ngcontent-%COMP%]:focus{outline:none;border-color:#007bff;box-shadow:0 0 5px #007bff80}button[type=submit][_ngcontent-%COMP%]{background-color:#007bff;color:#fff;padding:12px 20px;border:none;border-radius:5px;cursor:pointer;font-size:1em;transition:background-color .3s ease}button[type=submit][_ngcontent-%COMP%]:hover{background-color:#0056b3}button[type=submit][_ngcontent-%COMP%]:disabled{background-color:#ccc;cursor:not-allowed}.error-message[_ngcontent-%COMP%]{color:#dc3545;font-size:.9em;margin-top:5px;margin-left:8px}.spinner[_ngcontent-%COMP%]{display:inline-block;width:16px;height:16px;border:2px solid #ccc;border-radius:50%;border-top-color:#007bff;animation:_ngcontent-%COMP%_spin 1s ease-in-out infinite;margin-left:8px}.checkmark[_ngcontent-%COMP%], .crossmark[_ngcontent-%COMP%]{margin-left:8px}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}"]})}}return r})()}}]); \ No newline at end of file diff --git a/web/123.8afe2adc6a675877.js b/web/123.8afe2adc6a675877.js new file mode 100644 index 0000000000000000000000000000000000000000..02328b245b69583fd3506db83d559042c4263354 --- /dev/null +++ b/web/123.8afe2adc6a675877.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[123],{123:(P,m,o)=>{o.r(m),o.d(m,{DemoIntroComponent:()=>F});var c=o(7060),f=o(3881),_=o(9417),s=o(9969),u=o(177),b=o(9454),C=o(6493),p=o(4119),e=o(4438),h=o(2168);const k=n=>({"slide-up":n}),v=(n,g,i)=>({"future-content":n,"slide-in":g,"slide-up":i}),d=(n,g)=>({"future-content":n,"slide-in":g});var l=function(n){return n[n.Intro=0]="Intro",n[n.Demos=1]="Demos",n[n.DigitalPathology=2]="DigitalPathology",n[n.OutlierTissueDetector=3]="OutlierTissueDetector",n[n.ClassifierTissueDetector=4]="ClassifierTissueDetector",n[n.SimilarTissueWithLinearProbe=5]="SimilarTissueWithLinearProbe",n[n.SimilarTissueWithLinearProbeResults=6]="SimilarTissueWithLinearProbeResults",n}(l||{});let F=(()=>{class n{constructor(i,r,t){this.embeddingsService=i,this.router=r,this.route=t,this.isMinimized=!1,this.selectedDemo=null,this.demoType=c.Y,this.windowMinValue=.5,this.windowMaxValue=.7,this.options={floor:0,ceil:1,step:.1},this.slides=l,this.currentContent=l.Intro}ngOnInit(){this.route.queryParams.subscribe(i=>{const r=i.content;r&&(this.currentContent=+r)})}selectDemo(i){this.selectedDemo=i,this.embeddingsService.setup(i),this.currentContent=i==c.Y.OutlierTissueDetector?l.OutlierTissueDetector:l.ClassifierTissueDetector}go(){this.router.navigate(["/viewer"],{queryParams:{series:`${p.c.IMAGE_DICOM_STORE_BASE_URL}${p.c.DEFAULT_SERIES_TO_LOAD}`,x:.01158,y:-.0272,z:.75}})}nextContent(i){this.currentContent=i}static{this.\u0275fac=function(r){return new(r||n)(e.rXU(c.w),e.rXU(h.Ix),e.rXU(h.nX))}}static{this.\u0275cmp=e.VBU({type:n,selectors:[["demo-intro"]],decls:132,vars:20,consts:[[1,"backdrop"],[1,"dialog-container","dialog-content"],[1,"dialog-content","dialog-text",3,"ngClass"],[1,"icon-container"],["src","https://developers.google.com/static/health-ai-developer-foundations/images/path-foundation-logo_480.png","alt","Microscope Icon",1,"main-icon"],[1,"dialog-text"],[1,"bullet-points"],[1,"secondary-text"],[2,"text-decoration","underline"],[1,"see-what-this-means","margin-top"],["src","assets/down-arrow.svg",1,"clickable",3,"click"],[1,"dialog-text","dialog-content",3,"ngClass"],[1,"horizontal","spaced-evenly"],[1,"clickable","demo-rectengular",3,"click"],["src","assets/outlier.svg"],[1,"medium"],[1,"vertical-bar"],["src","assets/classifier.svg"],[1,"light-text","margin-top"],[1,"horizontal","light-text","small-text"],["target","_blank","rel","noopener noreferrer","href","https://developers.google.com/health-ai-developer-foundations/path-foundation",1,"link"],["src","assets/external-link.svg"],[1,"link",3,"click"],["target","_blank","rel","noopener noreferrer","href","https://developers.google.com/health-ai-developer-foundations",1,"link"],["src","assets/down-arrow.svg",1,"clickable","flip-vertical",3,"click"],[1,"horizontal","spaced-evenly",2,"margin","auto"],["src","assets/outlier-screenshot.jpg",1,"screenshot-image"],[2,"min-width","50px"],[2,"text-align","left"],[1,"big"],[1,"blue-button",3,"click"],["src","assets/classifier-screenshot.jpg",1,"screenshot-image"],[1,"big",2,"margin-bottom","0"],[1,"horizontal"],[1,"small-text",2,"text-align","left"],["target","_blank","rel","noopener noreferrer","href","https://github.com/GoogleCloudPlatform/medical-imaging/tree/main/pathology/transformation_pipeline"],["target","_blank","rel","noopener noreferrer","href","https://github.com/GoogleCloudPlatform/medical-imaging/tree/main/ilm"],["target","_blank","rel","noopener noreferrer","href","https://github.com/GoogleCloudPlatform/EZ-WSI-DICOMweb"],["target","_blank","rel","noopener noreferrer","href","https://github.com/GoogleCloudPlatform/medical-imaging/tree/main/pathology/viewer"],["target","_blank","rel","noopener noreferrer","href","https://github.com/GoogleCloudPlatform/medical-imaging/tree/main/pathology/dicom_proxy"],["src","assets/dpas.png",2,"margin","auto"]],template:function(r,t){1&r&&(e.nrm(0,"div",0),e.j41(1,"div",1)(2,"div",2)(3,"div",3),e.nrm(4,"img",4),e.k0s(),e.j41(5,"div",5)(6,"span"),e.EFF(7," Path Foundation accelerates AI development for histopathology image analysis. The model uses self-supervised learning on large amounts of digital pathology data to produce embeddings that capture dense features relevant for histopathology applications, such as: "),e.j41(8,"ul",6)(9,"li"),e.EFF(10,"Data-efficient classification"),e.k0s(),e.j41(11,"li"),e.EFF(12,"Similar image search"),e.k0s(),e.j41(13,"li"),e.EFF(14,"Outlier detection"),e.k0s()()(),e.j41(15,"div",7)(16,"span",8),e.EFF(17,"Disclaimer"),e.k0s(),e.j41(18,"span"),e.EFF(19,": This interface is for demonstration purposes only. Path Foundation is able to supply the capabilities but you will need to build the interface. "),e.k0s()()(),e.j41(20,"div",9)(21,"span"),e.EFF(22,"See what this means"),e.k0s(),e.nrm(23,"br"),e.j41(24,"img",10),e.bIt("click",function(){return t.nextContent(t.slides.Demos)}),e.k0s()()(),e.j41(25,"div",11)(26,"p"),e.EFF(27,"Select a demo to see how this model could be used"),e.k0s(),e.j41(28,"div",12)(29,"div",13),e.bIt("click",function(){return t.selectDemo(t.demoType.OutlierTissueDetector)}),e.nrm(30,"img",14),e.j41(31,"div",15),e.EFF(32,"Outlier Tissue Detector"),e.k0s(),e.j41(33,"div",7),e.EFF(34," Outlier tissue is identified by calculating the Euclidean distance in embedding space between tissue embeddings and a precomputed set of background embeddings. "),e.k0s()(),e.nrm(35,"div",16),e.j41(36,"div",13),e.bIt("click",function(){return t.selectDemo(t.demoType.SimilarTissueWithLinearProbe)}),e.nrm(37,"img",17),e.j41(38,"div",15),e.EFF(39,"Path Classification"),e.k0s(),e.j41(40,"div",7),e.EFF(41," Patch classifier is trained using embeddings for target patches of interest and precomputed background embeddings. This classifier is then applied to patches in the field of view. "),e.k0s()()(),e.j41(42,"span",18),e.EFF(43,"Learn more"),e.k0s(),e.j41(44,"div",19)(45,"a",20),e.EFF(46,"Path Foundation Model "),e.nrm(47,"img",21),e.k0s(),e.nrm(48,"div",16),e.j41(49,"div",22),e.bIt("click",function(){return t.nextContent(t.slides.DigitalPathology)}),e.EFF(50," Digital Pathology "),e.k0s(),e.nrm(51,"div",16),e.j41(52,"a",23),e.EFF(53,"Other HAI-DEF Models "),e.nrm(54,"img",21),e.k0s()()(),e.j41(55,"div",11)(56,"img",24),e.bIt("click",function(){return t.nextContent(t.slides.Demos)}),e.k0s(),e.j41(57,"span"),e.EFF(58,"Go back"),e.k0s(),e.j41(59,"div",25),e.nrm(60,"img",26)(61,"div",27),e.j41(62,"div",28)(63,"p",29),e.EFF(64,"Outlier Tissue Detection"),e.k0s(),e.j41(65,"p"),e.EFF(66," In this demo, tissue patches are compared to randomly selected background patches from non-tumor specimens of the same dataset. "),e.k0s(),e.j41(67,"p"),e.EFF(68," Using a Euclidean distance measurement from the nearest background embedding vector, potential outlier tissue patches are highlighted in red. "),e.k0s(),e.j41(69,"div",30),e.bIt("click",function(){return t.go()}),e.EFF(70,"Try it"),e.k0s()()()(),e.j41(71,"div",11)(72,"img",24),e.bIt("click",function(){return t.nextContent(t.slides.Demos)}),e.k0s(),e.j41(73,"span"),e.EFF(74,"Go back"),e.k0s(),e.j41(75,"p",29),e.EFF(76,"Tissue Classification"),e.k0s(),e.j41(77,"div",12),e.nrm(78,"img",31)(79,"div",27),e.j41(80,"div",28)(81,"p"),e.EFF(82," In this demo, you will train a classifier for a specified target tissue. You will be able to annotate the target tissue and then train a classifier to distinguish the annotated tissue from the background. "),e.k0s(),e.j41(83,"p"),e.EFF(84," After training the classifier with a single click in the browser, you can analyze all tissue patches in the field of view. Patches matching your target tissue are highlighted in red, with cyan and blue indicating lower confidence scores for the target tissue. "),e.k0s()()(),e.j41(85,"div",30),e.bIt("click",function(){return t.go()}),e.EFF(86,"Try it"),e.k0s()(),e.j41(87,"div",11)(88,"img",24),e.bIt("click",function(){return t.nextContent(t.slides.Demos)}),e.k0s(),e.j41(89,"span"),e.EFF(90,"Go back"),e.k0s(),e.j41(91,"p",32),e.EFF(92," Open Source Tools for Advancing Digital Pathology "),e.k0s(),e.j41(93,"div",33)(94,"div",34)(95,"span"),e.EFF(96,"This demo was built using open-source tools built by Google."),e.k0s(),e.j41(97,"p")(98,"b"),e.EFF(99,"DICOM ensures interoperability"),e.k0s(),e.EFF(100," Google's Healthcare API DICOM Store manages these images, and Google Research's "),e.j41(101,"a",35),e.EFF(102,"Transformation Pipeline"),e.k0s(),e.EFF(103," ingests various image formats into it. "),e.k0s(),e.j41(104,"p")(105,"b"),e.EFF(106,"Cost efficiency using Image Lifecycle Management"),e.k0s(),e.EFF(107," Google Research's "),e.j41(108,"a",36),e.EFF(109,"ILM tool"),e.k0s(),e.EFF(110," automates storage tiering for cost optimization, and IaC via terraform enables reliable deployments. "),e.k0s(),e.j41(111,"p")(112,"b"),e.EFF(113,"Effortlessly work with DICOMWeb"),e.k0s(),e.j41(114,"a",37),e.EFF(115,"EZ WSI DicomWeb"),e.k0s(),e.EFF(116," is a python library that provides the ability to effortlessly extract an image patch from a pathology DICOM and generate embeddings. "),e.k0s(),e.j41(117,"p")(118,"b"),e.EFF(119,"Zero Footprint DICOMWeb Pathology Viewer"),e.k0s(),e.EFF(120," A "),e.j41(121,"a",38),e.EFF(122,"web-based application"),e.k0s(),e.EFF(123," for visualizing and annotating DICOM pathology images, compatible with any DICOMweb server and accessible on all devices with a browser. Used in this demo. "),e.k0s(),e.j41(124,"p")(125,"b"),e.EFF(126,"Optimizing DICOMweb for Digital Pathology"),e.k0s(),e.EFF(127," The "),e.j41(128,"a",39),e.EFF(129,"Digital Pathology DICOM Proxy Server"),e.k0s(),e.EFF(130," enhances DICOMWeb by adding just-in-time frame caching for faster whole slide imaging, enhanced JPEGXL transcoding for efficient image delivery, and ICC color profile transformations for consistent and optimized image visualization. "),e.k0s()(),e.nrm(131,"img",40),e.k0s()()()),2&r&&(e.R7$(2),e.Y8G("ngClass",e.eq3(5,k,t.currentContent>t.slides.Intro)),e.R7$(23),e.Y8G("ngClass",e.sMw(7,v,t.currentContent<=t.slides.Demos,t.currentContent===t.slides.Demos,t.currentContent>t.slides.Demos)),e.R7$(30),e.Y8G("ngClass",e.l_i(11,d,t.currentContent<=t.slides.OutlierTissueDetector,t.currentContent===t.slides.OutlierTissueDetector)),e.R7$(16),e.Y8G("ngClass",e.l_i(14,d,t.currentContent<=t.slides.ClassifierTissueDetector,t.currentContent===t.slides.ClassifierTissueDetector)),e.R7$(16),e.Y8G("ngClass",e.l_i(17,d,t.currentContent<=t.slides.DigitalPathology,t.currentContent===t.slides.DigitalPathology)))},dependencies:[f.Ez,_.YN,u.MD,u.YU,b.MY,C.Ti],styles:["[_nghost-%COMP%]{position:fixed;display:flex;justify-content:center;align-items:center;width:100vw;height:100vh}.clickable[_ngcontent-%COMP%]{cursor:pointer}.backdrop[_ngcontent-%COMP%]{position:fixed;inset:0;background:#00000080;z-index:900}.dialog-container[_ngcontent-%COMP%]{background-color:#fff;border-radius:12px;box-shadow:0 2px 4px #0000001a;padding:30px 40px;text-align:left;position:relative;border:2px solid #dee2e6;z-index:1000;overflow:hidden;font-size:20px;font-family:Google Sans;font-weight:400;word-wrap:break-word}.dialog-content[_ngcontent-%COMP%]{text-decoration:none;width:800px;height:600px;padding:30px 40px;text-align:left;position:relative;line-height:1.5;color:#000;display:flex;justify-content:space-evenly;flex-direction:column;align-items:center}.margin-top[_ngcontent-%COMP%]{margin-top:auto}.secondary-text[_ngcontent-%COMP%]{font-size:14px}.light-text[_ngcontent-%COMP%]{color:#707070}.future-content[_ngcontent-%COMP%]{position:absolute;top:0;left:0;transform:translateY(800px);opacity:0}.slide-in[_ngcontent-%COMP%], .slide-up[_ngcontent-%COMP%]{transition:transform .5s ease,opacity .5s ease}.slide-up[_ngcontent-%COMP%]{transform:translateY(-600px);opacity:0}.slide-in[_ngcontent-%COMP%]{transform:translateY(0);opacity:1}.slide-down[_ngcontent-%COMP%]{transform:translateY(600px);opacity:0}.icon-container[_ngcontent-%COMP%]{width:120px;height:120px;border-radius:50%;border:2px solid #A7A7A7;background-color:#fff;margin:0 auto 20px;display:flex;justify-content:center;align-items:center;position:relative}.icon-container[_ngcontent-%COMP%] img.main-icon[_ngcontent-%COMP%]{max-width:60%;max-height:60%;z-index:2}.icon-container[_ngcontent-%COMP%] img.sub-icon[_ngcontent-%COMP%]{position:absolute;top:-5px;left:-5px;width:35px;height:35px;z-index:1;border-radius:50%}.dialog-text[_ngcontent-%COMP%]{margin-bottom:20px;line-height:1.5;color:#000}.bullet-points[_ngcontent-%COMP%]{list-style:disc;margin-bottom:1rem}.bullet-points[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{margin-bottom:.5rem;color:#212529}.see-what-this-means[_ngcontent-%COMP%]{color:#707070;text-align:center}.arrow-down[_ngcontent-%COMP%]{font-size:1.8rem;color:#ced4da;cursor:pointer}.big[_ngcontent-%COMP%]{color:#000;font-family:Google Sans;font-size:32px;font-style:normal;font-weight:400;line-height:normal}.medium[_ngcontent-%COMP%]{color:#000;font-family:Google Sans;font-size:24px;font-style:normal;font-weight:400;line-height:normal}.small-text[_ngcontent-%COMP%]{font-size:14px}.future-content[_ngcontent-%COMP%]{text-align:center}.soft-button[_ngcontent-%COMP%]{border-radius:146.875px;border:1.469px solid var(--Grey-300, #DADCE0);margin:auto;width:100px;cursor:pointer}.demo-rectengular[_ngcontent-%COMP%]{width:300px;height:400px;flex-shrink:0;display:flex;justify-content:space-evenly;flex-direction:column;align-items:center;padding:0 10px}.demo-rectengular[_ngcontent-%COMP%]:hover{border-radius:20px;background:#fff;box-shadow:0 0 8px #00000040}.demo-container[_ngcontent-%COMP%]{width:100%;display:flex;justify-content:space-around}.flip-vertical[_ngcontent-%COMP%]{transform:scaleY(-1)}.blue-button[_ngcontent-%COMP%]{border-radius:141.176px;background:#0b57d0}.horizontal[_ngcontent-%COMP%]{display:flex}.spaced-evenly[_ngcontent-%COMP%]{justify-content:space-evenly;width:100%}.link[_ngcontent-%COMP%]{text-decoration-line:underline;text-decoration-style:solid;color:#707070}.vertical-bar[_ngcontent-%COMP%]{height:100%;width:1px;background-color:#aaa;margin:0 5px;cursor:pointer}.screenshot-image[_ngcontent-%COMP%]{border-radius:10px;max-width:300px;width:auto;height:auto;max-height:300px;margin:auto}.blue-button[_ngcontent-%COMP%]{border-radius:100px;background:#0b57d0;color:#fff;margin:auto;width:fit-content;padding:10px 24px;font-size:14px;cursor:pointer}"],data:{animation:[(0,s.hZ)("dialogState",[(0,s.wk)("expanded",(0,s.iF)({opacity:1,transform:"scale(1)"})),(0,s.wk)("minimized",(0,s.iF)({opacity:0,transform:"scale(0)"})),(0,s.kY)("expanded => minimized",[(0,s.i0)("300ms ease-out")]),(0,s.kY)("minimized => expanded",[(0,s.i0)("300ms ease-in")])])]}})}}return n})()}}]); \ No newline at end of file diff --git a/web/175.5babe78c6c961eaf.js b/web/175.5babe78c6c961eaf.js new file mode 100644 index 0000000000000000000000000000000000000000..a4018209dc5ca2f5bbf8442241f8f566a2ad77b4 --- /dev/null +++ b/web/175.5babe78c6c961eaf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[175],{9175:(Qn,qe,l)=>{l.r(qe),l.d(qe,{CohortsPageComponent:()=>Hn});var X=l(4085),C=l(177),w=l(8834),le=l(1997),he=l(9454),v=l(2408),Q=l(9213),E=l(9631),e=l(4438),T=l(9888),S=l(7336),R=l(1413),z=l(7786),we=l(8359),U=l(7673),J=l(9172),ke=l(5558),_=l(6977),Ke=l(6697),B=l(5964),y=l(3),Ze=l(9046),Et=l(6939),De=l(8203),ee=l(6969),te=l(6860),O=l(3980);l(9969);const Ft=["mat-menu-item",""],Ot=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],Pt=["mat-icon, [matMenuItemIcon]","*"];function At(i,r){1&i&&(e.qSk(),e.j41(0,"svg",2),e.nrm(1,"polygon",3),e.k0s())}const Nt=["*"];function Gt(i,r){if(1&i){const t=e.RV6();e.j41(0,"div",0),e.bIt("click",function(){e.eBV(t);const n=e.XpG();return e.Njj(n.closed.emit("click"))})("animationstart",function(n){e.eBV(t);const a=e.XpG();return e.Njj(a._onAnimationStart(n.animationName))})("animationend",function(n){e.eBV(t);const a=e.XpG();return e.Njj(a._onAnimationDone(n.animationName))})("animationcancel",function(n){e.eBV(t);const a=e.XpG();return e.Njj(a._onAnimationDone(n.animationName))}),e.j41(1,"div",1),e.SdG(2),e.k0s()()}if(2&i){const t=e.XpG();e.HbH(t._classList),e.AVh("mat-menu-panel-animations-disabled",t._animationsDisabled)("mat-menu-panel-exit-animation","void"===t._panelAnimationState)("mat-menu-panel-animating",t._isAnimating),e.Y8G("id",t.panelId),e.BMQ("aria-label",t.ariaLabel||null)("aria-labelledby",t.ariaLabelledby||null)("aria-describedby",t.ariaDescribedby||null)}}const Se=new e.nKC("MAT_MENU_PANEL");let me=(()=>{class i{_elementRef=(0,e.WQX)(e.aKT);_document=(0,e.WQX)(C.qQ);_focusMonitor=(0,e.WQX)(T.FN);_parentMenu=(0,e.WQX)(Se,{optional:!0});_changeDetectorRef=(0,e.WQX)(e.gRc);role="menuitem";disabled=!1;disableRipple=!1;_hovered=new R.B;_focused=new R.B;_highlighted=!1;_triggersSubmenu=!1;constructor(){(0,e.WQX)(Ze.l).load(y.Ah),this._parentMenu?.addItem?.(this)}focus(t,o){this._focusMonitor&&t?this._focusMonitor.focusVia(this._getHostElement(),t,o):this._getHostElement().focus(o),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(t){this.disabled&&(t.preventDefault(),t.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){const t=this._elementRef.nativeElement.cloneNode(!0),o=t.querySelectorAll("mat-icon, .material-icons");for(let n=0;n{class i{_elementRef=(0,e.WQX)(e.aKT);_changeDetectorRef=(0,e.WQX)(e.gRc);_injector=(0,e.WQX)(e.zZn);_keyManager;_xPosition;_yPosition;_firstItemFocusRef;_exitFallbackTimeout;_animationsDisabled;_allItems;_directDescendantItems=new e.rOR;_classList={};_panelAnimationState="void";_animationDone=new R.B;_isAnimating=!1;parentMenu;direction;overlayPanelClass;backdropClass;ariaLabel;ariaLabelledby;ariaDescribedby;get xPosition(){return this._xPosition}set xPosition(t){this._xPosition=t,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(t){this._yPosition=t,this.setPositionClasses()}templateRef;items;lazyContent;overlapTrigger;hasBackdrop;set panelClass(t){const o=this._previousPanelClass,n={...this._classList};o&&o.length&&o.split(" ").forEach(a=>{n[a]=!1}),this._previousPanelClass=t,t&&t.length&&(t.split(" ").forEach(a=>{n[a]=!0}),this._elementRef.nativeElement.className=""),this._classList=n}_previousPanelClass;get classList(){return this.panelClass}set classList(t){this.panelClass=t}closed=new e.bkB;close=this.closed;panelId=(0,e.WQX)(T.g7).getId("mat-menu-panel-");constructor(){const t=(0,e.WQX)(jt);this.overlayPanelClass=t.overlayPanelClass||"",this._xPosition=t.xPosition,this._yPosition=t.yPosition,this.backdropClass=t.backdropClass,this.overlapTrigger=t.overlapTrigger,this.hasBackdrop=t.hasBackdrop,this._animationsDisabled="NoopAnimations"===(0,e.WQX)(e.bc$,{optional:!0})}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new T.Bu(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe((0,J.Z)(this._directDescendantItems),(0,ke.n)(t=>(0,z.h)(...t.map(o=>o._focused)))).subscribe(t=>this._keyManager.updateActiveItem(t)),this._directDescendantItems.changes.subscribe(t=>{const o=this._keyManager;if("enter"===this._panelAnimationState&&o.activeItem?._hasFocus()){const n=t.toArray(),a=Math.max(0,Math.min(n.length-1,o.activeItemIndex||0));n[a]&&!n[a].disabled?o.setActiveItem(a):o.setNextItemActive()}})}ngOnDestroy(){this._keyManager?.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),this._firstItemFocusRef?.destroy(),clearTimeout(this._exitFallbackTimeout)}_hovered(){return this._directDescendantItems.changes.pipe((0,J.Z)(this._directDescendantItems),(0,ke.n)(o=>(0,z.h)(...o.map(n=>n._hovered))))}addItem(t){}removeItem(t){}_handleKeydown(t){const o=t.keyCode,n=this._keyManager;switch(o){case S._f:(0,S.rp)(t)||(t.preventDefault(),this.closed.emit("keydown"));break;case S.UQ:this.parentMenu&&"ltr"===this.direction&&this.closed.emit("keydown");break;case S.LE:this.parentMenu&&"rtl"===this.direction&&this.closed.emit("keydown");break;default:return(o===S.i7||o===S.n6)&&n.setFocusOrigin("keyboard"),void n.onKeydown(t)}}focusFirstItem(t="program"){this._firstItemFocusRef?.destroy(),this._firstItemFocusRef=(0,e.mal)(()=>{const o=this._resolvePanel();if(!o||!o.contains(document.activeElement)){const n=this._keyManager;n.setFocusOrigin(t).setFirstItemActive(),!n.activeItem&&o&&o.focus()}},{injector:this._injector})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(t){}setPositionClasses(t=this.xPosition,o=this.yPosition){this._classList={...this._classList,"mat-menu-before":"before"===t,"mat-menu-after":"after"===t,"mat-menu-above":"above"===o,"mat-menu-below":"below"===o},this._changeDetectorRef.markForCheck()}_onAnimationDone(t){const o=t===ue;(o||t===Re)&&(o&&(clearTimeout(this._exitFallbackTimeout),this._exitFallbackTimeout=void 0),this._animationDone.next(o?"void":"enter"),this._isAnimating=!1)}_onAnimationStart(t){(t===Re||t===ue)&&(this._isAnimating=!0)}_setIsOpen(t){if(this._panelAnimationState=t?"enter":"void",t){if(0===this._keyManager.activeItemIndex){const o=this._resolvePanel();o&&(o.scrollTop=0)}}else this._animationsDisabled||(this._exitFallbackTimeout=setTimeout(()=>this._onAnimationDone(ue),200));this._animationsDisabled&&setTimeout(()=>{this._onAnimationDone(t?Re:ue)}),this._changeDetectorRef.markForCheck()}_updateDirectDescendants(){this._allItems.changes.pipe((0,J.Z)(this._allItems)).subscribe(t=>{this._directDescendantItems.reset(t.filter(o=>o._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}_resolvePanel(){let t=null;return this._directDescendantItems.length&&(t=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),t}static \u0275fac=function(o){return new(o||i)};static \u0275cmp=e.VBU({type:i,selectors:[["mat-menu"]],contentQueries:function(o,n,a){if(1&o&&(e.wni(a,Bt,5),e.wni(a,me,5),e.wni(a,me,4)),2&o){let s;e.mGM(s=e.lsd())&&(n.lazyContent=s.first),e.mGM(s=e.lsd())&&(n._allItems=s),e.mGM(s=e.lsd())&&(n.items=s)}},viewQuery:function(o,n){if(1&o&&e.GBs(e.C4Q,5),2&o){let a;e.mGM(a=e.lsd())&&(n.templateRef=a.first)}},hostVars:3,hostBindings:function(o,n){2&o&&e.BMQ("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},inputs:{backdropClass:"backdropClass",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:[2,"overlapTrigger","overlapTrigger",e.L39],hasBackdrop:[2,"hasBackdrop","hasBackdrop",t=>null==t?null:(0,e.L39)(t)],panelClass:[0,"class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"},exportAs:["matMenu"],features:[e.Jv_([{provide:Se,useExisting:i}]),e.GFd],ngContentSelectors:Nt,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel",3,"click","animationstart","animationend","animationcancel","id"],[1,"mat-mdc-menu-content"]],template:function(o,n){1&o&&(e.NAR(),e.DNE(0,Gt,3,12,"ng-template"))},styles:['mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-sys-label-large-weight))}@keyframes _mat-menu-enter{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:none}}@keyframes _mat-menu-exit{from{opacity:1}to{opacity:0}}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;box-sizing:border-box;outline:0;animation:_mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1);border-radius:var(--mat-menu-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-sys-surface-container));box-shadow:var(--mat-menu-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));will-change:transform,opacity}.mat-mdc-menu-panel.mat-menu-panel-exit-animation{animation:_mat-menu-exit 100ms 25ms linear forwards}.mat-mdc-menu-panel.mat-menu-panel-animations-disabled{animation:none}.mat-mdc-menu-panel.mat-menu-panel-animating{pointer-events:none}.mat-mdc-menu-panel.mat-menu-panel-animating:has(.mat-mdc-menu-content:empty){display:none}@media(forced-colors: active){.mat-mdc-menu-panel{outline:solid 1px}}.mat-mdc-menu-panel .mat-divider{color:var(--mat-menu-divider-color, var(--mat-sys-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing, 8px);margin-top:var(--mat-menu-divider-top-spacing, 8px)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px;padding-left:var(--mat-menu-item-leading-spacing, 12px);padding-right:var(--mat-menu-item-trailing-spacing, 12px);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-menu-item::-moz-focus-inner{border:0}[dir=rtl] .mat-mdc-menu-item{padding-left:var(--mat-menu-item-trailing-spacing, 12px);padding-right:var(--mat-menu-item-leading-spacing, 12px)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-trailing-spacing, 12px)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-trailing-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-leading-spacing, 12px)}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing, 12px);height:var(--mat-menu-item-icon-size, 24px);width:var(--mat-menu-item-icon-size, 24px)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing, 12px)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(forced-colors: active){.mat-mdc-menu-item{margin-top:1px}}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size, 24px);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing, 12px)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing, 12px);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1);transform-origin:center}@media(forced-colors: active){.mat-mdc-menu-submenu-icon{fill:CanvasText}}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}'],encapsulation:2,changeDetection:0})}return i})();const Je=new e.nKC("mat-menu-scroll-strategy",{providedIn:"root",factory:()=>{const i=(0,e.WQX)(ee.hJ);return()=>i.scrollStrategies.reposition()}}),$t={provide:Je,deps:[ee.hJ],useFactory:function Vt(i){return()=>i.scrollStrategies.reposition()}},et=(0,te.BQ)({passive:!0}),ie=new WeakMap;let Xt=(()=>{class i{_overlay=(0,e.WQX)(ee.hJ);_element=(0,e.WQX)(e.aKT);_viewContainerRef=(0,e.WQX)(e.c1b);_menuItemInstance=(0,e.WQX)(me,{optional:!0,self:!0});_dir=(0,e.WQX)(De.dS,{optional:!0});_focusMonitor=(0,e.WQX)(T.FN);_ngZone=(0,e.WQX)(e.SKi);_scrollStrategy=(0,e.WQX)(Je);_changeDetectorRef=(0,e.WQX)(e.gRc);_portal;_overlayRef=null;_menuOpen=!1;_closingActionsSubscription=we.yU.EMPTY;_hoverSubscription=we.yU.EMPTY;_menuCloseSubscription=we.yU.EMPTY;_pendingRemoval;_parentMaterialMenu;_parentInnerPadding;_handleTouchStart=t=>{(0,T.w6)(t)||(this._openedBy="touch")};_openedBy=void 0;get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(t){this.menu=t}get menu(){return this._menu}set menu(t){t!==this._menu&&(this._menu=t,this._menuCloseSubscription.unsubscribe(),t&&(this._menuCloseSubscription=t.close.subscribe(o=>{this._destroyMenu(o),("click"===o||"tab"===o)&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(o)})),this._menuItemInstance?._setTriggersSubmenu(this.triggersSubmenu()))}_menu;menuData;restoreFocus=!0;menuOpened=new e.bkB;onMenuOpen=this.menuOpened;menuClosed=new e.bkB;onMenuClose=this.menuClosed;constructor(){const t=(0,e.WQX)(Se,{optional:!0});this._parentMaterialMenu=t instanceof oe?t:void 0,this._element.nativeElement.addEventListener("touchstart",this._handleTouchStart,et)}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){this.menu&&this._ownsMenu(this.menu)&&ie.delete(this.menu),this._element.nativeElement.removeEventListener("touchstart",this._handleTouchStart,et),this._pendingRemoval?.unsubscribe(),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._hoverSubscription.unsubscribe(),this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null)}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this.menu)}toggleMenu(){return this._menuOpen?this.closeMenu():this.openMenu()}openMenu(){const t=this.menu;if(this._menuOpen||!t)return;this._pendingRemoval?.unsubscribe();const o=ie.get(t);ie.set(t,this),o&&o!==this&&o.closeMenu();const n=this._createOverlay(t),a=n.getConfig(),s=a.positionStrategy;this._setPosition(t,s),a.hasBackdrop=null==t.hasBackdrop?!this.triggersSubmenu():t.hasBackdrop,n.hasAttached()||(n.attach(this._getPortal(t)),t.lazyContent?.attach(this.menuData)),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this.closeMenu()),t.parentMenu=this.triggersSubmenu()?this._parentMaterialMenu:void 0,t.direction=this.dir,t.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0),t instanceof oe&&(t._setIsOpen(!0),t._directDescendantItems.changes.pipe((0,_.Q)(t.close)).subscribe(()=>{s.withLockedPosition(!1).reapplyLastPosition(),s.withLockedPosition(!0)}))}closeMenu(){this.menu?.close.emit()}focus(t,o){this._focusMonitor&&t?this._focusMonitor.focusVia(this._element,t,o):this._element.nativeElement.focus(o)}updatePosition(){this._overlayRef?.updatePosition()}_destroyMenu(t){const o=this._overlayRef,n=this._menu;!o||!this.menuOpen||(this._closingActionsSubscription.unsubscribe(),this._pendingRemoval?.unsubscribe(),n instanceof oe&&this._ownsMenu(n)?(this._pendingRemoval=n._animationDone.pipe((0,Ke.s)(1)).subscribe(()=>{o.detach(),n.lazyContent?.detach()}),n._setIsOpen(!1)):(o.detach(),n?.lazyContent?.detach()),n&&this._ownsMenu(n)&&ie.delete(n),this.restoreFocus&&("keydown"===t||!this._openedBy||!this.triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,this._setIsMenuOpen(!1))}_setIsMenuOpen(t){t!==this._menuOpen&&(this._menuOpen=t,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this.triggersSubmenu()&&this._menuItemInstance._setHighlighted(t),this._changeDetectorRef.markForCheck())}_createOverlay(t){if(!this._overlayRef){const o=this._getOverlayConfig(t);this._subscribeToPositions(t,o.positionStrategy),this._overlayRef=this._overlay.create(o),this._overlayRef.keydownEvents().subscribe(n=>{this.menu instanceof oe&&this.menu._handleKeydown(n)})}return this._overlayRef}_getOverlayConfig(t){return new ee.rR({positionStrategy:this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:t.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:t.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir||"ltr"})}_subscribeToPositions(t,o){t.setPositionClasses&&o.positionChanges.subscribe(n=>{this._ngZone.run(()=>{t.setPositionClasses("start"===n.connectionPair.overlayX?"after":"before","top"===n.connectionPair.overlayY?"below":"above")})})}_setPosition(t,o){let[n,a]="before"===t.xPosition?["end","start"]:["start","end"],[s,d]="above"===t.yPosition?["bottom","top"]:["top","bottom"],[h,p]=[s,d],[f,m]=[n,a],b=0;if(this.triggersSubmenu()){if(m=n="before"===t.xPosition?"start":"end",a=f="end"===n?"start":"end",this._parentMaterialMenu){if(null==this._parentInnerPadding){const D=this._parentMaterialMenu.items.first;this._parentInnerPadding=D?D._getHostElement().offsetTop:0}b="bottom"===s?this._parentInnerPadding:-this._parentInnerPadding}}else t.overlapTrigger||(h="top"===s?"bottom":"top",p="top"===d?"bottom":"top");o.withPositions([{originX:n,originY:h,overlayX:f,overlayY:s,offsetY:b},{originX:a,originY:h,overlayX:m,overlayY:s,offsetY:b},{originX:n,originY:p,overlayX:f,overlayY:d,offsetY:-b},{originX:a,originY:p,overlayX:m,overlayY:d,offsetY:-b}])}_menuClosingActions(){const t=this._overlayRef.backdropClick(),o=this._overlayRef.detachments(),n=this._parentMaterialMenu?this._parentMaterialMenu.closed:(0,U.of)(),a=this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe((0,B.p)(s=>this._menuOpen&&s!==this._menuItemInstance)):(0,U.of)();return(0,z.h)(t,n,a,o)}_handleMousedown(t){(0,T._G)(t)||(this._openedBy=0===t.button?"mouse":void 0,this.triggersSubmenu()&&t.preventDefault())}_handleKeydown(t){const o=t.keyCode;(o===S.Fm||o===S.t6)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(o===S.LE&&"ltr"===this.dir||o===S.UQ&&"rtl"===this.dir)&&(this._openedBy="keyboard",this.openMenu())}_handleClick(t){this.triggersSubmenu()?(t.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){this.triggersSubmenu()&&this._parentMaterialMenu&&(this._hoverSubscription=this._parentMaterialMenu._hovered().subscribe(t=>{t===this._menuItemInstance&&!t.disabled&&(this._openedBy="mouse",this.openMenu())}))}_getPortal(t){return(!this._portal||this._portal.templateRef!==t.templateRef)&&(this._portal=new Et.VA(t.templateRef,this._viewContainerRef)),this._portal}_ownsMenu(t){return ie.get(t)===this}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],hostVars:3,hostBindings:function(o,n){1&o&&e.bIt("click",function(s){return n._handleClick(s)})("mousedown",function(s){return n._handleMousedown(s)})("keydown",function(s){return n._handleKeydown(s)}),2&o&&e.BMQ("aria-haspopup",n.menu?"menu":null)("aria-expanded",n.menuOpen)("aria-controls",n.menuOpen?n.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:[0,"mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:[0,"matMenuTriggerFor","menu"],menuData:[0,"matMenuTriggerData","menuData"],restoreFocus:[0,"matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"},exportAs:["matMenuTrigger"]})}return i})(),Ut=(()=>{class i{static \u0275fac=function(o){return new(o||i)};static \u0275mod=e.$C({type:i});static \u0275inj=e.G2t({providers:[$t],imports:[y.pZ,y.yE,ee.z_,O.Gj,y.yE]})}return i})();var Yt=l(3726),W=l(6354),ot=l(3703),Ht=l(152);const it=["*"],Qt=["content"],zt=[[["mat-drawer"]],[["mat-drawer-content"]],"*"],Wt=["mat-drawer","mat-drawer-content","*"];function qt(i,r){if(1&i){const t=e.RV6();e.j41(0,"div",1),e.bIt("click",function(){e.eBV(t);const n=e.XpG();return e.Njj(n._onBackdropClicked())}),e.k0s()}if(2&i){const t=e.XpG();e.AVh("mat-drawer-shown",t._isShowingBackdrop())}}function Kt(i,r){1&i&&(e.j41(0,"mat-drawer-content"),e.SdG(1,2),e.k0s())}const Zt=new e.nKC("MAT_DRAWER_DEFAULT_AUTOSIZE",{providedIn:"root",factory:function Jt(){return!1}}),nt=new e.nKC("MAT_DRAWER_CONTAINER");let pe=(()=>{class i extends O.uv{_platform=(0,e.WQX)(te.OD);_changeDetectorRef=(0,e.WQX)(e.gRc);_container=(0,e.WQX)(rt);constructor(){super((0,e.WQX)(e.aKT),(0,e.WQX)(O.R),(0,e.WQX)(e.SKi))}ngAfterContentInit(){this._container._contentMarginChanges.subscribe(()=>{this._changeDetectorRef.markForCheck()})}_shouldBeHidden(){if(this._platform.isBrowser)return!1;const{start:t,end:o}=this._container;return null!=t&&"over"!==t.mode&&t.opened||null!=o&&"over"!==o.mode&&o.opened}static \u0275fac=function(o){return new(o||i)};static \u0275cmp=e.VBU({type:i,selectors:[["mat-drawer-content"]],hostAttrs:[1,"mat-drawer-content"],hostVars:6,hostBindings:function(o,n){2&o&&(e.xc7("margin-left",n._container._contentMargins.left,"px")("margin-right",n._container._contentMargins.right,"px"),e.AVh("mat-drawer-content-hidden",n._shouldBeHidden()))},features:[e.Jv_([{provide:O.uv,useExisting:i}]),e.Vt3],ngContentSelectors:it,decls:1,vars:0,template:function(o,n){1&o&&(e.NAR(),e.SdG(0))},encapsulation:2,changeDetection:0})}return i})(),at=(()=>{class i{_elementRef=(0,e.WQX)(e.aKT);_focusTrapFactory=(0,e.WQX)(T.GX);_focusMonitor=(0,e.WQX)(T.FN);_platform=(0,e.WQX)(te.OD);_ngZone=(0,e.WQX)(e.SKi);_renderer=(0,e.WQX)(e.sFG);_interactivityChecker=(0,e.WQX)(T.Z7);_doc=(0,e.WQX)(C.qQ,{optional:!0});_container=(0,e.WQX)(nt,{optional:!0});_focusTrap=null;_elementFocusedBeforeDrawerWasOpened=null;_eventCleanups;_isAttached;_anchor;get position(){return this._position}set position(t){(t="end"===t?"end":"start")!==this._position&&(this._isAttached&&this._updatePositionInParent(t),this._position=t,this.onPositionChanged.emit())}_position="start";get mode(){return this._mode}set mode(t){this._mode=t,this._updateFocusTrapState(),this._modeChanged.next()}_mode="over";get disableClose(){return this._disableClose}set disableClose(t){this._disableClose=(0,X.he)(t)}_disableClose=!1;get autoFocus(){return this._autoFocus??("side"===this.mode?"dialog":"first-tabbable")}set autoFocus(t){("true"===t||"false"===t||null==t)&&(t=(0,X.he)(t)),this._autoFocus=t}_autoFocus;get opened(){return this._opened}set opened(t){this.toggle((0,X.he)(t))}_opened=!1;_openedVia;_animationStarted=new R.B;_animationEnd=new R.B;openedChange=new e.bkB(!0);_openedStream=this.openedChange.pipe((0,B.p)(t=>t),(0,W.T)(()=>{}));openedStart=this._animationStarted.pipe((0,B.p)(()=>this.opened),(0,ot.u)(void 0));_closedStream=this.openedChange.pipe((0,B.p)(t=>!t),(0,W.T)(()=>{}));closedStart=this._animationStarted.pipe((0,B.p)(()=>!this.opened),(0,ot.u)(void 0));_destroyed=new R.B;onPositionChanged=new e.bkB;_content;_modeChanged=new R.B;_injector=(0,e.WQX)(e.zZn);_changeDetectorRef=(0,e.WQX)(e.gRc);constructor(){this.openedChange.pipe((0,_.Q)(this._destroyed)).subscribe(t=>{t?(this._doc&&(this._elementFocusedBeforeDrawerWasOpened=this._doc.activeElement),this._takeFocus()):this._isFocusWithinDrawer()&&this._restoreFocus(this._openedVia||"program")}),this._ngZone.runOutsideAngular(()=>{const t=this._elementRef.nativeElement;(0,Yt.R)(t,"keydown").pipe((0,B.p)(o=>o.keyCode===S._f&&!this.disableClose&&!(0,S.rp)(o)),(0,_.Q)(this._destroyed)).subscribe(o=>this._ngZone.run(()=>{this.close(),o.stopPropagation(),o.preventDefault()})),this._eventCleanups=[this._renderer.listen(t,"transitionrun",this._handleTransitionEvent),this._renderer.listen(t,"transitionend",this._handleTransitionEvent),this._renderer.listen(t,"transitioncancel",this._handleTransitionEvent)]}),this._animationEnd.subscribe(()=>{this.openedChange.emit(this._opened)})}_forceFocus(t,o){this._interactivityChecker.isFocusable(t)||(t.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{const n=()=>{a(),s(),t.removeAttribute("tabindex")},a=this._renderer.listen(t,"blur",n),s=this._renderer.listen(t,"mousedown",n)})),t.focus(o)}_focusByCssSelector(t,o){let n=this._elementRef.nativeElement.querySelector(t);n&&this._forceFocus(n,o)}_takeFocus(){if(!this._focusTrap)return;const t=this._elementRef.nativeElement;switch(this.autoFocus){case!1:case"dialog":return;case!0:case"first-tabbable":(0,e.mal)(()=>{!this._focusTrap.focusInitialElement()&&"function"==typeof t.focus&&t.focus()},{injector:this._injector});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this.autoFocus)}}_restoreFocus(t){"dialog"!==this.autoFocus&&(this._elementFocusedBeforeDrawerWasOpened?this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened,t):this._elementRef.nativeElement.blur(),this._elementFocusedBeforeDrawerWasOpened=null)}_isFocusWithinDrawer(){const t=this._doc.activeElement;return!!t&&this._elementRef.nativeElement.contains(t)}ngAfterViewInit(){this._isAttached=!0,"end"===this._position&&this._updatePositionInParent("end"),this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._updateFocusTrapState())}ngOnDestroy(){this._eventCleanups.forEach(t=>t()),this._focusTrap?.destroy(),this._anchor?.remove(),this._anchor=null,this._animationStarted.complete(),this._animationEnd.complete(),this._modeChanged.complete(),this._destroyed.next(),this._destroyed.complete()}open(t){return this.toggle(!0,t)}close(){return this.toggle(!1)}_closeViaBackdropClick(){return this._setOpen(!1,!0,"mouse")}toggle(t=!this.opened,o){t&&o&&(this._openedVia=o);const n=this._setOpen(t,!t&&this._isFocusWithinDrawer(),this._openedVia||"program");return t||(this._openedVia=null),n}_setOpen(t,o,n){return t===this._opened?Promise.resolve(t?"open":"close"):(this._opened=t,this._container?._transitionsEnabled?this._setIsAnimating(!0):setTimeout(()=>{this._animationStarted.next(),this._animationEnd.next()}),this._elementRef.nativeElement.classList.toggle("mat-drawer-opened",t),!t&&o&&this._restoreFocus(n),this._changeDetectorRef.markForCheck(),this._updateFocusTrapState(),new Promise(a=>{this.openedChange.pipe((0,Ke.s)(1)).subscribe(s=>a(s?"open":"close"))}))}_setIsAnimating(t){this._elementRef.nativeElement.classList.toggle("mat-drawer-animating",t)}_getWidth(){return this._elementRef.nativeElement.offsetWidth||0}_updateFocusTrapState(){this._focusTrap&&(this._focusTrap.enabled=!!this._container?.hasBackdrop&&this.opened)}_updatePositionInParent(t){if(!this._platform.isBrowser)return;const o=this._elementRef.nativeElement,n=o.parentNode;"end"===t?(this._anchor||(this._anchor=this._doc.createComment("mat-drawer-anchor"),n.insertBefore(this._anchor,o)),n.appendChild(o)):this._anchor&&this._anchor.parentNode.insertBefore(o,this._anchor)}_handleTransitionEvent=t=>{t.target===this._elementRef.nativeElement&&this._ngZone.run(()=>{"transitionrun"===t.type?this._animationStarted.next(t):("transitionend"===t.type&&this._setIsAnimating(!1),this._animationEnd.next(t))})};static \u0275fac=function(o){return new(o||i)};static \u0275cmp=e.VBU({type:i,selectors:[["mat-drawer"]],viewQuery:function(o,n){if(1&o&&e.GBs(Qt,5),2&o){let a;e.mGM(a=e.lsd())&&(n._content=a.first)}},hostAttrs:["tabIndex","-1",1,"mat-drawer"],hostVars:11,hostBindings:function(o,n){2&o&&(e.BMQ("align",null),e.xc7("visibility",n._container||n.opened?null:"hidden"),e.AVh("mat-drawer-end","end"===n.position)("mat-drawer-over","over"===n.mode)("mat-drawer-push","push"===n.mode)("mat-drawer-side","side"===n.mode))},inputs:{position:"position",mode:"mode",disableClose:"disableClose",autoFocus:"autoFocus",opened:"opened"},outputs:{openedChange:"openedChange",_openedStream:"opened",openedStart:"openedStart",_closedStream:"closed",closedStart:"closedStart",onPositionChanged:"positionChanged"},exportAs:["matDrawer"],ngContentSelectors:it,decls:3,vars:0,consts:[["content",""],["cdkScrollable","",1,"mat-drawer-inner-container"]],template:function(o,n){1&o&&(e.NAR(),e.j41(0,"div",1,0),e.SdG(2),e.k0s())},dependencies:[O.uv],encapsulation:2,changeDetection:0})}return i})(),rt=(()=>{class i{_dir=(0,e.WQX)(De.dS,{optional:!0});_element=(0,e.WQX)(e.aKT);_ngZone=(0,e.WQX)(e.SKi);_changeDetectorRef=(0,e.WQX)(e.gRc);_animationMode=(0,e.WQX)(e.bc$,{optional:!0});_transitionsEnabled=!1;_allDrawers;_drawers=new e.rOR;_content;_userContent;get start(){return this._start}get end(){return this._end}get autosize(){return this._autosize}set autosize(t){this._autosize=(0,X.he)(t)}_autosize=(0,e.WQX)(Zt);get hasBackdrop(){return this._drawerHasBackdrop(this._start)||this._drawerHasBackdrop(this._end)}set hasBackdrop(t){this._backdropOverride=null==t?null:(0,X.he)(t)}_backdropOverride;backdropClick=new e.bkB;_start;_end;_left;_right;_destroyed=new R.B;_doCheckSubject=new R.B;_contentMargins={left:null,right:null};_contentMarginChanges=new R.B;get scrollable(){return this._userContent||this._content}_injector=(0,e.WQX)(e.zZn);constructor(){const t=(0,e.WQX)(te.OD),o=(0,e.WQX)(O.Xj);this._dir?.change.pipe((0,_.Q)(this._destroyed)).subscribe(()=>{this._validateDrawers(),this.updateContentMargins()}),o.change().pipe((0,_.Q)(this._destroyed)).subscribe(()=>this.updateContentMargins()),"NoopAnimations"!==this._animationMode&&t.isBrowser&&this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{this._element.nativeElement.classList.add("mat-drawer-transition"),this._transitionsEnabled=!0},200)})}ngAfterContentInit(){this._allDrawers.changes.pipe((0,J.Z)(this._allDrawers),(0,_.Q)(this._destroyed)).subscribe(t=>{this._drawers.reset(t.filter(o=>!o._container||o._container===this)),this._drawers.notifyOnChanges()}),this._drawers.changes.pipe((0,J.Z)(null)).subscribe(()=>{this._validateDrawers(),this._drawers.forEach(t=>{this._watchDrawerToggle(t),this._watchDrawerPosition(t),this._watchDrawerMode(t)}),(!this._drawers.length||this._isDrawerOpen(this._start)||this._isDrawerOpen(this._end))&&this.updateContentMargins(),this._changeDetectorRef.markForCheck()}),this._ngZone.runOutsideAngular(()=>{this._doCheckSubject.pipe((0,Ht.B)(10),(0,_.Q)(this._destroyed)).subscribe(()=>this.updateContentMargins())})}ngOnDestroy(){this._contentMarginChanges.complete(),this._doCheckSubject.complete(),this._drawers.destroy(),this._destroyed.next(),this._destroyed.complete()}open(){this._drawers.forEach(t=>t.open())}close(){this._drawers.forEach(t=>t.close())}updateContentMargins(){let t=0,o=0;if(this._left&&this._left.opened)if("side"==this._left.mode)t+=this._left._getWidth();else if("push"==this._left.mode){const n=this._left._getWidth();t+=n,o-=n}if(this._right&&this._right.opened)if("side"==this._right.mode)o+=this._right._getWidth();else if("push"==this._right.mode){const n=this._right._getWidth();o+=n,t-=n}t=t||null,o=o||null,(t!==this._contentMargins.left||o!==this._contentMargins.right)&&(this._contentMargins={left:t,right:o},this._ngZone.run(()=>this._contentMarginChanges.next(this._contentMargins)))}ngDoCheck(){this._autosize&&this._isPushed()&&this._ngZone.runOutsideAngular(()=>this._doCheckSubject.next())}_watchDrawerToggle(t){t._animationStarted.pipe((0,_.Q)(this._drawers.changes)).subscribe(()=>{this.updateContentMargins(),this._changeDetectorRef.markForCheck()}),"side"!==t.mode&&t.openedChange.pipe((0,_.Q)(this._drawers.changes)).subscribe(()=>this._setContainerClass(t.opened))}_watchDrawerPosition(t){t.onPositionChanged.pipe((0,_.Q)(this._drawers.changes)).subscribe(()=>{(0,e.mal)({read:()=>this._validateDrawers()},{injector:this._injector})})}_watchDrawerMode(t){t._modeChanged.pipe((0,_.Q)((0,z.h)(this._drawers.changes,this._destroyed))).subscribe(()=>{this.updateContentMargins(),this._changeDetectorRef.markForCheck()})}_setContainerClass(t){const o=this._element.nativeElement.classList,n="mat-drawer-container-has-open";t?o.add(n):o.remove(n)}_validateDrawers(){this._start=this._end=null,this._drawers.forEach(t=>{"end"==t.position?this._end=t:this._start=t}),this._right=this._left=null,this._dir&&"rtl"===this._dir.value?(this._left=this._end,this._right=this._start):(this._left=this._start,this._right=this._end)}_isPushed(){return this._isDrawerOpen(this._start)&&"over"!=this._start.mode||this._isDrawerOpen(this._end)&&"over"!=this._end.mode}_onBackdropClicked(){this.backdropClick.emit(),this._closeModalDrawersViaBackdrop()}_closeModalDrawersViaBackdrop(){[this._start,this._end].filter(t=>t&&!t.disableClose&&this._drawerHasBackdrop(t)).forEach(t=>t._closeViaBackdropClick())}_isShowingBackdrop(){return this._isDrawerOpen(this._start)&&this._drawerHasBackdrop(this._start)||this._isDrawerOpen(this._end)&&this._drawerHasBackdrop(this._end)}_isDrawerOpen(t){return null!=t&&t.opened}_drawerHasBackdrop(t){return null==this._backdropOverride?!!t&&"side"!==t.mode:this._backdropOverride}static \u0275fac=function(o){return new(o||i)};static \u0275cmp=e.VBU({type:i,selectors:[["mat-drawer-container"]],contentQueries:function(o,n,a){if(1&o&&(e.wni(a,pe,5),e.wni(a,at,5)),2&o){let s;e.mGM(s=e.lsd())&&(n._content=s.first),e.mGM(s=e.lsd())&&(n._allDrawers=s)}},viewQuery:function(o,n){if(1&o&&e.GBs(pe,5),2&o){let a;e.mGM(a=e.lsd())&&(n._userContent=a.first)}},hostAttrs:[1,"mat-drawer-container"],hostVars:2,hostBindings:function(o,n){2&o&&e.AVh("mat-drawer-container-explicit-backdrop",n._backdropOverride)},inputs:{autosize:"autosize",hasBackdrop:"hasBackdrop"},outputs:{backdropClick:"backdropClick"},exportAs:["matDrawerContainer"],features:[e.Jv_([{provide:nt,useExisting:i}])],ngContentSelectors:Wt,decls:4,vars:2,consts:[[1,"mat-drawer-backdrop",3,"mat-drawer-shown"],[1,"mat-drawer-backdrop",3,"click"]],template:function(o,n){1&o&&(e.NAR(zt),e.DNE(0,qt,1,2,"div",0),e.SdG(1),e.SdG(2,1),e.DNE(3,Kt,2,0,"mat-drawer-content")),2&o&&(e.vxM(n.hasBackdrop?0:-1),e.R7$(3),e.vxM(n._content?-1:3))},dependencies:[pe],styles:[".mat-drawer-container{position:relative;z-index:1;color:var(--mat-sidenav-content-text-color, var(--mat-sys-on-background));background-color:var(--mat-sidenav-content-background-color, var(--mat-sys-background));box-sizing:border-box;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible;background-color:var(--mat-sidenav-scrim-color, color-mix(in srgb, var(--mat-sys-neutral-variant20) 40%, transparent))}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}@media(forced-colors: active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-content.mat-drawer-content-hidden{opacity:0}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;color:var(--mat-sidenav-container-text-color, var(--mat-sys-on-surface-variant));box-shadow:var(--mat-sidenav-container-elevation-shadow, none);background-color:var(--mat-sidenav-container-background-color, var(--mat-sys-surface));border-top-right-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-bottom-right-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));width:var(--mat-sidenav-container-width, 360px);display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}@media(forced-colors: active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media(forced-colors: active){[dir=rtl] .mat-drawer,.mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0);border-top-left-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-bottom-left-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-top-right-radius:0;border-bottom-right-radius:0}[dir=rtl] .mat-drawer{border-top-left-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-bottom-left-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-top-right-radius:0;border-bottom-right-radius:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{border-top-right-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-bottom-right-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-top-left-radius:0;border-bottom-left-radius:0;left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer-transition .mat-drawer{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-drawer:not(.mat-drawer-opened):not(.mat-drawer-animating){visibility:hidden;box-shadow:none}.mat-drawer:not(.mat-drawer-opened):not(.mat-drawer-animating) .mat-drawer-inner-container{display:none}.mat-drawer.mat-drawer-opened.mat-drawer-opened{transform:none}.mat-drawer-side{box-shadow:none;border-right-color:var(--mat-sidenav-container-divider-color, transparent);border-right-width:1px;border-right-style:solid}.mat-drawer-side.mat-drawer-end{border-left-color:var(--mat-sidenav-container-divider-color, transparent);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side{border-left-color:var(--mat-sidenav-container-divider-color, transparent);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-right-color:var(--mat-sidenav-container-divider-color, transparent);border-right-width:1px;border-right-style:solid;border-left:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto}.mat-sidenav-fixed{position:fixed}"],encapsulation:2,changeDetection:0})}return i})(),eo=(()=>{class i{static \u0275fac=function(o){return new(o||i)};static \u0275mod=e.$C({type:i});static \u0275inj=e.G2t({imports:[y.yE,O.Gj,O.Gj,y.yE]})}return i})();var M=l(5416),ne=l(2771);const to=new e.nKC("MAT_SORT_DEFAULT_OPTIONS");let oo=(()=>{class i{_defaultOptions;_initializedStream=new ne.m(1);sortables=new Map;_stateChanges=new R.B;active;start="asc";get direction(){return this._direction}set direction(t){this._direction=t}_direction="";disableClear;disabled=!1;sortChange=new e.bkB;initialized=this._initializedStream;constructor(t){this._defaultOptions=t}register(t){this.sortables.set(t.id,t)}deregister(t){this.sortables.delete(t.id)}sort(t){this.active!=t.id?(this.active=t.id,this.direction=t.start?t.start:this.start):this.direction=this.getNextSortDirection(t),this.sortChange.emit({active:this.active,direction:this.direction})}getNextSortDirection(t){if(!t)return"";let n=function io(i,r){let t=["asc","desc"];return"desc"==i&&t.reverse(),r||t.push(""),t}(t.start||this.start,t?.disableClear??this.disableClear??!!this._defaultOptions?.disableClear),a=n.indexOf(this.direction)+1;return a>=n.length&&(a=0),n[a]}ngOnInit(){this._initializedStream.next()}ngOnChanges(){this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete(),this._initializedStream.complete()}static \u0275fac=function(o){return new(o||i)(e.rXU(to,8))};static \u0275dir=e.FsC({type:i,selectors:[["","matSort",""]],hostAttrs:[1,"mat-sort"],inputs:{active:[0,"matSortActive","active"],start:[0,"matSortStart","start"],direction:[0,"matSortDirection","direction"],disableClear:[2,"matSortDisableClear","disableClear",e.L39],disabled:[2,"matSortDisabled","disabled",e.L39]},outputs:{sortChange:"matSortChange"},exportAs:["matSort"],features:[e.GFd,e.OA$]})}return i})();var k=l(5024),L=l(4412),ao=l(4402);const ro=[[["caption"]],[["colgroup"],["col"]],"*"],so=["caption","colgroup, col","*"];function co(i,r){1&i&&e.SdG(0,2)}function lo(i,r){1&i&&(e.j41(0,"thead",0),e.eu8(1,1),e.k0s(),e.j41(2,"tbody",0),e.eu8(3,2)(4,3),e.k0s(),e.j41(5,"tfoot",0),e.eu8(6,4),e.k0s())}function ho(i,r){1&i&&e.eu8(0,1)(1,2)(2,3)(3,4)}const P=new e.nKC("CDK_TABLE");let q=(()=>{class i{template=(0,e.WQX)(e.C4Q);constructor(){}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["","cdkCellDef",""]]})}return i})(),K=(()=>{class i{template=(0,e.WQX)(e.C4Q);constructor(){}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["","cdkHeaderCellDef",""]]})}return i})(),_e=(()=>{class i{template=(0,e.WQX)(e.C4Q);constructor(){}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["","cdkFooterCellDef",""]]})}return i})(),A=(()=>{class i{_table=(0,e.WQX)(P,{optional:!0});_hasStickyChanged=!1;get name(){return this._name}set name(t){this._setNameInput(t)}_name;get sticky(){return this._sticky}set sticky(t){t!==this._sticky&&(this._sticky=t,this._hasStickyChanged=!0)}_sticky=!1;get stickyEnd(){return this._stickyEnd}set stickyEnd(t){t!==this._stickyEnd&&(this._stickyEnd=t,this._hasStickyChanged=!0)}_stickyEnd=!1;cell;headerCell;footerCell;cssClassFriendlyName;_columnCssClassName;constructor(){}hasStickyChanged(){const t=this._hasStickyChanged;return this.resetStickyChanged(),t}resetStickyChanged(){this._hasStickyChanged=!1}_updateColumnCssClassName(){this._columnCssClassName=[`cdk-column-${this.cssClassFriendlyName}`]}_setNameInput(t){t&&(this._name=t,this.cssClassFriendlyName=t.replace(/[^a-z0-9_-]/gi,"-"),this._updateColumnCssClassName())}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["","cdkColumnDef",""]],contentQueries:function(o,n,a){if(1&o&&(e.wni(a,q,5),e.wni(a,K,5),e.wni(a,_e,5)),2&o){let s;e.mGM(s=e.lsd())&&(n.cell=s.first),e.mGM(s=e.lsd())&&(n.headerCell=s.first),e.mGM(s=e.lsd())&&(n.footerCell=s.first)}},inputs:{name:[0,"cdkColumnDef","name"],sticky:[2,"sticky","sticky",e.L39],stickyEnd:[2,"stickyEnd","stickyEnd",e.L39]},features:[e.Jv_([{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:i}]),e.GFd]})}return i})();class xe{constructor(r,t){t.nativeElement.classList.add(...r._columnCssClassName)}}let Te=(()=>{class i extends xe{constructor(){super((0,e.WQX)(A),(0,e.WQX)(e.aKT))}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["cdk-header-cell"],["th","cdk-header-cell",""]],hostAttrs:["role","columnheader",1,"cdk-header-cell"],features:[e.Vt3]})}return i})(),Ie=(()=>{class i extends xe{constructor(){const t=(0,e.WQX)(A),o=(0,e.WQX)(e.aKT);super(t,o);const n=t._table?._getCellRole();n&&o.nativeElement.setAttribute("role",n)}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["cdk-cell"],["td","cdk-cell",""]],hostAttrs:[1,"cdk-cell"],features:[e.Vt3]})}return i})();class ct{tasks=[];endTasks=[]}const Ee=new e.nKC("_COALESCED_STYLE_SCHEDULER");let dt=(()=>{class i{_currentSchedule=null;_ngZone=(0,e.WQX)(e.SKi);constructor(){}schedule(t){this._createScheduleIfNeeded(),this._currentSchedule.tasks.push(t)}scheduleEnd(t){this._createScheduleIfNeeded(),this._currentSchedule.endTasks.push(t)}_createScheduleIfNeeded(){this._currentSchedule||(this._currentSchedule=new ct,this._ngZone.runOutsideAngular(()=>queueMicrotask(()=>{for(;this._currentSchedule.tasks.length||this._currentSchedule.endTasks.length;){const t=this._currentSchedule;this._currentSchedule=new ct;for(const o of t.tasks)o();for(const o of t.endTasks)o()}this._currentSchedule=null})))}static \u0275fac=function(o){return new(o||i)};static \u0275prov=e.jDH({token:i,factory:i.\u0275fac})}return i})(),Fe=(()=>{class i{template=(0,e.WQX)(e.C4Q);_differs=(0,e.WQX)(e._q3);columns;_columnsDiffer;constructor(){}ngOnChanges(t){if(!this._columnsDiffer){const o=t.columns&&t.columns.currentValue||[];this._columnsDiffer=this._differs.find(o).create(),this._columnsDiffer.diff(o)}}getColumnsDiff(){return this._columnsDiffer.diff(this.columns)}extractCellTemplate(t){return this instanceof ae?t.headerCell.template:this instanceof re?t.footerCell.template:t.cell.template}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,features:[e.OA$]})}return i})(),ae=(()=>{class i extends Fe{_table=(0,e.WQX)(P,{optional:!0});_hasStickyChanged=!1;get sticky(){return this._sticky}set sticky(t){t!==this._sticky&&(this._sticky=t,this._hasStickyChanged=!0)}_sticky=!1;constructor(){super((0,e.WQX)(e.C4Q),(0,e.WQX)(e._q3))}ngOnChanges(t){super.ngOnChanges(t)}hasStickyChanged(){const t=this._hasStickyChanged;return this.resetStickyChanged(),t}resetStickyChanged(){this._hasStickyChanged=!1}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["","cdkHeaderRowDef",""]],inputs:{columns:[0,"cdkHeaderRowDef","columns"],sticky:[2,"cdkHeaderRowDefSticky","sticky",e.L39]},features:[e.GFd,e.Vt3,e.OA$]})}return i})(),re=(()=>{class i extends Fe{_table=(0,e.WQX)(P,{optional:!0});_hasStickyChanged=!1;get sticky(){return this._sticky}set sticky(t){t!==this._sticky&&(this._sticky=t,this._hasStickyChanged=!0)}_sticky=!1;constructor(){super((0,e.WQX)(e.C4Q),(0,e.WQX)(e._q3))}ngOnChanges(t){super.ngOnChanges(t)}hasStickyChanged(){const t=this._hasStickyChanged;return this.resetStickyChanged(),t}resetStickyChanged(){this._hasStickyChanged=!1}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["","cdkFooterRowDef",""]],inputs:{columns:[0,"cdkFooterRowDef","columns"],sticky:[2,"cdkFooterRowDefSticky","sticky",e.L39]},features:[e.GFd,e.Vt3,e.OA$]})}return i})(),fe=(()=>{class i extends Fe{_table=(0,e.WQX)(P,{optional:!0});when;constructor(){super((0,e.WQX)(e.C4Q),(0,e.WQX)(e._q3))}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["","cdkRowDef",""]],inputs:{columns:[0,"cdkRowDefColumns","columns"],when:[0,"cdkRowDefWhen","when"]},features:[e.Vt3]})}return i})(),N=(()=>{class i{_viewContainer=(0,e.WQX)(e.c1b);cells;context;static mostRecentCellOutlet=null;constructor(){i.mostRecentCellOutlet=this}ngOnDestroy(){i.mostRecentCellOutlet===this&&(i.mostRecentCellOutlet=null)}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["","cdkCellOutlet",""]]})}return i})(),Oe=(()=>{class i{static \u0275fac=function(o){return new(o||i)};static \u0275cmp=e.VBU({type:i,selectors:[["cdk-header-row"],["tr","cdk-header-row",""]],hostAttrs:["role","row",1,"cdk-header-row"],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(o,n){1&o&&e.eu8(0,0)},dependencies:[N],encapsulation:2})}return i})(),Ae=(()=>{class i{static \u0275fac=function(o){return new(o||i)};static \u0275cmp=e.VBU({type:i,selectors:[["cdk-row"],["tr","cdk-row",""]],hostAttrs:["role","row",1,"cdk-row"],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(o,n){1&o&&e.eu8(0,0)},dependencies:[N],encapsulation:2})}return i})(),ge=(()=>{class i{templateRef=(0,e.WQX)(e.C4Q);_contentClassName="cdk-no-data-row";constructor(){}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["ng-template","cdkNoDataRow",""]]})}return i})();const lt=["top","bottom","left","right"];class _o{_isNativeHtmlTable;_stickCellCss;direction;_coalescedStyleScheduler;_isBrowser;_needsPositionStickyOnElement;_positionListener;_tableInjector;_elemSizeCache=new WeakMap;_resizeObserver=globalThis?.ResizeObserver?new globalThis.ResizeObserver(r=>this._updateCachedSizes(r)):null;_updatedStickyColumnsParamsToReplay=[];_stickyColumnsReplayTimeout=null;_cachedCellWidths=[];_borderCellCss;_destroyed=!1;constructor(r,t,o,n,a=!0,s=!0,d,h){this._isNativeHtmlTable=r,this._stickCellCss=t,this.direction=o,this._coalescedStyleScheduler=n,this._isBrowser=a,this._needsPositionStickyOnElement=s,this._positionListener=d,this._tableInjector=h,this._borderCellCss={top:`${t}-border-elem-top`,bottom:`${t}-border-elem-bottom`,left:`${t}-border-elem-left`,right:`${t}-border-elem-right`}}clearStickyPositioning(r,t){(t.includes("left")||t.includes("right"))&&this._removeFromStickyColumnReplayQueue(r);const o=[];for(const n of r)n.nodeType===n.ELEMENT_NODE&&o.push(n,...Array.from(n.children));this._afterNextRender({write:()=>{for(const n of o)this._removeStickyStyle(n,t)}})}updateStickyColumns(r,t,o,n=!0,a=!0){if(a&&this._updateStickyColumnReplayQueue({rows:[...r],stickyStartStates:[...t],stickyEndStates:[...o]}),!r.length||!this._isBrowser||!t.some(F=>F)&&!o.some(F=>F))return void(this._positionListener&&(this._positionListener.stickyColumnsUpdated({sizes:[]}),this._positionListener.stickyEndColumnsUpdated({sizes:[]})));const s=r[0],d=s.children.length,h="rtl"===this.direction,p=h?"right":"left",f=h?"left":"right",m=t.lastIndexOf(!0),b=o.indexOf(!0);let D,ye,Tt;this._afterNextRender({earlyRead:()=>{D=this._getCellWidths(s,n),ye=this._getStickyStartColumnPositions(D,t),Tt=this._getStickyEndColumnPositions(D,o)},write:()=>{for(const F of r)for(let x=0;x!!F)&&(this._positionListener.stickyColumnsUpdated({sizes:-1===m?[]:D.slice(0,m+1).map((F,x)=>t[x]?F:null)}),this._positionListener.stickyEndColumnsUpdated({sizes:-1===b?[]:D.slice(b).map((F,x)=>o[x+b]?F:null).reverse()}))}})}stickRows(r,t,o){if(!this._isBrowser)return;const n="bottom"===o?r.slice().reverse():r,a="bottom"===o?t.slice().reverse():t,s=[],d=[],h=[];this._afterNextRender({earlyRead:()=>{for(let p=0,f=0;p{const p=a.lastIndexOf(!0);for(let f=0;f{const o=r.querySelector("tfoot");o&&(t.some(n=>!n)?this._removeStickyStyle(o,["bottom"]):this._addStickyStyle(o,"bottom",0,!1))}})}destroy(){this._stickyColumnsReplayTimeout&&clearTimeout(this._stickyColumnsReplayTimeout),this._destroyed=!0}_removeStickyStyle(r,t){for(const n of t)r.style[n]="",r.classList.remove(this._borderCellCss[n]);lt.some(n=>-1===t.indexOf(n)&&r.style[n])?r.style.zIndex=this._getCalculatedZIndex(r):(r.style.zIndex="",this._needsPositionStickyOnElement&&(r.style.position=""),r.classList.remove(this._stickCellCss))}_addStickyStyle(r,t,o,n){r.classList.add(this._stickCellCss),n&&r.classList.add(this._borderCellCss[t]),r.style[t]=`${o}px`,r.style.zIndex=this._getCalculatedZIndex(r),this._needsPositionStickyOnElement&&(r.style.cssText+="position: -webkit-sticky; position: sticky; ")}_getCalculatedZIndex(r){const t={top:100,bottom:10,left:1,right:1};let o=0;for(const n of lt)r.style[n]&&(o+=t[n]);return o?`${o}`:""}_getCellWidths(r,t=!0){if(!t&&this._cachedCellWidths.length)return this._cachedCellWidths;const o=[],n=r.children;for(let a=0;a0;a--)t[a]&&(o[a]=n,n+=r[a]);return o}_retrieveElementSize(r){const t=this._elemSizeCache.get(r);if(t)return t;const o=r.getBoundingClientRect(),n={width:o.width,height:o.height};return this._resizeObserver&&(this._elemSizeCache.set(r,n),this._resizeObserver.observe(r,{box:"border-box"})),n}_updateStickyColumnReplayQueue(r){this._removeFromStickyColumnReplayQueue(r.rows),!this._stickyColumnsReplayTimeout&&this._updatedStickyColumnsParamsToReplay.push(r)}_removeFromStickyColumnReplayQueue(r){const t=new Set(r);for(const o of this._updatedStickyColumnsParamsToReplay)o.rows=o.rows.filter(n=>!t.has(n));this._updatedStickyColumnsParamsToReplay=this._updatedStickyColumnsParamsToReplay.filter(o=>!!o.rows.length)}_updateCachedSizes(r){let t=!1;for(const o of r){const n=o.borderBoxSize?.length?{width:o.borderBoxSize[0].inlineSize,height:o.borderBoxSize[0].blockSize}:{width:o.contentRect.width,height:o.contentRect.height};n.width!==this._elemSizeCache.get(o.target)?.width&&fo(o.target)&&(t=!0),this._elemSizeCache.set(o.target,n)}t&&this._updatedStickyColumnsParamsToReplay.length&&(this._stickyColumnsReplayTimeout&&clearTimeout(this._stickyColumnsReplayTimeout),this._stickyColumnsReplayTimeout=setTimeout(()=>{if(!this._destroyed){for(const o of this._updatedStickyColumnsParamsToReplay)this.updateStickyColumns(o.rows,o.stickyStartStates,o.stickyEndStates,!0,!1);this._updatedStickyColumnsParamsToReplay=[],this._stickyColumnsReplayTimeout=null}},0))}_afterNextRender(r){this._tableInjector?(0,e.mal)(r,{injector:this._tableInjector}):this._coalescedStyleScheduler.schedule(()=>{r.earlyRead?.(),r.write()})}}function fo(i){return["cdk-cell","cdk-header-cell","cdk-footer-cell"].some(r=>i.classList.contains(r))}const Ne=new e.nKC("CDK_SPL");let Ge=(()=>{class i{viewContainer=(0,e.WQX)(e.c1b);elementRef=(0,e.WQX)(e.aKT);constructor(){const t=(0,e.WQX)(P);t._rowOutlet=this,t._outletAssigned()}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["","rowOutlet",""]]})}return i})(),Be=(()=>{class i{viewContainer=(0,e.WQX)(e.c1b);elementRef=(0,e.WQX)(e.aKT);constructor(){const t=(0,e.WQX)(P);t._headerRowOutlet=this,t._outletAssigned()}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["","headerRowOutlet",""]]})}return i})(),je=(()=>{class i{viewContainer=(0,e.WQX)(e.c1b);elementRef=(0,e.WQX)(e.aKT);constructor(){const t=(0,e.WQX)(P);t._footerRowOutlet=this,t._outletAssigned()}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["","footerRowOutlet",""]]})}return i})(),Le=(()=>{class i{viewContainer=(0,e.WQX)(e.c1b);elementRef=(0,e.WQX)(e.aKT);constructor(){const t=(0,e.WQX)(P);t._noDataRowOutlet=this,t._outletAssigned()}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["","noDataRowOutlet",""]]})}return i})(),Ce=(()=>{class i{_differs=(0,e.WQX)(e._q3);_changeDetectorRef=(0,e.WQX)(e.gRc);_elementRef=(0,e.WQX)(e.aKT);_dir=(0,e.WQX)(De.dS,{optional:!0});_platform=(0,e.WQX)(te.OD);_viewRepeater=(0,e.WQX)(k.sL);_coalescedStyleScheduler=(0,e.WQX)(Ee);_viewportRuler=(0,e.WQX)(O.Xj);_stickyPositioningListener=(0,e.WQX)(Ne,{optional:!0,skipSelf:!0});_document=(0,e.WQX)(C.qQ);_data;_onDestroy=new R.B;_renderRows;_renderChangeSubscription;_columnDefsByName=new Map;_rowDefs;_headerRowDefs;_footerRowDefs;_dataDiffer;_defaultRowDef;_customColumnDefs=new Set;_customRowDefs=new Set;_customHeaderRowDefs=new Set;_customFooterRowDefs=new Set;_customNoDataRow;_headerRowDefChanged=!0;_footerRowDefChanged=!0;_stickyColumnStylesNeedReset=!0;_forceRecalculateCellWidths=!0;_cachedRenderRowsMap=new Map;_isNativeHtmlTable;_stickyStyler;stickyCssClass="cdk-table-sticky";needsPositionStickyOnElement=!0;_isServer;_isShowingNoDataRow=!1;_hasAllOutlets=!1;_hasInitialized=!1;_getCellRole(){if(void 0===this._cellRoleInternal){const t=this._elementRef.nativeElement.getAttribute("role");return"grid"===t||"treegrid"===t?"gridcell":"cell"}return this._cellRoleInternal}_cellRoleInternal=void 0;get trackBy(){return this._trackByFn}set trackBy(t){this._trackByFn=t}_trackByFn;get dataSource(){return this._dataSource}set dataSource(t){this._dataSource!==t&&this._switchDataSource(t)}_dataSource;get multiTemplateDataRows(){return this._multiTemplateDataRows}set multiTemplateDataRows(t){this._multiTemplateDataRows=t,this._rowOutlet&&this._rowOutlet.viewContainer.length&&(this._forceRenderDataRows(),this.updateStickyColumnStyles())}_multiTemplateDataRows=!1;get fixedLayout(){return this._fixedLayout}set fixedLayout(t){this._fixedLayout=t,this._forceRecalculateCellWidths=!0,this._stickyColumnStylesNeedReset=!0}_fixedLayout=!1;contentChanged=new e.bkB;viewChange=new L.t({start:0,end:Number.MAX_VALUE});_rowOutlet;_headerRowOutlet;_footerRowOutlet;_noDataRowOutlet;_contentColumnDefs;_contentRowDefs;_contentHeaderRowDefs;_contentFooterRowDefs;_noDataRow;_injector=(0,e.WQX)(e.zZn);constructor(){(0,e.WQX)(new e.ES_("role"),{optional:!0})||this._elementRef.nativeElement.setAttribute("role","table"),this._isServer=!this._platform.isBrowser,this._isNativeHtmlTable="TABLE"===this._elementRef.nativeElement.nodeName}ngOnInit(){this._setupStickyStyler(),this._dataDiffer=this._differs.find([]).create((t,o)=>this.trackBy?this.trackBy(o.dataIndex,o.data):o),this._viewportRuler.change().pipe((0,_.Q)(this._onDestroy)).subscribe(()=>{this._forceRecalculateCellWidths=!0})}ngAfterContentInit(){this._hasInitialized=!0}ngAfterContentChecked(){this._canRender()&&this._render()}ngOnDestroy(){this._stickyStyler?.destroy(),[this._rowOutlet?.viewContainer,this._headerRowOutlet?.viewContainer,this._footerRowOutlet?.viewContainer,this._cachedRenderRowsMap,this._customColumnDefs,this._customRowDefs,this._customHeaderRowDefs,this._customFooterRowDefs,this._columnDefsByName].forEach(t=>{t?.clear()}),this._headerRowDefs=[],this._footerRowDefs=[],this._defaultRowDef=null,this._onDestroy.next(),this._onDestroy.complete(),(0,k.y4)(this.dataSource)&&this.dataSource.disconnect(this)}renderRows(){this._renderRows=this._getAllRenderRows();const t=this._dataDiffer.diff(this._renderRows);if(!t)return this._updateNoDataRow(),void this.contentChanged.next();const o=this._rowOutlet.viewContainer;this._viewRepeater.applyChanges(t,o,(n,a,s)=>this._getEmbeddedViewArgs(n.item,s),n=>n.item.data,n=>{n.operation===k.Q3.INSERTED&&n.context&&this._renderCellTemplateForItem(n.record.item.rowDef,n.context)}),this._updateRowIndexContext(),t.forEachIdentityChange(n=>{o.get(n.currentIndex).context.$implicit=n.item.data}),this._updateNoDataRow(),this.contentChanged.next(),this.updateStickyColumnStyles()}addColumnDef(t){this._customColumnDefs.add(t)}removeColumnDef(t){this._customColumnDefs.delete(t)}addRowDef(t){this._customRowDefs.add(t)}removeRowDef(t){this._customRowDefs.delete(t)}addHeaderRowDef(t){this._customHeaderRowDefs.add(t),this._headerRowDefChanged=!0}removeHeaderRowDef(t){this._customHeaderRowDefs.delete(t),this._headerRowDefChanged=!0}addFooterRowDef(t){this._customFooterRowDefs.add(t),this._footerRowDefChanged=!0}removeFooterRowDef(t){this._customFooterRowDefs.delete(t),this._footerRowDefChanged=!0}setNoDataRow(t){this._customNoDataRow=t}updateStickyHeaderRowStyles(){const t=this._getRenderedRows(this._headerRowOutlet);if(this._isNativeHtmlTable){const n=ht(this._headerRowOutlet,"thead");n&&(n.style.display=t.length?"":"none")}const o=this._headerRowDefs.map(n=>n.sticky);this._stickyStyler.clearStickyPositioning(t,["top"]),this._stickyStyler.stickRows(t,o,"top"),this._headerRowDefs.forEach(n=>n.resetStickyChanged())}updateStickyFooterRowStyles(){const t=this._getRenderedRows(this._footerRowOutlet);if(this._isNativeHtmlTable){const n=ht(this._footerRowOutlet,"tfoot");n&&(n.style.display=t.length?"":"none")}const o=this._footerRowDefs.map(n=>n.sticky);this._stickyStyler.clearStickyPositioning(t,["bottom"]),this._stickyStyler.stickRows(t,o,"bottom"),this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement,o),this._footerRowDefs.forEach(n=>n.resetStickyChanged())}updateStickyColumnStyles(){const t=this._getRenderedRows(this._headerRowOutlet),o=this._getRenderedRows(this._rowOutlet),n=this._getRenderedRows(this._footerRowOutlet);(this._isNativeHtmlTable&&!this._fixedLayout||this._stickyColumnStylesNeedReset)&&(this._stickyStyler.clearStickyPositioning([...t,...o,...n],["left","right"]),this._stickyColumnStylesNeedReset=!1),t.forEach((a,s)=>{this._addStickyColumnStyles([a],this._headerRowDefs[s])}),this._rowDefs.forEach(a=>{const s=[];for(let d=0;d{this._addStickyColumnStyles([a],this._footerRowDefs[s])}),Array.from(this._columnDefsByName.values()).forEach(a=>a.resetStickyChanged())}_outletAssigned(){!this._hasAllOutlets&&this._rowOutlet&&this._headerRowOutlet&&this._footerRowOutlet&&this._noDataRowOutlet&&(this._hasAllOutlets=!0,this._canRender()&&this._render())}_canRender(){return this._hasAllOutlets&&this._hasInitialized}_render(){this._cacheRowDefs(),this._cacheColumnDefs();const o=this._renderUpdatedColumns()||this._headerRowDefChanged||this._footerRowDefChanged;this._stickyColumnStylesNeedReset=this._stickyColumnStylesNeedReset||o,this._forceRecalculateCellWidths=o,this._headerRowDefChanged&&(this._forceRenderHeaderRows(),this._headerRowDefChanged=!1),this._footerRowDefChanged&&(this._forceRenderFooterRows(),this._footerRowDefChanged=!1),this.dataSource&&this._rowDefs.length>0&&!this._renderChangeSubscription?this._observeRenderChanges():this._stickyColumnStylesNeedReset&&this.updateStickyColumnStyles(),this._checkStickyStates()}_getAllRenderRows(){const t=[],o=this._cachedRenderRowsMap;this._cachedRenderRowsMap=new Map;for(let n=0;n{const d=n&&n.has(s)?n.get(s):[];if(d.length){const h=d.shift();return h.dataIndex=o,h}return{data:t,rowDef:s,dataIndex:o}})}_cacheColumnDefs(){this._columnDefsByName.clear(),ve(this._getOwnDefs(this._contentColumnDefs),this._customColumnDefs).forEach(o=>{this._columnDefsByName.has(o.name),this._columnDefsByName.set(o.name,o)})}_cacheRowDefs(){this._headerRowDefs=ve(this._getOwnDefs(this._contentHeaderRowDefs),this._customHeaderRowDefs),this._footerRowDefs=ve(this._getOwnDefs(this._contentFooterRowDefs),this._customFooterRowDefs),this._rowDefs=ve(this._getOwnDefs(this._contentRowDefs),this._customRowDefs);const t=this._rowDefs.filter(o=>!o.when);this._defaultRowDef=t[0]}_renderUpdatedColumns(){const t=(s,d)=>{const h=!!d.getColumnsDiff();return s||h},o=this._rowDefs.reduce(t,!1);o&&this._forceRenderDataRows();const n=this._headerRowDefs.reduce(t,!1);n&&this._forceRenderHeaderRows();const a=this._footerRowDefs.reduce(t,!1);return a&&this._forceRenderFooterRows(),o||n||a}_switchDataSource(t){this._data=[],(0,k.y4)(this.dataSource)&&this.dataSource.disconnect(this),this._renderChangeSubscription&&(this._renderChangeSubscription.unsubscribe(),this._renderChangeSubscription=null),t||(this._dataDiffer&&this._dataDiffer.diff([]),this._rowOutlet&&this._rowOutlet.viewContainer.clear()),this._dataSource=t}_observeRenderChanges(){if(!this.dataSource)return;let t;(0,k.y4)(this.dataSource)?t=this.dataSource.connect(this):(0,ao.A)(this.dataSource)?t=this.dataSource:Array.isArray(this.dataSource)&&(t=(0,U.of)(this.dataSource)),this._renderChangeSubscription=t.pipe((0,_.Q)(this._onDestroy)).subscribe(o=>{this._data=o||[],this.renderRows()})}_forceRenderHeaderRows(){this._headerRowOutlet.viewContainer.length>0&&this._headerRowOutlet.viewContainer.clear(),this._headerRowDefs.forEach((t,o)=>this._renderRow(this._headerRowOutlet,t,o)),this.updateStickyHeaderRowStyles()}_forceRenderFooterRows(){this._footerRowOutlet.viewContainer.length>0&&this._footerRowOutlet.viewContainer.clear(),this._footerRowDefs.forEach((t,o)=>this._renderRow(this._footerRowOutlet,t,o)),this.updateStickyFooterRowStyles()}_addStickyColumnStyles(t,o){const n=Array.from(o?.columns||[]).map(d=>this._columnDefsByName.get(d)),a=n.map(d=>d.sticky),s=n.map(d=>d.stickyEnd);this._stickyStyler.updateStickyColumns(t,a,s,!this._fixedLayout||this._forceRecalculateCellWidths)}_getRenderedRows(t){const o=[];for(let n=0;n!a.when||a.when(o,t));else{let a=this._rowDefs.find(s=>s.when&&s.when(o,t))||this._defaultRowDef;a&&n.push(a)}return n}_getEmbeddedViewArgs(t,o){return{templateRef:t.rowDef.template,context:{$implicit:t.data},index:o}}_renderRow(t,o,n,a={}){const s=t.viewContainer.createEmbeddedView(o.template,a,n);return this._renderCellTemplateForItem(o,a),s}_renderCellTemplateForItem(t,o){for(let n of this._getCellTemplates(t))N.mostRecentCellOutlet&&N.mostRecentCellOutlet._viewContainer.createEmbeddedView(n,o);this._changeDetectorRef.markForCheck()}_updateRowIndexContext(){const t=this._rowOutlet.viewContainer;for(let o=0,n=t.length;o{const n=this._columnDefsByName.get(o);return t.extractCellTemplate(n)}):[]}_forceRenderDataRows(){this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear(),this.renderRows()}_checkStickyStates(){const t=(o,n)=>o||n.hasStickyChanged();this._headerRowDefs.reduce(t,!1)&&this.updateStickyHeaderRowStyles(),this._footerRowDefs.reduce(t,!1)&&this.updateStickyFooterRowStyles(),Array.from(this._columnDefsByName.values()).reduce(t,!1)&&(this._stickyColumnStylesNeedReset=!0,this.updateStickyColumnStyles())}_setupStickyStyler(){this._stickyStyler=new _o(this._isNativeHtmlTable,this.stickyCssClass,this._dir?this._dir.value:"ltr",this._coalescedStyleScheduler,this._platform.isBrowser,this.needsPositionStickyOnElement,this._stickyPositioningListener,this._injector),(this._dir?this._dir.change:(0,U.of)()).pipe((0,_.Q)(this._onDestroy)).subscribe(o=>{this._stickyStyler.direction=o,this.updateStickyColumnStyles()})}_getOwnDefs(t){return t.filter(o=>!o._table||o._table===this)}_updateNoDataRow(){const t=this._customNoDataRow||this._noDataRow;if(!t)return;const o=0===this._rowOutlet.viewContainer.length;if(o===this._isShowingNoDataRow)return;const n=this._noDataRowOutlet.viewContainer;if(o){const a=n.createEmbeddedView(t.templateRef),s=a.rootNodes[0];1===a.rootNodes.length&&s?.nodeType===this._document.ELEMENT_NODE&&(s.setAttribute("role","row"),s.classList.add(t._contentClassName))}else n.clear();this._isShowingNoDataRow=o,this._changeDetectorRef.markForCheck()}static \u0275fac=function(o){return new(o||i)};static \u0275cmp=e.VBU({type:i,selectors:[["cdk-table"],["table","cdk-table",""]],contentQueries:function(o,n,a){if(1&o&&(e.wni(a,ge,5),e.wni(a,A,5),e.wni(a,fe,5),e.wni(a,ae,5),e.wni(a,re,5)),2&o){let s;e.mGM(s=e.lsd())&&(n._noDataRow=s.first),e.mGM(s=e.lsd())&&(n._contentColumnDefs=s),e.mGM(s=e.lsd())&&(n._contentRowDefs=s),e.mGM(s=e.lsd())&&(n._contentHeaderRowDefs=s),e.mGM(s=e.lsd())&&(n._contentFooterRowDefs=s)}},hostAttrs:[1,"cdk-table"],hostVars:2,hostBindings:function(o,n){2&o&&e.AVh("cdk-table-fixed-layout",n.fixedLayout)},inputs:{trackBy:"trackBy",dataSource:"dataSource",multiTemplateDataRows:[2,"multiTemplateDataRows","multiTemplateDataRows",e.L39],fixedLayout:[2,"fixedLayout","fixedLayout",e.L39]},outputs:{contentChanged:"contentChanged"},exportAs:["cdkTable"],features:[e.Jv_([{provide:P,useExisting:i},{provide:k.sL,useClass:k.xn},{provide:Ee,useClass:dt},{provide:Ne,useValue:null}]),e.GFd],ngContentSelectors:so,decls:5,vars:2,consts:[["role","rowgroup"],["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(o,n){1&o&&(e.NAR(ro),e.SdG(0),e.SdG(1,1),e.DNE(2,co,1,0)(3,lo,7,0)(4,ho,4,0)),2&o&&(e.R7$(2),e.vxM(n._isServer?2:-1),e.R7$(),e.vxM(n._isNativeHtmlTable?3:4))},dependencies:[Be,Ge,Le,je],styles:[".cdk-table-fixed-layout{table-layout:fixed}"],encapsulation:2})}return i})();function ve(i,r){return i.concat(Array.from(r))}function ht(i,r){const t=r.toUpperCase();let o=i.viewContainer.element.nativeElement;for(;o;){const n=1===o.nodeType?o.nodeName:null;if(n===t)return o;if("TABLE"===n)break;o=o.parentNode}return null}let Co=(()=>{class i{static \u0275fac=function(o){return new(o||i)};static \u0275mod=e.$C({type:i});static \u0275inj=e.G2t({imports:[O.E9]})}return i})();var se=l(4572);const vo=[[["caption"]],[["colgroup"],["col"]],"*"],bo=["caption","colgroup, col","*"];function yo(i,r){1&i&&e.SdG(0,2)}function wo(i,r){1&i&&(e.j41(0,"thead",0),e.eu8(1,1),e.k0s(),e.j41(2,"tbody",2),e.eu8(3,3)(4,4),e.k0s(),e.j41(5,"tfoot",0),e.eu8(6,5),e.k0s())}function ko(i,r){1&i&&e.eu8(0,1)(1,3)(2,4)(3,5)}let ut=(()=>{class i{static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["mat-table","recycleRows",""],["table","mat-table","","recycleRows",""]],features:[e.Jv_([{provide:k.sL,useClass:k.DQ}])]})}return i})(),pt=(()=>{class i extends Ce{stickyCssClass="mat-mdc-table-sticky";needsPositionStickyOnElement=!1;static \u0275fac=(()=>{let t;return function(n){return(t||(t=e.xGo(i)))(n||i)}})();static \u0275cmp=e.VBU({type:i,selectors:[["mat-table"],["table","mat-table",""]],hostAttrs:[1,"mat-mdc-table","mdc-data-table__table"],hostVars:2,hostBindings:function(o,n){2&o&&e.AVh("mdc-table-fixed-layout",n.fixedLayout)},exportAs:["matTable"],features:[e.Jv_([{provide:Ce,useExisting:i},{provide:P,useExisting:i},{provide:Ee,useClass:dt},{provide:k.sL,useClass:k.xn},{provide:Ne,useValue:null}]),e.Vt3],ngContentSelectors:bo,decls:5,vars:2,consts:[["role","rowgroup"],["headerRowOutlet",""],["role","rowgroup",1,"mdc-data-table__content"],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(o,n){1&o&&(e.NAR(vo),e.SdG(0),e.SdG(1,1),e.DNE(2,yo,1,0)(3,wo,7,0)(4,ko,4,0)),2&o&&(e.R7$(2),e.vxM(n._isServer?2:-1),e.R7$(),e.vxM(n._isNativeHtmlTable?3:4))},dependencies:[Be,Ge,Le,je],styles:[".mat-mdc-table-sticky{position:sticky !important}mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}.mat-mdc-table{min-width:100%;border:0;border-spacing:0;table-layout:auto;white-space:normal;background-color:var(--mat-table-background-color, var(--mat-sys-surface))}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell{text-align:right}.mdc-data-table__cell,.mdc-data-table__header-cell{padding:0 16px}.mat-mdc-header-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-header-container-height, 56px);color:var(--mat-table-header-headline-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-table-header-headline-font, var(--mat-sys-title-small-font, Roboto, sans-serif));line-height:var(--mat-table-header-headline-line-height, var(--mat-sys-title-small-line-height));font-size:var(--mat-table-header-headline-size, var(--mat-sys-title-small-size, 14px));font-weight:var(--mat-table-header-headline-weight, var(--mat-sys-title-small-weight, 500))}.mat-mdc-row{height:var(--mat-table-row-item-container-height, 52px);color:var(--mat-table-row-item-label-text-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)))}.mat-mdc-row,.mdc-data-table__content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-table-row-item-label-text-font, var(--mat-sys-body-medium-font, Roboto, sans-serif));line-height:var(--mat-table-row-item-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-table-row-item-label-text-size, var(--mat-sys-body-medium-size, 14px));font-weight:var(--mat-table-row-item-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-footer-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-footer-container-height, 52px);color:var(--mat-table-row-item-label-text-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-table-footer-supporting-text-font, var(--mat-sys-body-medium-font, Roboto, sans-serif));line-height:var(--mat-table-footer-supporting-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-table-footer-supporting-text-size, var(--mat-sys-body-medium-size, 14px));font-weight:var(--mat-table-footer-supporting-text-weight, var(--mat-sys-body-medium-weight));letter-spacing:var(--mat-table-footer-supporting-text-tracking, var(--mat-sys-body-medium-tracking))}.mat-mdc-header-cell{border-bottom-color:var(--mat-table-row-item-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, 0.12)));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-header-headline-tracking, var(--mat-sys-title-small-tracking));font-weight:inherit;line-height:inherit;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mat-mdc-header-cell{text-align:right}.mdc-data-table__row:last-child>.mat-mdc-header-cell{border-bottom:none}.mat-mdc-cell{border-bottom-color:var(--mat-table-row-item-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, 0.12)));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-row-item-label-text-tracking, var(--mat-sys-body-medium-tracking));line-height:inherit}.mdc-data-table__row:last-child>.mat-mdc-cell{border-bottom:none}.mat-mdc-footer-cell{letter-spacing:var(--mat-table-row-item-label-text-tracking, var(--mat-sys-body-medium-tracking))}mat-row.mat-mdc-row,mat-header-row.mat-mdc-header-row,mat-footer-row.mat-mdc-footer-row{border-bottom:none}.mat-mdc-table tbody,.mat-mdc-table tfoot,.mat-mdc-table thead,.mat-mdc-cell,.mat-mdc-footer-cell,.mat-mdc-header-row,.mat-mdc-row,.mat-mdc-footer-row,.mat-mdc-table .mat-mdc-header-cell{background:inherit}.mat-mdc-table mat-header-row.mat-mdc-header-row,.mat-mdc-table mat-row.mat-mdc-row,.mat-mdc-table mat-footer-row.mat-mdc-footer-cell{height:unset}mat-header-cell.mat-mdc-header-cell,mat-cell.mat-mdc-cell,mat-footer-cell.mat-mdc-footer-cell{align-self:stretch}"],encapsulation:2})}return i})(),Ve=(()=>{class i extends q{static \u0275fac=(()=>{let t;return function(n){return(t||(t=e.xGo(i)))(n||i)}})();static \u0275dir=e.FsC({type:i,selectors:[["","matCellDef",""]],features:[e.Jv_([{provide:q,useExisting:i}]),e.Vt3]})}return i})(),$e=(()=>{class i extends K{static \u0275fac=(()=>{let t;return function(n){return(t||(t=e.xGo(i)))(n||i)}})();static \u0275dir=e.FsC({type:i,selectors:[["","matHeaderCellDef",""]],features:[e.Jv_([{provide:K,useExisting:i}]),e.Vt3]})}return i})(),Xe=(()=>{class i extends A{get name(){return this._name}set name(t){this._setNameInput(t)}_updateColumnCssClassName(){super._updateColumnCssClassName(),this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`)}static \u0275fac=(()=>{let t;return function(n){return(t||(t=e.xGo(i)))(n||i)}})();static \u0275dir=e.FsC({type:i,selectors:[["","matColumnDef",""]],inputs:{name:[0,"matColumnDef","name"]},features:[e.Jv_([{provide:A,useExisting:i},{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:i}]),e.Vt3]})}return i})(),Ue=(()=>{class i extends Te{static \u0275fac=(()=>{let t;return function(n){return(t||(t=e.xGo(i)))(n||i)}})();static \u0275dir=e.FsC({type:i,selectors:[["mat-header-cell"],["th","mat-header-cell",""]],hostAttrs:["role","columnheader",1,"mat-mdc-header-cell","mdc-data-table__header-cell"],features:[e.Vt3]})}return i})(),Ye=(()=>{class i extends Ie{static \u0275fac=(()=>{let t;return function(n){return(t||(t=e.xGo(i)))(n||i)}})();static \u0275dir=e.FsC({type:i,selectors:[["mat-cell"],["td","mat-cell",""]],hostAttrs:[1,"mat-mdc-cell","mdc-data-table__cell"],features:[e.Vt3]})}return i})(),_t=(()=>{class i extends ae{static \u0275fac=(()=>{let t;return function(n){return(t||(t=e.xGo(i)))(n||i)}})();static \u0275dir=e.FsC({type:i,selectors:[["","matHeaderRowDef",""]],inputs:{columns:[0,"matHeaderRowDef","columns"],sticky:[2,"matHeaderRowDefSticky","sticky",e.L39]},features:[e.Jv_([{provide:ae,useExisting:i}]),e.GFd,e.Vt3]})}return i})(),ft=(()=>{class i extends fe{static \u0275fac=(()=>{let t;return function(n){return(t||(t=e.xGo(i)))(n||i)}})();static \u0275dir=e.FsC({type:i,selectors:[["","matRowDef",""]],inputs:{columns:[0,"matRowDefColumns","columns"],when:[0,"matRowDefWhen","when"]},features:[e.Jv_([{provide:fe,useExisting:i}]),e.Vt3]})}return i})(),gt=(()=>{class i extends Oe{static \u0275fac=(()=>{let t;return function(n){return(t||(t=e.xGo(i)))(n||i)}})();static \u0275cmp=e.VBU({type:i,selectors:[["mat-header-row"],["tr","mat-header-row",""]],hostAttrs:["role","row",1,"mat-mdc-header-row","mdc-data-table__header-row"],exportAs:["matHeaderRow"],features:[e.Jv_([{provide:Oe,useExisting:i}]),e.Vt3],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(o,n){1&o&&e.eu8(0,0)},dependencies:[N],encapsulation:2})}return i})(),Ct=(()=>{class i extends Ae{static \u0275fac=(()=>{let t;return function(n){return(t||(t=e.xGo(i)))(n||i)}})();static \u0275cmp=e.VBU({type:i,selectors:[["mat-row"],["tr","mat-row",""]],hostAttrs:["role","row",1,"mat-mdc-row","mdc-data-table__row"],exportAs:["matRow"],features:[e.Jv_([{provide:Ae,useExisting:i}]),e.Vt3],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(o,n){1&o&&e.eu8(0,0)},dependencies:[N],encapsulation:2})}return i})(),vt=(()=>{class i extends ge{_contentClassName="mat-mdc-no-data-row";static \u0275fac=(()=>{let t;return function(n){return(t||(t=e.xGo(i)))(n||i)}})();static \u0275dir=e.FsC({type:i,selectors:[["ng-template","matNoDataRow",""]],features:[e.Jv_([{provide:ge,useExisting:i}]),e.Vt3]})}return i})(),Io=(()=>{class i{static \u0275fac=function(o){return new(o||i)};static \u0275mod=e.$C({type:i});static \u0275inj=e.G2t({imports:[y.yE,Co,y.yE]})}return i})();class Fo extends k.qS{_data;_renderData=new L.t([]);_filter=new L.t("");_internalPageChanges=new R.B;_renderChangesSubscription=null;filteredData;get data(){return this._data.value}set data(r){r=Array.isArray(r)?r:[],this._data.next(r),this._renderChangesSubscription||this._filterData(r)}get filter(){return this._filter.value}set filter(r){this._filter.next(r),this._renderChangesSubscription||this._filterData(this.data)}get sort(){return this._sort}set sort(r){this._sort=r,this._updateChangeSubscription()}_sort;get paginator(){return this._paginator}set paginator(r){this._paginator=r,this._updateChangeSubscription()}_paginator;sortingDataAccessor=(r,t)=>{const o=r[t];if((0,X.o1)(o)){const n=Number(o);return n<9007199254740991?n:o}return o};sortData=(r,t)=>{const o=t.active,n=t.direction;return o&&""!=n?r.sort((a,s)=>{let d=this.sortingDataAccessor(a,o),h=this.sortingDataAccessor(s,o);const p=typeof d,f=typeof h;p!==f&&("number"===p&&(d+=""),"number"===f&&(h+=""));let m=0;return null!=d&&null!=h?d>h?m=1:d{const o=t.trim().toLowerCase();return Object.values(r).some(n=>`${n}`.toLowerCase().includes(o))};constructor(r=[]){super(),this._data=new L.t(r),this._updateChangeSubscription()}_updateChangeSubscription(){const r=this._sort?(0,z.h)(this._sort.sortChange,this._sort.initialized):(0,U.of)(null),t=this._paginator?(0,z.h)(this._paginator.page,this._internalPageChanges,this._paginator.initialized):(0,U.of)(null),n=(0,se.z)([this._data,this._filter]).pipe((0,W.T)(([d])=>this._filterData(d))),a=(0,se.z)([n,r]).pipe((0,W.T)(([d])=>this._orderData(d))),s=(0,se.z)([a,t]).pipe((0,W.T)(([d])=>this._pageData(d)));this._renderChangesSubscription?.unsubscribe(),this._renderChangesSubscription=s.subscribe(d=>this._renderData.next(d))}_filterData(r){return this.filteredData=null==this.filter||""===this.filter?r:r.filter(t=>this.filterPredicate(t,this.filter)),this.paginator&&this._updatePaginator(this.filteredData.length),this.filteredData}_orderData(r){return this.sort?this.sortData(r.slice(),this.sort):r}_pageData(r){if(!this.paginator)return r;const t=this.paginator.pageIndex*this.paginator.pageSize;return r.slice(t,t+this.paginator.pageSize)}_updatePaginator(r){Promise.resolve().then(()=>{const t=this.paginator;if(t&&(t.length=r,t.pageIndex>0)){const o=Math.ceil(t.length/t.pageSize)-1||0,n=Math.min(t.pageIndex,o);n!==t.pageIndex&&(t.pageIndex=n,this._internalPageChanges.next())}})}connect(){return this._renderChangesSubscription||this._updateChangeSubscription(),this._renderData}disconnect(){this._renderChangesSubscription?.unsubscribe(),this._renderChangesSubscription=null}}var Z=l(2168),G=l(8141),Oo=l(3294),Po=l(1524),Ao=l(9625);let No=(()=>{class i{transform(t){return{id:t}}static{this.\u0275fac=function(o){return new(o||i)}}static{this.\u0275pipe=e.EJ8({name:"PathologyCohortSlideToSlideDescriptorPipe",type:i,pure:!0})}}return i})(),Go=(()=>{class i{transform(t,o){return o?{series:o.dicomUri,cohortName:t.name}:{}}static{this.\u0275fac=function(o){return new(o||i)}}static{this.\u0275pipe=e.EJ8({name:"ToViewerParamsPipe",type:i,pure:!0})}}return i})();var bt=l(9183);function Bo(i,r){1&i&&(e.j41(0,"div"),e.EFF(1,"Loading..."),e.k0s())}function jo(i,r){if(1&i&&(e.j41(0,"div"),e.EFF(1),e.k0s()),2&i){const t=e.XpG();e.R7$(),e.SpI("Loading ",t.title,"...")}}let Lo=(()=>{class i{constructor(){this.title=""}static{this.\u0275fac=function(o){return new(o||i)}}static{this.\u0275cmp=e.VBU({type:i,selectors:[["busy-overlay"]],inputs:{title:"title"},decls:4,vars:3,consts:[[1,"busy-overlay"],["color","primary","mode","indeterminate",1,"mc-busy-overlay-spinner",3,"diameter"],[4,"ngIf"]],template:function(o,n){1&o&&(e.j41(0,"div",0),e.nrm(1,"mat-progress-spinner",1),e.DNE(2,Bo,2,0,"div",2)(3,jo,2,1,"div",2),e.k0s()),2&o&&(e.R7$(),e.Y8G("diameter",70),e.R7$(),e.Y8G("ngIf",!n.title),e.R7$(),e.Y8G("ngIf",n.title))},dependencies:[bt.D6,bt.LG,C.MD,C.bT],styles:[".busy-overlay[_ngcontent-%COMP%]{align-content:center;background-color:#00000080;display:grid;grid-row-gap:1em;height:100%;justify-items:center;position:absolute;text-align:center;width:100%;z-index:9999}"]})}}return i})();var u=l(9417),g=l(5351),Y=l(2639),H=l(9423);function Vo(i,r){1&i&&(e.j41(0,"mat-error"),e.EFF(1," Display name is required. "),e.k0s())}let $o=(()=>{class i{constructor(t,o,n){this.cohortService=t,this.dialogService=o,this.snackBar=n,this.name=new u.MJ(`${this.cohortService.getSelectedCohortDisplayName()} - Clone`,u.k0.required),this.description=new u.MJ(this.cohortService.getSelectedCohortDescription()),this.okDisabled=!1,this.destroy$=new ne.m}ngOnDestroy(){this.destroy$.next(""),this.destroy$.complete()}cancel(){this.dialogService.close()}clone(){if(this.name.hasError("required"))return;this.okDisabled=!0;const t=new M.um;t.duration=2e3,this.snackBar.open("Cloning cohort...","",t),this.cohortService.copyCohort(this.name.getRawValue(),this.description.getRawValue()??void 0).pipe((0,_.Q)(this.destroy$),(0,G.M)(o=>{o?this.dialogService.close():(this.okDisabled=!1,this.snackBar.dismiss())})).subscribe()}static{this.\u0275fac=function(o){return new(o||i)(e.rXU(Y.Do),e.rXU(H.o),e.rXU(M.UG))}}static{this.\u0275cmp=e.VBU({type:i,selectors:[["dialog-cohort-clone"]],decls:19,vars:4,consts:[["mat-dialog-title",""],["mat-dialog-content",""],["matInput","",3,"formControl"],[4,"ngIf"],["matInput","","rows","5",3,"formControl"],["mat-dialog-actions",""],["mat-stroked-button","","color","primary","type","button",3,"click"],["mat-flat-button","","color","primary","type","button",3,"click","disabled"]],template:function(o,n){1&o&&(e.j41(0,"div",0),e.EFF(1,"Clone Cohort"),e.k0s(),e.j41(2,"div",1)(3,"div")(4,"mat-form-field")(5,"mat-label"),e.EFF(6,"New cohort name"),e.k0s(),e.nrm(7,"input",2),e.DNE(8,Vo,2,0,"mat-error",3),e.k0s()(),e.j41(9,"div")(10,"mat-form-field")(11,"mat-label"),e.EFF(12,"New cohort description"),e.k0s(),e.nrm(13,"textarea",4),e.k0s()()(),e.j41(14,"div",5)(15,"button",6),e.bIt("click",function(){return n.cancel()}),e.EFF(16,"Cancel"),e.k0s(),e.j41(17,"button",7),e.bIt("click",function(){return n.clone()}),e.EFF(18," Clone "),e.k0s()()),2&o&&(e.R7$(7),e.Y8G("formControl",n.name),e.R7$(),e.Y8G("ngIf",n.name.hasError("required")),e.R7$(5),e.Y8G("formControl",n.description),e.R7$(4),e.Y8G("disabled",n.okDisabled))},dependencies:[g.hM,g.BI,g.E7,g.Yi,u.YN,u.me,u.BC,u.X1,u.l_,v.RG,v.rl,v.nJ,v.TL,E.fS,E.fg,w.Hl,w.$z,C.MD,C.bT],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:space-between}.mat-mdc-form-field[_ngcontent-%COMP%]{display:grid}"]})}}return i})();var yt=l(980),He=l(4119);const Xo=["input"],Uo=["formField"],Yo=["*"];class wt{source;value;constructor(r,t){this.source=r,this.value=t}}const Ho={provide:u.kq,useExisting:(0,e.Rfq)(()=>Dt),multi:!0},kt=new e.nKC("MatRadioGroup"),Qo=new e.nKC("mat-radio-default-options",{providedIn:"root",factory:function zo(){return{color:"accent",disabledInteractive:!1}}});let Dt=(()=>{class i{_changeDetector=(0,e.WQX)(e.gRc);_value=null;_name=(0,e.WQX)(T.g7).getId("mat-radio-group-");_selected=null;_isInitialized=!1;_labelPosition="after";_disabled=!1;_required=!1;_buttonChanges;_controlValueAccessorChangeFn=()=>{};onTouched=()=>{};change=new e.bkB;_radios;color;get name(){return this._name}set name(t){this._name=t,this._updateRadioButtonNames()}get labelPosition(){return this._labelPosition}set labelPosition(t){this._labelPosition="before"===t?"before":"after",this._markRadiosForCheck()}get value(){return this._value}set value(t){this._value!==t&&(this._value=t,this._updateSelectedRadioFromValue(),this._checkSelectedRadioButton())}_checkSelectedRadioButton(){this._selected&&!this._selected.checked&&(this._selected.checked=!0)}get selected(){return this._selected}set selected(t){this._selected=t,this.value=t?t.value:null,this._checkSelectedRadioButton()}get disabled(){return this._disabled}set disabled(t){this._disabled=t,this._markRadiosForCheck()}get required(){return this._required}set required(t){this._required=t,this._markRadiosForCheck()}get disabledInteractive(){return this._disabledInteractive}set disabledInteractive(t){this._disabledInteractive=t,this._markRadiosForCheck()}_disabledInteractive=!1;constructor(){}ngAfterContentInit(){this._isInitialized=!0,this._buttonChanges=this._radios.changes.subscribe(()=>{this.selected&&!this._radios.find(t=>t===this.selected)&&(this._selected=null)})}ngOnDestroy(){this._buttonChanges?.unsubscribe()}_touch(){this.onTouched&&this.onTouched()}_updateRadioButtonNames(){this._radios&&this._radios.forEach(t=>{t.name=this.name,t._markForCheck()})}_updateSelectedRadioFromValue(){this._radios&&(null===this._selected||this._selected.value!==this._value)&&(this._selected=null,this._radios.forEach(o=>{o.checked=this.value===o.value,o.checked&&(this._selected=o)}))}_emitChangeEvent(){this._isInitialized&&this.change.emit(new wt(this._selected,this._value))}_markRadiosForCheck(){this._radios&&this._radios.forEach(t=>t._markForCheck())}writeValue(t){this.value=t,this._changeDetector.markForCheck()}registerOnChange(t){this._controlValueAccessorChangeFn=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this.disabled=t,this._changeDetector.markForCheck()}static \u0275fac=function(o){return new(o||i)};static \u0275dir=e.FsC({type:i,selectors:[["mat-radio-group"]],contentQueries:function(o,n,a){if(1&o&&e.wni(a,Qe,5),2&o){let s;e.mGM(s=e.lsd())&&(n._radios=s)}},hostAttrs:["role","radiogroup",1,"mat-mdc-radio-group"],inputs:{color:"color",name:"name",labelPosition:"labelPosition",value:"value",selected:"selected",disabled:[2,"disabled","disabled",e.L39],required:[2,"required","required",e.L39],disabledInteractive:[2,"disabledInteractive","disabledInteractive",e.L39]},outputs:{change:"change"},exportAs:["matRadioGroup"],features:[e.Jv_([Ho,{provide:kt,useExisting:i}]),e.GFd]})}return i})(),Qe=(()=>{class i{_elementRef=(0,e.WQX)(e.aKT);_changeDetector=(0,e.WQX)(e.gRc);_focusMonitor=(0,e.WQX)(T.FN);_radioDispatcher=(0,e.WQX)(k.zP);_defaultOptions=(0,e.WQX)(Qo,{optional:!0});_ngZone=(0,e.WQX)(e.SKi);_renderer=(0,e.WQX)(e.sFG);_uniqueId=(0,e.WQX)(T.g7).getId("mat-radio-");_cleanupClick;id=this._uniqueId;name;ariaLabel;ariaLabelledby;ariaDescribedby;disableRipple=!1;tabIndex=0;get checked(){return this._checked}set checked(t){this._checked!==t&&(this._checked=t,t&&this.radioGroup&&this.radioGroup.value!==this.value?this.radioGroup.selected=this:!t&&this.radioGroup&&this.radioGroup.value===this.value&&(this.radioGroup.selected=null),t&&this._radioDispatcher.notify(this.id,this.name),this._changeDetector.markForCheck())}get value(){return this._value}set value(t){this._value!==t&&(this._value=t,null!==this.radioGroup&&(this.checked||(this.checked=this.radioGroup.value===t),this.checked&&(this.radioGroup.selected=this)))}get labelPosition(){return this._labelPosition||this.radioGroup&&this.radioGroup.labelPosition||"after"}set labelPosition(t){this._labelPosition=t}_labelPosition;get disabled(){return this._disabled||null!==this.radioGroup&&this.radioGroup.disabled}set disabled(t){this._setDisabled(t)}get required(){return this._required||this.radioGroup&&this.radioGroup.required}set required(t){this._required=t}get color(){return this._color||this.radioGroup&&this.radioGroup.color||this._defaultOptions&&this._defaultOptions.color||"accent"}set color(t){this._color=t}_color;get disabledInteractive(){return this._disabledInteractive||null!==this.radioGroup&&this.radioGroup.disabledInteractive}set disabledInteractive(t){this._disabledInteractive=t}_disabledInteractive;change=new e.bkB;radioGroup;get inputId(){return`${this.id||this._uniqueId}-input`}_checked=!1;_disabled;_required;_value=null;_removeUniqueSelectionListener=()=>{};_previousTabIndex;_inputElement;_rippleTrigger;_noopAnimations;_injector=(0,e.WQX)(e.zZn);constructor(){(0,e.WQX)(Ze.l).load(y.Ah);const t=(0,e.WQX)(kt,{optional:!0}),o=(0,e.WQX)(e.bc$,{optional:!0}),n=(0,e.WQX)(new e.ES_("tabindex"),{optional:!0});this.radioGroup=t,this._noopAnimations="NoopAnimations"===o,this._disabledInteractive=this._defaultOptions?.disabledInteractive??!1,n&&(this.tabIndex=(0,e.Udg)(n,0))}focus(t,o){o?this._focusMonitor.focusVia(this._inputElement,o,t):this._inputElement.nativeElement.focus(t)}_markForCheck(){this._changeDetector.markForCheck()}ngOnInit(){this.radioGroup&&(this.checked=this.radioGroup.value===this._value,this.checked&&(this.radioGroup.selected=this),this.name=this.radioGroup.name),this._removeUniqueSelectionListener=this._radioDispatcher.listen((t,o)=>{t!==this.id&&o===this.name&&(this.checked=!1)})}ngDoCheck(){this._updateTabIndex()}ngAfterViewInit(){this._updateTabIndex(),this._focusMonitor.monitor(this._elementRef,!0).subscribe(t=>{!t&&this.radioGroup&&this.radioGroup._touch()}),this._ngZone.runOutsideAngular(()=>{this._cleanupClick=this._renderer.listen(this._inputElement.nativeElement,"click",this._onInputClick)})}ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring(this._elementRef),this._removeUniqueSelectionListener()}_emitChangeEvent(){this.change.emit(new wt(this,this._value))}_isRippleDisabled(){return this.disableRipple||this.disabled}_onInputInteraction(t){if(t.stopPropagation(),!this.checked&&!this.disabled){const o=this.radioGroup&&this.value!==this.radioGroup.value;this.checked=!0,this._emitChangeEvent(),this.radioGroup&&(this.radioGroup._controlValueAccessorChangeFn(this.value),o&&this.radioGroup._emitChangeEvent())}}_onTouchTargetClick(t){this._onInputInteraction(t),(!this.disabled||this.disabledInteractive)&&this._inputElement?.nativeElement.focus()}_setDisabled(t){this._disabled!==t&&(this._disabled=t,this._changeDetector.markForCheck())}_onInputClick=t=>{this.disabled&&this.disabledInteractive&&t.preventDefault()};_updateTabIndex(){const t=this.radioGroup;let o;if(o=t&&t.selected&&!this.disabled?t.selected===this?this.tabIndex:-1:this.tabIndex,o!==this._previousTabIndex){const n=this._inputElement?.nativeElement;n&&(n.setAttribute("tabindex",o+""),this._previousTabIndex=o,(0,e.mal)(()=>{queueMicrotask(()=>{t&&t.selected&&t.selected!==this&&document.activeElement===n&&(t.selected?._inputElement.nativeElement.focus(),document.activeElement===n&&this._inputElement.nativeElement.blur())})},{injector:this._injector}))}}static \u0275fac=function(o){return new(o||i)};static \u0275cmp=e.VBU({type:i,selectors:[["mat-radio-button"]],viewQuery:function(o,n){if(1&o&&(e.GBs(Xo,5),e.GBs(Uo,7,e.aKT)),2&o){let a;e.mGM(a=e.lsd())&&(n._inputElement=a.first),e.mGM(a=e.lsd())&&(n._rippleTrigger=a.first)}},hostAttrs:[1,"mat-mdc-radio-button"],hostVars:19,hostBindings:function(o,n){1&o&&e.bIt("focus",function(){return n._inputElement.nativeElement.focus()}),2&o&&(e.BMQ("id",n.id)("tabindex",null)("aria-label",null)("aria-labelledby",null)("aria-describedby",null),e.AVh("mat-primary","primary"===n.color)("mat-accent","accent"===n.color)("mat-warn","warn"===n.color)("mat-mdc-radio-checked",n.checked)("mat-mdc-radio-disabled",n.disabled)("mat-mdc-radio-disabled-interactive",n.disabledInteractive)("_mat-animation-noopable",n._noopAnimations))},inputs:{id:"id",name:"name",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],disableRipple:[2,"disableRipple","disableRipple",e.L39],tabIndex:[2,"tabIndex","tabIndex",t=>null==t?0:(0,e.Udg)(t)],checked:[2,"checked","checked",e.L39],value:"value",labelPosition:"labelPosition",disabled:[2,"disabled","disabled",e.L39],required:[2,"required","required",e.L39],color:"color",disabledInteractive:[2,"disabledInteractive","disabledInteractive",e.L39]},outputs:{change:"change"},exportAs:["matRadioButton"],features:[e.GFd],ngContentSelectors:Yo,decls:13,vars:17,consts:[["formField",""],["input",""],["mat-internal-form-field","",3,"labelPosition"],[1,"mdc-radio"],[1,"mat-mdc-radio-touch-target",3,"click"],["type","radio",1,"mdc-radio__native-control",3,"change","id","checked","disabled","required"],[1,"mdc-radio__background"],[1,"mdc-radio__outer-circle"],[1,"mdc-radio__inner-circle"],["mat-ripple","",1,"mat-radio-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mat-ripple-element","mat-radio-persistent-ripple"],[1,"mdc-label",3,"for"]],template:function(o,n){if(1&o){const a=e.RV6();e.NAR(),e.j41(0,"div",2,0)(2,"div",3)(3,"div",4),e.bIt("click",function(d){return e.eBV(a),e.Njj(n._onTouchTargetClick(d))}),e.k0s(),e.j41(4,"input",5,1),e.bIt("change",function(d){return e.eBV(a),e.Njj(n._onInputInteraction(d))}),e.k0s(),e.j41(6,"div",6),e.nrm(7,"div",7)(8,"div",8),e.k0s(),e.j41(9,"div",9),e.nrm(10,"div",10),e.k0s()(),e.j41(11,"label",11),e.SdG(12),e.k0s()()}2&o&&(e.Y8G("labelPosition",n.labelPosition),e.R7$(2),e.AVh("mdc-radio--disabled",n.disabled),e.R7$(2),e.Y8G("id",n.inputId)("checked",n.checked)("disabled",n.disabled&&!n.disabledInteractive)("required",n.required),e.BMQ("name",n.name)("value",n.value)("aria-label",n.ariaLabel)("aria-labelledby",n.ariaLabelledby)("aria-describedby",n.ariaDescribedby)("aria-disabled",n.disabled&&n.disabledInteractive?"true":null),e.R7$(5),e.Y8G("matRippleTrigger",n._rippleTrigger.nativeElement)("matRippleDisabled",n._isRippleDisabled())("matRippleCentered",!0),e.R7$(2),e.Y8G("for",n.inputId))},dependencies:[y.r6,y.tO],styles:['.mat-mdc-radio-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-radio-button .mdc-radio{display:inline-block;position:relative;flex:0 0 auto;box-sizing:content-box;width:20px;height:20px;cursor:pointer;will-change:opacity,transform,border-color,color;padding:calc((var(--mdc-radio-state-layer-size, 40px) - 20px)/2)}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:not([disabled]):not(:focus)~.mdc-radio__background::before{opacity:.04;transform:scale(1)}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:not([disabled])~.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-hover-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-hover-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio:active .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-pressed-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mdc-radio:active .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio:active .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-pressed-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio__background{display:inline-block;position:relative;box-sizing:border-box;width:20px;height:20px}.mat-mdc-radio-button .mdc-radio__background::before{position:absolute;transform:scale(0, 0);border-radius:50%;opacity:0;pointer-events:none;content:"";transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);width:var(--mdc-radio-state-layer-size, 40px);height:var(--mdc-radio-state-layer-size, 40px);top:calc(-1*(var(--mdc-radio-state-layer-size, 40px) - 20px)/2);left:calc(-1*(var(--mdc-radio-state-layer-size, 40px) - 20px)/2)}.mat-mdc-radio-button .mdc-radio__outer-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;border-width:2px;border-style:solid;border-radius:50%;transition:border-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-radio-button .mdc-radio__inner-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;transform:scale(0, 0);border-width:10px;border-style:solid;border-radius:50%;transition:transform 90ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-radio-button .mdc-radio__native-control{position:absolute;margin:0;padding:0;opacity:0;top:0;right:0;left:0;cursor:inherit;z-index:1;width:var(--mdc-radio-state-layer-size, 40px);height:var(--mdc-radio-state-layer-size, 40px)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background{transition:opacity 90ms cubic-bezier(0, 0, 0.2, 1),transform 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__outer-circle{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle{transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:focus+.mdc-radio__background::before{transform:scale(1);opacity:.12;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 1),transform 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-disabled-unselected-icon-color, var(--mat-sys-on-surface));opacity:var(--mdc-radio-disabled-unselected-icon-opacity, 0.38)}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background{cursor:default}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-disabled-selected-icon-color, var(--mat-sys-on-surface));opacity:var(--mdc-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:focus:checked+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio__native-control:enabled:focus:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-selected-focus-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle{transform:scale(0.5);transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled{pointer-events:auto}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-disabled-unselected-icon-color, var(--mat-sys-on-surface));opacity:var(--mdc-radio-disabled-unselected-icon-opacity, 0.38)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled:hover .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled:hover .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:checked:focus+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:checked:focus+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-disabled-selected-icon-color, var(--mat-sys-on-surface));opacity:var(--mdc-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__background::before,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__outer-circle,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__inner-circle{transition:none !important}.mat-mdc-radio-button .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button.mat-mdc-radio-checked .mat-ripple-element,.mat-mdc-radio-button.mat-mdc-radio-checked .mdc-radio__background::before{background-color:var(--mat-radio-checked-ripple-color, var(--mat-sys-primary))}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mat-ripple-element,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mat-internal-form-field{color:var(--mat-radio-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-radio-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-radio-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-radio-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-radio-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-radio-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-radio-button .mdc-radio--disabled+label{color:var(--mat-radio-disabled-label-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-radio-button .mat-radio-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:50%}.mat-mdc-radio-button .mat-radio-ripple .mat-ripple-element{opacity:.14}.mat-mdc-radio-button .mat-radio-ripple::before{border-radius:50%}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:focus:enabled:not(:checked)~.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-focus-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button.cdk-focused .mat-focus-indicator::before{content:""}.mat-mdc-radio-disabled{cursor:default;pointer-events:none}.mat-mdc-radio-disabled.mat-mdc-radio-disabled-interactive{pointer-events:auto}.mat-mdc-radio-touch-target{position:absolute;top:50%;left:50%;height:48px;width:48px;transform:translate(-50%, -50%);display:var(--mat-radio-touch-target-display, block)}[dir=rtl] .mat-mdc-radio-touch-target{left:auto;right:50%;transform:translate(50%, -50%)}'],encapsulation:2,changeDetection:0})}return i})(),Wo=(()=>{class i{static \u0275fac=function(o){return new(o||i)};static \u0275mod=e.$C({type:i});static \u0275inj=e.G2t({imports:[y.yE,y.pZ,Qe,y.yE]})}return i})();var qo=l(2024);function Ko(i,r){1&i&&(e.j41(0,"div"),e.EFF(1,"Create New Cohort"),e.k0s())}function Zo(i,r){1&i&&(e.j41(0,"div"),e.EFF(1,"Append Slides To Cohort"),e.k0s())}function Jo(i,r){1&i&&(e.j41(0,"div"),e.EFF(1,"Edit Cohort"),e.k0s())}function ei(i,r){1&i&&(e.j41(0,"mat-error"),e.EFF(1," Display name is required. "),e.k0s())}function ti(i,r){if(1&i&&(e.j41(0,"mat-form-field",8)(1,"mat-label"),e.EFF(2,"Cohort name"),e.k0s(),e.nrm(3,"input",9),e.DNE(4,ei,2,0,"mat-error",1),e.k0s()),2&i){const t=e.XpG();e.R7$(3),e.Y8G("formControl",t.displayName),e.R7$(),e.Y8G("ngIf",t.displayName.hasError("required"))}}function oi(i,r){if(1&i&&(e.j41(0,"mat-form-field",8)(1,"mat-label"),e.EFF(2,"Cohort description"),e.k0s(),e.nrm(3,"textarea",10),e.k0s()),2&i){const t=e.XpG();e.R7$(3),e.Y8G("formControl",t.description)}}function ii(i,r){if(1&i){const t=e.RV6();e.j41(0,"div")(1,"div",11),e.EFF(2,"Add to cohort using:"),e.k0s(),e.j41(3,"mat-radio-group",12),e.mxI("ngModelChange",function(n){e.eBV(t);const a=e.XpG();return e.DH7(a.idType,n)||(a.idType=n),e.Njj(n)}),e.j41(4,"mat-radio-button",13),e.EFF(5,"Patient IDs"),e.k0s(),e.j41(6,"mat-radio-button",14),e.EFF(7,"Case IDs"),e.k0s(),e.j41(8,"mat-radio-button",15),e.EFF(9,"Slide IDs"),e.k0s()()()}if(2&i){const t=e.XpG();e.R7$(3),e.R50("ngModel",t.idType)}}function ni(i,r){1&i&&(e.j41(0,"mat-error"),e.EFF(1," IDs are required. "),e.k0s())}function ai(i,r){if(1&i&&(e.j41(0,"mat-error"),e.EFF(1),e.k0s()),2&i){const t=e.XpG(2);e.R7$(),e.SpI(" Cannot parse invalid characters: ",null==t.commaSeparatedIds.errors?null:t.commaSeparatedIds.errors.invalidChars," ")}}function ri(i,r){if(1&i&&(e.j41(0,"mat-error"),e.EFF(1),e.k0s()),2&i){const t=e.XpG(2);e.R7$(),e.SpI(" No data found for IDs: ",null==t.commaSeparatedIds.errors?null:t.commaSeparatedIds.errors.badIds," ")}}function si(i,r){if(1&i){const t=e.RV6();e.j41(0,"mat-form-field",16)(1,"mat-label"),e.EFF(2,"Comma-separated list of IDs"),e.k0s(),e.j41(3,"textarea",17),e.bIt("input",function(){e.eBV(t);const n=e.XpG();return e.Njj(n.forceUppercaseConditionally())}),e.k0s(),e.j41(4,"button",18),e.bIt("click",function(){e.eBV(t);const n=e.XpG();return e.Njj(n.toggleCaplockIds())}),e.j41(5,"mat-icon"),e.EFF(6,"keyboard_capslock"),e.k0s()(),e.DNE(7,ni,2,0,"mat-error",1)(8,ai,2,1,"mat-error",1)(9,ri,2,1,"mat-error",1),e.k0s()}if(2&i){const t=e.XpG();e.R7$(3),e.Y8G("formControl",t.commaSeparatedIds),e.R7$(),e.AVh("caplock-lowercase-icon",!t.caplockIds),e.R7$(3),e.Y8G("ngIf",t.commaSeparatedIds.hasError("required")),e.R7$(),e.Y8G("ngIf",t.commaSeparatedIds.hasError("invalidChars")),e.R7$(),e.Y8G("ngIf",t.commaSeparatedIds.hasError("badIds"))}}function ci(i,r){1&i&&(e.qex(0),e.EFF(1," Create "),e.bVm())}function di(i,r){1&i&&(e.qex(0),e.EFF(1," Append "),e.bVm())}function li(i,r){1&i&&(e.qex(0),e.EFF(1," Update "),e.bVm())}const St=`${He.c.ID_VALIDATOR}${He.c.ID_DELIMITER}`,mi=new RegExp(`[${He.c.ID_DELIMITER}]+`,"g"),ui=new RegExp(`^[${St}]+$`,"g"),pi=new RegExp(`[^${St}]`,"g");var I=function(i){return i[i.ALL=0]="ALL",i[i.SLIDES=1]="SLIDES",i[i.NAME_DESCRIPTION=2]="NAME_DESCRIPTION",i}(I||{});let ze=(()=>{class i{constructor(t,o,n,a,s){this.cohortService=t,this.dialogService=o,this.searchService=n,this.snackBar=a,this.data=s,this.caplockIds=!0,this.displayName=new u.MJ("",u.k0.required),this.description=new u.MJ(""),this.idType="slideId",this.commaSeparatedIds=new u.MJ("",p=>{const f=p.value??"";if(f.length&&!ui.test(f)){const m=[...new Set([...f.matchAll(pi)].map(b=>b[0]))].join(", ");return m?{invalidChars:m}:null}return 0===this.getIdsFromText(f).length?{required:this.editMode}:null}),this.badIds=[],this.editMode=I.ALL,this.editModeType=I,this.modifyCohortLoading=!1,this.hasDisplayNameError=!1,this.hasIdsError=!1,this.destroyed$=new ne.m(1),this.editMode=s?.editMode??I.ALL;const{displayName:d,description:h}=this.data??{};d&&this.displayName.patchValue(d),h&&this.description.patchValue(h)}ngOnDestroy(){this.destroyed$.next(!0),this.destroyed$.complete()}modifyCohort(){if((this.editMode===I.ALL||this.editMode===I.NAME_DESCRIPTION)&&this.displayName.hasError("required"))return this.displayName.updateValueAndValidity(),void this.displayName.markAsTouched();if(this.editMode!==I.NAME_DESCRIPTION){if(this.editMode===I.ALL||this.editMode===I.SLIDES){if(this.commaSeparatedIds.updateValueAndValidity(),this.commaSeparatedIds.hasError("required")||this.commaSeparatedIds.hasError("invalidChars"))return void this.commaSeparatedIds.markAsTouched();const t=this.commaSeparatedIds.value??"";this.modifyCohortLoading=!0,this.commaSeparatedIds.setErrors(null),this.validateIds(this.getIdsFromText(t)).pipe((0,_.Q)(this.destroyed$),(0,ke.n)(o=>(this.snackBar.open(this.editMode?"Appending ids...":"Creating cohort..."),this.editMode?this.appendIdsToCohort(o):this.createCohort(o))),(0,yt.j)(()=>{this.modifyCohortLoading=!1})).subscribe()}}else this.modifyCohortDisplayNameAndDescription(this.displayName.value??"",this.description.value??"").subscribe()}modifyCohortDisplayNameAndDescription(t,o){return this.modifyCohortLoading=!0,this.snackBar.open("Saving display name and description..."),this.cohortService.updateCohortDisplayNameAndDescription(t,o).pipe((0,_.Q)(this.destroyed$),(0,G.M)(n=>{n?(this.snackBar.open("Display name and description saved."),this.cohortService.reloadSelectedCohort(),this.dialogService.close()):this.snackBar.dismiss()}),(0,yt.j)(()=>{this.modifyCohortLoading=!1}))}createCohort(t){return this.cohortService.createCohort(this.displayName.getRawValue(),t.flatMap(o=>o.slideIds).map(o=>o.slideId),this.description.getRawValue()??void 0).pipe((0,_.Q)(this.destroyed$),(0,G.M)(o=>{this.snackBar.dismiss(),o&&(this.dialogService.close(),this.cohortService.loadAllCohorts(),this.cohortService.routeToCohort(o.name))}))}appendIdsToCohort(t){return this.cohortService.addSlidesToCohort(this.cohortService.getSelectedCohortName(),t.flatMap(o=>o.slideIds).map(o=>o.slideId)).pipe((0,_.Q)(this.destroyed$),(0,G.M)(o=>{o&&this.dialogService.close()}))}validateIds(t){return t.length?(this.snackBar.open("Validating ids..."),this.searchService.getSlideDicomPathFromListOfRecordIds(t,this.idType).pipe((0,_.Q)(this.destroyed$),(0,W.T)(o=>{const n=this.computeBadIds(o);return n.length?(this.commaSeparatedIds.setErrors({badIds:n.join(", ")}),void(this.modifyCohortLoading=!1)):o}),(0,B.p)(o=>void 0!==o&&o?.length>0))):(0,U.of)([])}toggleCaplockIds(){return this.caplockIds=!this.caplockIds,this.forceUppercaseConditionally(),this.caplockIds}forceUppercaseConditionally(){const t=this.commaSeparatedIds.getRawValue()??"";return this.commaSeparatedIds.patchValue(this.caplockIds?t.toUpperCase():t),this.commaSeparatedIds.getRawValue()??""}cancel(){this.dialogService.close()}computeBadIds(t){return t.filter(n=>0===n.slideIds.length).map(n=>n.recordId)}getIdsFromText(t){return t?t.split(mi).filter(o=>""!==o):[]}static{this.\u0275fac=function(o){return new(o||i)(e.rXU(Y.Do),e.rXU(H.o),e.rXU(qo.S),e.rXU(M.UG),e.rXU(g.Vh,8))}}static{this.\u0275cmp=e.VBU({type:i,selectors:[["dialog-cohort-create"]],decls:16,vars:12,consts:[["mat-dialog-title",""],[4,"ngIf"],["mat-dialog-content",""],["appearance","fill",4,"ngIf"],["class","id-text-area","appearance","fill",4,"ngIf"],["mat-dialog-actions",""],["mat-stroked-button","","color","primary","data-qa","cancel-button",3,"mat-dialog-close"],["mat-flat-button","","color","primary","data-qa","create-button","type","button",3,"click","disabled"],["appearance","fill"],["matInput","","data-qa","name-input",3,"formControl"],["matInput","","rows","3",3,"formControl"],["id","id-type-radio-label"],["aria-labelledby","id-type-radio-label",1,"radio-group",3,"ngModelChange","ngModel"],["value","patientId"],["value","caseId"],["value","slideId"],["appearance","fill",1,"id-text-area"],["matInput","","data-qa","ids-input","rows","3",3,"input","formControl"],["aria-label","Toggle id caplock","mat-icon-button","","matSuffix","",1,"caplock-icon",3,"click"]],template:function(o,n){1&o&&(e.j41(0,"div",0),e.DNE(1,Ko,2,0,"div",1)(2,Zo,2,0,"div",1)(3,Jo,2,0,"div",1),e.k0s(),e.j41(4,"div",2),e.DNE(5,ti,5,2,"mat-form-field",3)(6,oi,4,1,"mat-form-field",3)(7,ii,10,1,"div",1)(8,si,10,6,"mat-form-field",4),e.k0s(),e.j41(9,"div",5)(10,"button",6),e.EFF(11," Cancel "),e.k0s(),e.j41(12,"button",7),e.bIt("click",function(){return n.modifyCohort()}),e.DNE(13,ci,2,0,"ng-container",1)(14,di,2,0,"ng-container",1)(15,li,2,0,"ng-container",1),e.k0s()()),2&o&&(e.R7$(),e.Y8G("ngIf",n.editMode===n.editModeType.ALL),e.R7$(),e.Y8G("ngIf",n.editMode===n.editModeType.SLIDES),e.R7$(),e.Y8G("ngIf",n.editMode===n.editModeType.NAME_DESCRIPTION),e.R7$(2),e.Y8G("ngIf",n.editMode===n.editModeType.ALL||n.editMode===n.editModeType.NAME_DESCRIPTION),e.R7$(),e.Y8G("ngIf",n.editMode===n.editModeType.ALL||n.editMode===n.editModeType.NAME_DESCRIPTION),e.R7$(),e.Y8G("ngIf",n.editMode===n.editModeType.ALL||n.editMode===n.editModeType.SLIDES),e.R7$(),e.Y8G("ngIf",n.editMode===n.editModeType.ALL||n.editMode===n.editModeType.SLIDES),e.R7$(2),e.Y8G("mat-dialog-close",!1),e.R7$(2),e.Y8G("disabled",n.modifyCohortLoading),e.R7$(),e.Y8G("ngIf",n.editMode===n.editModeType.ALL),e.R7$(),e.Y8G("ngIf",n.editMode===n.editModeType.SLIDES),e.R7$(),e.Y8G("ngIf",n.editMode===n.editModeType.NAME_DESCRIPTION))},dependencies:[g.hM,g.tx,g.BI,g.E7,g.Yi,v.RG,v.rl,v.nJ,v.TL,v.yw,Q.m_,Q.An,u.YN,u.me,u.BC,u.vS,u.X1,u.l_,Wo,Dt,Qe,E.fS,E.fg,w.Hl,w.$z,w.iY,C.MD,C.bT],styles:[".caplock-lowercase-icon[_ngcontent-%COMP%]{color:#d9d9d9}mat-form-field[_ngcontent-%COMP%] .caplock-icon[_ngcontent-%COMP%]{font-size:2em}.mat-mdc-dialog-content[_ngcontent-%COMP%]{display:grid}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:space-between}.radio-group[_ngcontent-%COMP%]{display:grid} .id-text-area .mat-mdc-form-field-icon-suffix{align-self:end}"]})}}return i})();function _i(i,r){1&i&&(e.j41(0,"mat-error"),e.EFF(1," Display name is required. "),e.k0s())}let fi=(()=>{class i{constructor(t,o,n){this.cohortService=t,this.dialogService=o,this.snackBar=n,this.description=new u.MJ(this.cohortService.getSelectedCohortDescription()),this.name=new u.MJ(`${this.cohortService.getSelectedCohortDisplayName()} - De-ID`,u.k0.required),this.deIdDisabled=!1}cancel(){this.dialogService.close()}deId(){this.name.hasError("required")||(this.deIdDisabled=!0,this.snackBar.open("Requesting de-identified copy..."),this.cohortService.deIdCohort(this.name.getRawValue(),this.description.getRawValue()??void 0).pipe((0,G.M)(t=>{if(t){const o=new M.um;o.duration=2e3,this.snackBar.open("Request for de-identififed copy received and being processed.","",o)}else this.deIdDisabled=!1})).subscribe(),this.dialogService.close())}static{this.\u0275fac=function(o){return new(o||i)(e.rXU(Y.Do),e.rXU(H.o),e.rXU(M.UG))}}static{this.\u0275cmp=e.VBU({type:i,selectors:[["dialog-cohort-de-id"]],decls:25,vars:4,consts:[["mat-dialog-title",""],["mat-dialog-content",""],[1,"vertical-pad"],["matInput","",3,"formControl"],[4,"ngIf"],["matInput","","rows","5",3,"formControl"],["mat-dialog-actions",""],["mat-stroked-button","","color","primary","type","button",3,"click"],["mat-flat-button","","color","primary","type","button",3,"click","disabled"]],template:function(o,n){1&o&&(e.j41(0,"div",0),e.EFF(1,"De-ID Cohort"),e.k0s(),e.j41(2,"div",1)(3,"div",2),e.EFF(4," A copy of the selected cohort would undergo a de-identification process. The de-identified data will be stored in a dedicated storage provisioned by your administrator. The copied cohort will be given a new name and description and is accessible via this application after the lengthy de-identification process is complete. "),e.k0s(),e.j41(5,"div")(6,"strong"),e.EFF(7,"Warning:"),e.k0s(),e.EFF(8," You are about to de-identify data that may contain Protected Health Information (PHI). This process removes PHI from metadata, which often contains such information, but it does not remove PHI from any scanned images. Before sharing, review each image to ensure no PHI is visible, and verify that the metadata is free of PHI. "),e.k0s(),e.j41(9,"mat-form-field")(10,"mat-label"),e.EFF(11,"New cohort name"),e.k0s(),e.nrm(12,"input",3),e.DNE(13,_i,2,0,"mat-error",4),e.k0s(),e.j41(14,"mat-form-field")(15,"mat-label"),e.EFF(16,"New cohort description"),e.k0s(),e.nrm(17,"textarea",5),e.k0s(),e.j41(18,"div",2),e.EFF(19," Once the de-identification process starts it will run in the background and cannot be aborted. Check back with this application later to see it in your cohort list. "),e.k0s()(),e.j41(20,"div",6)(21,"button",7),e.bIt("click",function(){return n.cancel()}),e.EFF(22,"Cancel"),e.k0s(),e.j41(23,"button",8),e.bIt("click",function(){return n.deId()}),e.EFF(24," De-ID "),e.k0s()()),2&o&&(e.R7$(12),e.Y8G("formControl",n.name),e.R7$(),e.Y8G("ngIf",n.name.hasError("required")),e.R7$(4),e.Y8G("formControl",n.description),e.R7$(6),e.Y8G("disabled",n.deIdDisabled))},dependencies:[u.YN,u.me,u.BC,g.hM,g.BI,g.E7,g.Yi,u.X1,u.l_,v.RG,v.rl,v.nJ,v.TL,C.MD,C.bT,E.fS,E.fg,w.Hl,w.$z],styles:[".mat-mdc-dialog-content[_ngcontent-%COMP%]{display:grid;grid-row-gap:1em}.mat-mdc-form-field[_ngcontent-%COMP%]{display:grid}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:space-between}"]})}}return i})(),gi=(()=>{class i{constructor(t,o,n){this.cohortService=t,this.dialogService=o,this.router=n,this.deleteDisabled=!1}getCohortDisplayName(){return this.cohortService.getSelectedCohortDisplayName()}delete(){this.deleteDisabled=!0,this.cohortService.deleteSelectedCohort().subscribe(t=>{t&&(this.dialogService.close(),this.cohortService.loadAllCohorts(),this.cohortService.unselectCohort(),this.router.navigateByUrl("/cohorts")),this.deleteDisabled=!1})}cancel(){this.dialogService.close()}static{this.\u0275fac=function(o){return new(o||i)(e.rXU(Y.Do),e.rXU(H.o),e.rXU(Z.Ix))}}static{this.\u0275cmp=e.VBU({type:i,selectors:[["dialog-cohort-delete"]],decls:9,vars:2,consts:[["mat-dialog-title",""],["mat-dialog-content",""],["mat-dialog-actions",""],["mat-stroked-button","","color","primary","data-qa","cancel-button","type","button",3,"click"],["mat-stroked-button","","color","warn","data-qa","delete-button","type","button",3,"click","disabled"]],template:function(o,n){1&o&&(e.j41(0,"div",0),e.EFF(1,"Delete Cohort"),e.k0s(),e.j41(2,"div",1),e.EFF(3),e.k0s(),e.j41(4,"div",2)(5,"button",3),e.bIt("click",function(){return n.cancel()}),e.EFF(6," Cancel "),e.k0s(),e.j41(7,"button",4),e.bIt("click",function(){return n.delete()}),e.EFF(8," Delete "),e.k0s()()),2&o&&(e.R7$(3),e.SpI('Are you sure you want to delete cohort "',n.getCohortDisplayName(),'"?'),e.R7$(4),e.Y8G("disabled",n.deleteDisabled))},dependencies:[g.hM,g.BI,g.E7,g.Yi,w.Hl,w.$z,u.YN,C.MD],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:space-between}"]})}}return i})();function Ci(i,r){1&i&&(e.j41(0,"mat-error"),e.EFF(1," Path must begin with gs:// "),e.k0s())}function vi(i,r){1&i&&(e.j41(0,"p")(1,"strong"),e.EFF(2,"Warning:"),e.k0s(),e.EFF(3," You are about to export images that may contain PHI. Deidentification only removes PHI from certain metadata fields but does not remove metadata at the pixel level. Please review metadata and pixel data for each image to ensure no PHI is visible prior to sharing."),e.k0s())}let bi=(()=>{class i{constructor(t,o,n){this.dialogService=t,this.cohortService=o,this.snackBar=n,this.gcsPath=new u.MJ("",u.k0.pattern(/^gs:\/\//)),this.exportDisabled=!1,this.showDeIdWarning=this.cohortService.selectedCohortInfo$.value?.isDeid}cancel(){this.dialogService.close()}export(){this.gcsPath.hasError("pattern")||(this.exportDisabled=!0,this.snackBar.open("Requesting export..."),this.cohortService.exportCohort(this.gcsPath.getRawValue()).subscribe(t=>{if(t){this.dialogService.close();const o=new M.um;o.duration=2e3,this.snackBar.open("Export request received and being processed.","",o)}else this.exportDisabled=!1,this.snackBar.dismiss()}))}static{this.\u0275fac=function(o){return new(o||i)(e.rXU(H.o),e.rXU(Y.Do),e.rXU(M.UG))}}static{this.\u0275cmp=e.VBU({type:i,selectors:[["dialog-cohort-export"]],decls:19,vars:4,consts:[["mat-dialog-title",""],["mat-dialog-content",""],[1,"vertical-pad"],["matInput","","placeholder","Ex. gs://path/to/dest/folder",3,"formControl"],[4,"ngIf"],["mat-dialog-actions",""],["mat-stroked-button","","color","primary","type","button",3,"click"],["mat-flat-button","","color","primary","type","button",3,"click","disabled"]],template:function(o,n){1&o&&(e.j41(0,"div",0),e.EFF(1,"Export Cohort to Cloud Storage"),e.k0s(),e.j41(2,"div",1)(3,"div",2),e.EFF(4," All DICOM files related to this cohort will be saved in this provided cloud storage destination. The saving will happen in the background. "),e.k0s(),e.j41(5,"div")(6,"mat-form-field")(7,"mat-label"),e.EFF(8,"Destination Cloud Storage"),e.k0s(),e.nrm(9,"input",3),e.DNE(10,Ci,2,0,"mat-error",4),e.k0s(),e.j41(11,"div",2),e.EFF(12," Note that the destination storage needs to be provisioned with the right permissions. "),e.k0s(),e.DNE(13,vi,4,0,"p",4),e.k0s()(),e.j41(14,"div",5)(15,"button",6),e.bIt("click",function(){return n.cancel()}),e.EFF(16,"Cancel"),e.k0s(),e.j41(17,"button",7),e.bIt("click",function(){return n.export()}),e.EFF(18," Export "),e.k0s()()),2&o&&(e.R7$(9),e.Y8G("formControl",n.gcsPath),e.R7$(),e.Y8G("ngIf",n.gcsPath.hasError("pattern")),e.R7$(3),e.Y8G("ngIf",n.showDeIdWarning),e.R7$(4),e.Y8G("disabled",n.exportDisabled))},dependencies:[C.MD,C.bT,g.hM,g.BI,g.E7,g.Yi,v.RG,v.rl,v.nJ,v.TL,u.YN,u.me,u.BC,u.X1,u.l_,E.fS,E.fg,w.Hl,w.$z],styles:[".mat-mdc-dialog-content[_ngcontent-%COMP%]{display:grid;grid-row-gap:1em}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:space-between}.mat-mdc-form-field[_ngcontent-%COMP%]{display:grid}"]})}}return i})();var ce=l(6471),We=l(2798);class yi{_document;_textarea;constructor(r,t){this._document=t;const o=this._textarea=this._document.createElement("textarea"),n=o.style;n.position="fixed",n.top=n.opacity="0",n.left="-999em",o.setAttribute("aria-hidden","true"),o.value=r,o.readOnly=!0,(this._document.fullscreenElement||this._document.body).appendChild(o)}copy(){const r=this._textarea;let t=!1;try{if(r){const o=this._document.activeElement;r.select(),r.setSelectionRange(0,r.value.length),t=this._document.execCommand("copy"),o&&o.focus()}}catch{}return t}destroy(){const r=this._textarea;r&&(r.remove(),this._textarea=void 0)}}let wi=(()=>{class i{_document=(0,e.WQX)(C.qQ);constructor(){}copy(t){const o=this.beginCopy(t),n=o.copy();return o.destroy(),n}beginCopy(t){return new yi(t,this._document)}static \u0275fac=function(o){return new(o||i)};static \u0275prov=e.jDH({token:i,factory:i.\u0275fac,providedIn:"root"})}return i})();var ki=l(2840),Di=l(3266),Rt=l(2073);const Si=["discardConfirmationTemplate"],Ri=i=>({user:i});function Mi(i,r){if(1&i){const t=e.RV6();e.j41(0,"button",14),e.bIt("click",function(){e.eBV(t);const n=e.XpG();return e.Njj(n.backToCohortViewer())}),e.j41(1,"mat-icon"),e.EFF(2,"arrow_back"),e.k0s()()}}function xi(i,r){if(1&i){const t=e.RV6();e.j41(0,"mat-chip-row",15),e.bIt("removed",function(){const n=e.eBV(t).$implicit,a=e.XpG();return e.Njj(a.removeEmail(n))}),e.EFF(1),e.j41(2,"button",16)(3,"mat-icon"),e.EFF(4,"cancel"),e.k0s()()()}if(2&i){const t=r.$implicit;e.R7$(),e.SpI(" ",t," ")}}function Ti(i,r){if(1&i&&(e.j41(0,"mat-option",19),e.EFF(1),e.k0s()),2&i){const t=r.$implicit,o=e.XpG(2);e.FS9("value",t),e.R7$(),e.SpI(" ",o.pathologyUserAccessRoleToLabel(t)," ")}}function Ii(i,r){1&i&&(e.j41(0,"p")(1,"strong"),e.EFF(2,"Warning:"),e.k0s(),e.EFF(3," You are about to share images that may contain PHI. Deidentification only removes PHI from the certain metadata fields but does not remove on a pixel level. Please review metadata and each image to ensure no PHI is visible on each image prior to sharing."),e.k0s())}function Ei(i,r){if(1&i){const t=e.RV6();e.qex(0),e.j41(1,"mat-select",17),e.mxI("valueChange",function(n){e.eBV(t);const a=e.XpG();return e.DH7(a.shareAccessRole,n)||(a.shareAccessRole=n),e.Njj(n)}),e.DNE(2,Ti,2,2,"mat-option",18),e.k0s(),e.j41(3,"div"),e.EFF(4,"Please copy and share the link of the cohort. Email notification will not be sent "),e.DNE(5,Ii,4,0,"p",11),e.k0s(),e.bVm()}if(2&i){const t=e.XpG();e.R7$(),e.R50("value",t.shareAccessRole),e.R7$(),e.Y8G("ngForOf",t.pathologyUserRoleOptions),e.R7$(3),e.Y8G("ngIf",t.showDeIdWarning)}}function Fi(i,r){1&i&&e.eu8(0)}function Oi(i,r){if(1&i&&(e.qex(0),e.DNE(1,Fi,1,0,"ng-container",32),e.bVm()),2&i){const t=r.$implicit;e.XpG(2);const o=e.sdS(23);e.R7$(),e.Y8G("ngTemplateOutlet",o)("ngTemplateOutletContext",e.eq3(2,Ri,t))}}function Pi(i,r){1&i&&(e.j41(0,"mat-icon",33),e.EFF(1,"lock"),e.k0s())}function Ai(i,r){1&i&&(e.j41(0,"mat-icon",34),e.EFF(1,"domain"),e.k0s())}function Ni(i,r){1&i&&(e.j41(0,"div",35),e.EFF(1," Only people with access can open with the link "),e.k0s())}function Gi(i,r){1&i&&(e.j41(0,"div",35),e.EFF(1," Anyone with access to this viewer can view "),e.k0s())}function Bi(i,r){if(1&i){const t=e.RV6();e.j41(0,"mat-select",36),e.mxI("valueChange",function(n){e.eBV(t);const a=e.XpG(2);return e.DH7(a.cohortAccess,n)||(a.cohortAccess=n),e.Njj(n)}),e.j41(1,"mat-option",19),e.EFF(2," Viewer "),e.k0s(),e.j41(3,"mat-option",19),e.EFF(4," Editor "),e.k0s()()}if(2&i){const t=e.XpG(2);e.R50("value",t.cohortAccess),e.Y8G("hideSingleSelectionIndicator",!0),e.R7$(),e.Y8G("value",t.pathologyCohortAccess.openView),e.R7$(2),e.Y8G("value",t.pathologyCohortAccess.openEdit)}}function ji(i,r){if(1&i){const t=e.RV6();e.qex(0),e.j41(1,"div",20)(2,"div",4),e.EFF(3,"People with access"),e.k0s(),e.j41(4,"div",21),e.DNE(5,Oi,2,4,"ng-container",22),e.k0s()(),e.nrm(6,"mat-divider"),e.j41(7,"div",23)(8,"div",24),e.EFF(9,"General Access"),e.k0s(),e.j41(10,"div",25),e.DNE(11,Pi,2,0,"mat-icon",26)(12,Ai,2,0,"mat-icon",27),e.j41(13,"div",28)(14,"mat-select",29),e.mxI("valueChange",function(n){e.eBV(t);const a=e.XpG();return e.DH7(a.isPublicAccess,n)||(a.isPublicAccess=n),e.Njj(n)}),e.bIt("selectionChange",function(){e.eBV(t);const n=e.XpG();return e.Njj(n.generalAccessChanged())}),e.j41(15,"mat-option",19),e.EFF(16,"Restricted "),e.k0s(),e.j41(17,"mat-option",19),e.EFF(18," Anyone with access"),e.k0s()(),e.DNE(19,Ni,2,0,"div",30)(20,Gi,2,0,"div",30),e.k0s(),e.DNE(21,Bi,5,4,"mat-select",31),e.k0s()(),e.bVm()}if(2&i){const t=e.XpG();e.R7$(5),e.Y8G("ngForOf",t.pathologyUserAccess),e.R7$(6),e.Y8G("ngIf",!t.isPublicAccess),e.R7$(),e.Y8G("ngIf",t.isPublicAccess),e.R7$(2),e.R50("value",t.isPublicAccess),e.Y8G("hideSingleSelectionIndicator",!0),e.R7$(),e.Y8G("value",!1),e.R7$(2),e.Y8G("value",!0),e.R7$(2),e.Y8G("ngIf",!t.isPublicAccess),e.R7$(),e.Y8G("ngIf",t.isPublicAccess),e.R7$(),e.Y8G("ngIf",t.isPublicAccess)}}function Li(i,r){if(1&i){const t=e.RV6();e.j41(0,"div")(1,"button",37),e.bIt("click",function(){e.eBV(t);const n=e.XpG();return e.Njj(n.backToCohortViewer())}),e.EFF(2,"Cancel"),e.k0s(),e.j41(3,"button",37),e.bIt("click",function(){e.eBV(t);const n=e.XpG();return e.Njj(n.shareEmails(n.emails,n.shareAccessRole))}),e.EFF(4," Share "),e.k0s()()}}function Vi(i,r){1&i&&(e.j41(0,"button",40),e.EFF(1," Done "),e.k0s())}function $i(i,r){if(1&i){const t=e.RV6();e.j41(0,"div",41)(1,"div",42),e.EFF(2,"Pending changes"),e.k0s(),e.j41(3,"button",37),e.bIt("click",function(){e.eBV(t);const n=e.XpG(2);return e.Njj(n.savePendingChanges())}),e.EFF(4,"Save"),e.k0s()()}}function Xi(i,r){if(1&i&&(e.qex(0),e.DNE(1,Vi,2,0,"button",38)(2,$i,5,0,"div",39),e.bVm()),2&i){const t=e.XpG();e.R7$(),e.Y8G("ngIf",!t.hasPendingChanges),e.R7$(),e.Y8G("ngIf",t.hasPendingChanges)}}function Ui(i,r){if(1&i&&(e.j41(0,"div",46),e.EFF(1),e.k0s()),2&i){const t=e.XpG().user.accessRole,o=e.XpG();e.R7$(),e.SpI(" ",o.pathologyUserAccessRoleToLabel(t)," ")}}function Yi(i,r){if(1&i){const t=e.RV6();e.j41(0,"mat-option",49),e.bIt("onSelectionChange",function(n){e.eBV(t);const a=e.XpG(2).user,s=e.XpG();return e.Njj(s.accessRoleChanged(n,a))}),e.EFF(1),e.k0s()}if(2&i){const t=r.$implicit,o=e.XpG(3);e.FS9("value",t),e.R7$(),e.SpI(" ",o.pathologyUserAccessRoleToLabel(t)," ")}}function Hi(i,r){if(1&i){const t=e.RV6();e.j41(0,"div")(1,"mat-select",19),e.DNE(2,Yi,2,2,"mat-option",47),e.nrm(3,"mat-divider"),e.j41(4,"mat-option",48),e.bIt("onSelectionChange",function(n){e.eBV(t);const a=e.XpG().user,s=e.XpG();return e.Njj(s.removeUserAccess(n,a))}),e.EFF(5," Remove access "),e.k0s()()()}if(2&i){const t=e.XpG().user.accessRole,o=e.XpG();e.R7$(),e.Y8G("value",t),e.R7$(),e.Y8G("ngForOf",o.pathologyUserRoleOptions)}}function Qi(i,r){if(1&i&&(e.j41(0,"div",43)(1,"div",44),e.EFF(2),e.k0s(),e.DNE(3,Ui,2,1,"div",45)(4,Hi,6,2,"div",11),e.k0s()),2&i){const t=r.user.userEmail,o=r.user.accessRole,n=e.XpG();e.R7$(2),e.JRh(t),e.R7$(),e.Y8G("ngIf",o===n.pathologyUserRoles.owner),e.R7$(),e.Y8G("ngIf",o!==n.pathologyUserRoles.owner)}}const de={owner:"PATHOLOGY_USER_ACCESS_ROLE_OWNER",admin:"PATHOLOGY_USER_ACCESS_ROLE_ADMIN",editor:"PATHOLOGY_USER_ACCESS_ROLE_EDITOR",viewer:"PATHOLOGY_USER_ACCESS_ROLE_VIEWER"},V={unspecified:"PATHOLOGY_COHORT_ACCESS_UNSPECIFIED",restricted:"PATHOLOGY_COHORT_ACCESS_RESTRICTED",openEdit:"PATHOLOGY_COHORT_ACCESS_OPEN_EDIT",openView:"PATHOLOGY_COHORT_ACCESS_OPEN_VIEW_ONLY"},zi=/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;let Wi=(()=>{class i{get pathologyUserAccess(){return this.userAccessDisplayList}set pathologyUserAccess(t){const o=(t=JSON.parse(JSON.stringify(t))).findIndex(a=>"PATHOLOGY_USER_ACCESS_ROLE_OWNER"===a.accessRole),n=t.splice(o,1);t.sort((a,s)=>(a.userEmail??"").localeCompare(s.userEmail??"")),t=[...n,...t],this.userAccessDisplayList=t}get emails(){return this.emailList}set emails(t){const o=t.filter(n=>zi.test(n));this.emailList=o,this.validatePendingChanges()}get cohortAccess(){return this.cohortAccessLabel}set cohortAccess(t){this.cohortAccessLabel=t,this.validatePendingChanges()}constructor(t,o,n,a,s,d,h,p,f){this.clipboard=t,this.cohortService=o,this.dialogService=n,this.logService=a,this.snackBar=s,this.windowService=d,this.router=h,this.userService=p,this.dialogRef=f,this.hasPendingChanges=!1,this.isPublicAccess=!1,this.modifiedUsers=new Set,this.originalCohortAccess=V.unspecified,this.shareAccessRole=de.viewer,this.showDeIdWarning=this.cohortService.selectedCohortInfo$.value?.isDeid,this.pathologyUserRoles=de,this.pathologyCohortAccess=V,this.separatorKeysCodes=[S.Fm,S.KE],this.pathologyUserRoleOptions=[de.admin,de.editor,de.viewer],this.cohortAccessLabel=V.unspecified,this.currentUser="",this.destroy$=new ne.m,this.emailList=[],this.userAccessDisplayList=[],this.userService.getCurrentUser$().pipe((0,_.Q)(this.destroy$)).subscribe(m=>{this.currentUser=m??""}),o.selectedPathologyCohort$.pipe((0,_.Q)(this.destroy$),(0,G.M)(m=>{m&&this.selectedCohortChanged(m)})).subscribe()}ngOnDestroy(){this.destroy$.next(""),this.destroy$.complete()}accessRoleChanged(t,o){if(!t.isUserInput||!o.userEmail||!o.accessRole)return;o.accessRole=t.source.value;const a=this.originalPathologyUserAccessRoleByEmail.get(o.userEmail);a&&o.accessRole===a?this.modifiedUsers.delete(o.userEmail):this.modifiedUsers.add(o.userEmail),this.validatePendingChanges()}addEmail(t){const o=(t.value||"").trim().toLocaleLowerCase();if(o){const n=o.split(" ");this.emails=[...this.emails,...n]}t.chipInput.clear()}backToCohortViewer(){this.emails=[]}closeDialog(){this.hasPendingChanges?this.dialogService.confirm("Discard unsaved changes?").afterClosed().pipe((0,_.Q)(this.destroy$),(0,G.M)(t=>{t&&this.dialogRef.close()})).subscribe():this.dialogRef.close()}copyLink(){if(!this.selectedCohort||!this.selectedCohort.name)return;const t=this.selectedCohort.name,o=this.windowService.getWindowOrigin();if(!o)return;const n=`${o}/cohorts?cohortName=${t}`,a=this.clipboard.copy(n),s=new M.um;s.duration=2e3,a||this.logService.error({name:"Error copying share link",message:JSON.stringify({url:n}),stack:"share_cohort_dialog"}),this.snackBar.open(a?"URL copied.":"URL copy failed.","",s)}generalAccessChanged(){this.cohortAccess=this.isPublicAccess?V.openView:V.restricted}pathologyUserAccessRoleToLabel(t){return this.cohortService.pathologyUserAccessRoleToLabel(t)}removeEmail(t){const o=this.emails.indexOf(t);o>=0&&this.emails.splice(o,1)}removeUserAccess(t,o){if(!t.isUserInput||!o.userEmail)return;const n=this.pathologyUserAccess.findIndex(({userEmail:a})=>a===o.userEmail);n>=0&&(this.pathologyUserAccess.splice(n,1),this.originalPathologyUserAccessRoleByEmail.has(o.userEmail)&&(this.modifiedUsers.add(o.userEmail),this.validatePendingChanges()))}savePendingChanges(){this.selectedCohort&&this.cohortService.shareCohort({name:this.selectedCohort.name,userAccess:this.pathologyUserAccess,cohortAccess:this.cohortAccess}).subscribe(o=>{this.pathologyUserAccess=o.userAccess??[],this.validateCurretUserHasAccess(this.pathologyUserAccess)})}selectedCohortChanged(t){this.selectedCohort=t,this.pathologyUserAccess=this.selectedCohort.userAccess??[],this.selectedCohort?.cohortMetadata?.cohortAccess&&(this.originalCohortAccess=this.selectedCohort.cohortMetadata.cohortAccess,this.cohortAccess=this.originalCohortAccess===V.unspecified?V.restricted:this.originalCohortAccess,this.isPublicAccess=this.cohortAccess!==V.restricted),this.originalPathologyUserAccessRoleByEmail=new Map(this.pathologyUserAccess.map(o=>[o.userEmail,o.accessRole])),this.modifiedUsers.clear(),this.validatePendingChanges()}shareEmails(t,o){if(!this.selectedCohort)return;const n=t.map(s=>({userEmail:s,accessRole:o})),a={name:this.selectedCohort.name,userAccess:[...this.selectedCohort.userAccess??[],...n]};this.cohortService.shareCohort(a).subscribe(s=>{this.pathologyUserAccess=s.userAccess??[],this.backToCohortViewer()})}routeToHome(){this.dialogRef.close(),this.cohortService.unselectCohort(),this.cohortService.reloadCohortInfos(),this.router.navigateByUrl("/")}validateCurretUserHasAccess(t){t.find(({userEmail:n})=>n===this.currentUser)||this.routeToHome()}validatePendingChanges(){this.hasPendingChanges=this.originalCohortAccess!==this.cohortAccess||this.modifiedUsers.size>0||this.emails.length>0}static{this.\u0275fac=function(o){return new(o||i)(e.rXU(wi),e.rXU(Y.Do),e.rXU(H.o),e.rXU(ki.K),e.rXU(M.UG),e.rXU(Di.s),e.rXU(Z.Ix),e.rXU(Rt.D),e.rXU(g.CP))}}static{this.\u0275cmp=e.VBU({type:i,selectors:[["dialog-cohort-share"]],viewQuery:function(o,n){if(1&o&&e.GBs(Si,7),2&o){let a;e.mGM(a=e.lsd())&&(n.discardConfirmationTemplate=a.first)}},features:[e.Jv_([{provide:We.JO,useValue:{overlayPanelClass:"mat-primary"}}])],decls:24,vars:16,consts:[["emailGrid",""],["cohortUserAccessTemplate",""],["mat-dialog-title",""],["mat-icon-button","","aria-label","Go back to cohort viewer",3,"click",4,"ngIf"],[1,"mat-h3"],["mat-icon-button","","aria-label","Close cohort dialog",3,"click"],["mat-dialog-content",""],["appearance","fill",1,"email-input"],["aria-label","Add space separated emails"],[3,"removed",4,"ngFor","ngForOf"],["placeholder","Add space separated emails",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes","matChipInputAddOnBlur"],[4,"ngIf"],["mat-dialog-actions",""],["mat-stroked-button","","color","primary",3,"click"],["mat-icon-button","","aria-label","Go back to cohort viewer",3,"click"],[3,"removed"],["matChipRemove",""],[3,"valueChange","value"],[3,"value",4,"ngFor","ngForOf"],[3,"value"],[1,"people-access-content"],[1,"cohort-users"],[4,"ngFor","ngForOf"],[1,"general-access-section"],[1,"mat-h3","general-access-title"],[1,"general-access-content"],["class","material-icons-outlined lock-icon",4,"ngIf"],["class","domain-icon",4,"ngIf"],[1,"alt"],[1,"general-access-selector",3,"valueChange","selectionChange","value","hideSingleSelectionIndicator"],["class","sub-text",4,"ngIf"],["class","general-access-open-select",3,"value","hideSingleSelectionIndicator","valueChange",4,"ngIf"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"material-icons-outlined","lock-icon"],[1,"domain-icon"],[1,"sub-text"],[1,"general-access-open-select",3,"valueChange","value","hideSingleSelectionIndicator"],["mat-flat-button","","color","primary",3,"click"],["mat-flat-button","","color","primary","mat-dialog-close","",4,"ngIf"],["class","save-section",4,"ngIf"],["mat-flat-button","","color","primary","mat-dialog-close",""],[1,"save-section"],[1,"pending-changes-label"],[1,"cohort-user-access-template"],[1,"user-email"],["class","user-role-owner",4,"ngIf"],[1,"user-role-owner"],[3,"value","onSelectionChange",4,"ngFor","ngForOf"],[3,"onSelectionChange"],[3,"onSelectionChange","value"]],template:function(o,n){if(1&o){const a=e.RV6();e.j41(0,"div",2),e.DNE(1,Mi,3,0,"button",3),e.j41(2,"div",4),e.EFF(3),e.k0s(),e.j41(4,"button",5),e.bIt("click",function(){return e.eBV(a),e.Njj(n.closeDialog())}),e.j41(5,"mat-icon"),e.EFF(6,"close"),e.k0s()()(),e.j41(7,"div",6)(8,"mat-form-field",7)(9,"mat-chip-grid",8,0),e.DNE(11,xi,5,1,"mat-chip-row",9),e.j41(12,"input",10),e.bIt("matChipInputTokenEnd",function(d){return e.eBV(a),e.Njj(n.addEmail(d))}),e.k0s()()(),e.DNE(13,Ei,6,3,"ng-container",11)(14,ji,22,10,"ng-container",11),e.k0s(),e.j41(15,"div",12)(16,"button",13),e.bIt("click",function(){return e.eBV(a),e.Njj(n.copyLink())}),e.j41(17,"mat-icon"),e.EFF(18,"link"),e.k0s(),e.EFF(19," Copy link "),e.k0s(),e.DNE(20,Li,5,0,"div",11)(21,Xi,3,2,"ng-container",11),e.k0s(),e.DNE(22,Qi,5,3,"ng-template",null,1,e.C5r)}if(2&o){const a=e.sdS(10);e.AVh("mat-dialog-add-emails-title",n.emails.length),e.R7$(),e.Y8G("ngIf",n.emails.length),e.R7$(2),e.SpI('Share "',null==n.selectedCohort||null==n.selectedCohort.cohortMetadata?null:n.selectedCohort.cohortMetadata.displayName,'"'),e.R7$(4),e.AVh("add-emails-content",n.emails.length),e.R7$(4),e.Y8G("ngForOf",n.emails),e.R7$(),e.Y8G("matChipInputFor",a)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes)("matChipInputAddOnBlur",!0),e.R7$(),e.Y8G("ngIf",n.emails.length),e.R7$(),e.Y8G("ngIf",!n.emails.length),e.R7$(),e.AVh("add-emails-actions",n.emails.length),e.R7$(5),e.Y8G("ngIf",n.emails.length),e.R7$(),e.Y8G("ngIf",!n.emails.length)}},dependencies:[C.MD,C.Sq,C.bT,C.T3,We.Ve,v.rl,We.VO,y.wT,le.w,le.q,Q.m_,Q.An,w.Hl,w.$z,w.iY,E.fS,ce.YN,ce.HW,ce.D7,ce.Zv,ce.jH,g.hM,g.tx,g.BI,g.E7,g.Yi],styles:['.add-emails-content[_ngcontent-%COMP%]{display:grid;grid-row-gap:0;grid-template-areas:"input accessRole" "description description";grid-template-columns:1fr 7em}.cohort-users[_ngcontent-%COMP%]{display:grid;grid-auto-rows:1fr;grid-gap:1em;padding:0 1em}.cohort-user-access-template[_ngcontent-%COMP%]{align-items:center;display:grid;grid-gap:2em;grid-template-columns:1fr 7em}.discard-confirmation-actions[_ngcontent-%COMP%]{justify-content:end}.general-access-section[_ngcontent-%COMP%]{padding-right:1em;padding-top:1em}.general-access-content[_ngcontent-%COMP%]{align-items:center;display:flex;grid-gap:1em}.general-access-selector[_ngcontent-%COMP%] > .mat-option[_ngcontent-%COMP%]{font-weight:700}.general-access-selector[_ngcontent-%COMP%] .mat-mdc-select-trigger{justify-content:start}.general-access-open-select[_ngcontent-%COMP%]{width:6em}.general-access-icon[_ngcontent-%COMP%], .lock-icon[_ngcontent-%COMP%], .domain-icon[_ngcontent-%COMP%]{padding:.2em;border-radius:50%}.domain-icon[_ngcontent-%COMP%]{color:#1973e8;background:#e8f0fe}.mat-h3[_ngcontent-%COMP%]{margin:0}.mat-mdc-dialog-title[_ngcontent-%COMP%]{align-items:center;display:grid;grid-template-columns:1fr min-content;margin:0;padding:1em .5em 0 1em}.mat-dialog-add-emails-title[_ngcontent-%COMP%]{grid-template-columns:min-content 1fr min-content}.mat-mdc-dialog-content.mat-mdc-dialog-content[_ngcontent-%COMP%]{align-items:baseline;display:grid;padding:1em}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{display:grid;grid-template-columns:max-content max-content;justify-content:space-between;padding:1em}.mat-form-field[_ngcontent-%COMP%]{display:block}.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mdc-chip-label-text-color: black;--mdc-chip-disabled-label-text-color: black;--mdc-chip-elevated-container-color: white;--mdc-chip-elevated-disabled-container-color: white;border:1px solid grey}mat-select[_ngcontent-%COMP%]{flex:1}mat-select[_ngcontent-%COMP%] .mat-mdc-select-value{max-width:100%;width:auto;padding-right:8px}mat-select[_ngcontent-%COMP%] .mat-mdc-select-trigger{justify-content:end}.lock-icon[_ngcontent-%COMP%]{color:#696d70;background:#e8eaed}.people-access-content[_ngcontent-%COMP%]{margin-bottom:1.5em}.people-access-content[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{padding-right:1em}.pending-changes-label[_ngcontent-%COMP%]{color:#696d70;font-size:.8em;font-style:italic}.save-section[_ngcontent-%COMP%]{align-items:baseline;display:grid;grid-template-columns:max-content min-content;grid-gap:.5em}.sub-text[_ngcontent-%COMP%]{color:#696d70}.user-email[_ngcontent-%COMP%]{font-weight:700;max-width:20em;word-break:break-all}.user-role-owner[_ngcontent-%COMP%]{justify-self:end}']})}}return i})();var qi=l(2194);const Ki=["cohortDetailsDrawer"],Zi=["pathologyCohortCaseAccordion"],Ji=["quickviewImageDialogTemplate"],Mt=i=>({cohortInfo:i}),xt=i=>({hidden:i}),en=i=>({pathologyCohortCase:i,isExpanded:!1});function tn(i,r){1&i&&e.nrm(0,"busy-overlay",38)}function on(i,r){1&i&&(e.j41(0,"div",39),e.EFF(1," Please select a cohort. "),e.k0s())}function nn(i,r){if(1&i&&(e.j41(0,"div",55),e.EFF(1),e.k0s()),2&i){const t=e.XpG(2);e.R7$(),e.SpI(" ",null==t.selectedPathologyCohort||null==t.selectedPathologyCohort.cohortMetadata?null:t.selectedPathologyCohort.cohortMetadata.description," ")}}function an(i,r){1&i&&(e.j41(0,"span",65)(1,"mat-icon"),e.EFF(2,"visibility"),e.k0s(),e.EFF(3," View only "),e.k0s())}function rn(i,r){if(1&i){const t=e.RV6();e.j41(0,"button",66,3),e.bIt("click",function(){e.eBV(t);const n=e.XpG(3);return e.Njj(n.saveCohort())}),e.j41(2,"mat-icon"),e.EFF(3,"save"),e.k0s(),e.EFF(4," Save to cohorts "),e.k0s()}if(2&i){const t=e.XpG(3);e.Y8G("disabled",t.isSavingCohort)}}function sn(i,r){if(1&i){const t=e.RV6();e.j41(0,"button",67),e.bIt("click",function(){e.eBV(t);const n=e.XpG(3);return e.Njj(n.showAppendSlidesDialog())}),e.j41(1,"mat-icon"),e.EFF(2,"add"),e.k0s(),e.EFF(3," Add slides "),e.k0s()}}function cn(i,r){if(1&i){const t=e.RV6();e.j41(0,"button",67),e.bIt("click",function(){e.eBV(t);const n=e.XpG(3);return e.Njj(n.showShareCohortDialog())}),e.j41(1,"mat-icon"),e.EFF(2,"share"),e.k0s(),e.EFF(3," Share "),e.k0s()}}function dn(i,r){if(1&i){const t=e.RV6();e.j41(0,"button",68),e.bIt("click",function(){e.eBV(t);const n=e.XpG(3);return e.Njj(n.showDeIdCohortDialog())}),e.EFF(1," De-ID "),e.k0s()}if(2&i){const t=e.XpG(3);e.Y8G("disabled",!(null!=t.selectedPathologyCohortCases&&t.selectedPathologyCohortCases.length))}}function ln(i,r){if(1&i){const t=e.RV6();e.j41(0,"button",61),e.bIt("click",function(){e.eBV(t);const n=e.XpG(3);return e.Njj(n.showEditCohortDialog())}),e.EFF(1," Edit cohort "),e.k0s()}}function hn(i,r){if(1&i){const t=e.RV6();e.j41(0,"button",61),e.bIt("click",function(){e.eBV(t);const n=e.XpG(3);return e.Njj(n.showExportCohortDialog())}),e.EFF(1," Export "),e.k0s()}}function mn(i,r){if(1&i){const t=e.RV6();e.j41(0,"button",69),e.bIt("click",function(){e.eBV(t);const n=e.XpG(3);return e.Njj(n.showDeleteCohortDialog())}),e.EFF(1," Delete "),e.k0s()}}function un(i,r){if(1&i){const t=e.RV6();e.j41(0,"button",69),e.bIt("click",function(){e.eBV(t);const n=e.XpG(3);return e.Njj(n.unsaveCohort())}),e.EFF(1," Remove from saved "),e.k0s()}}function pn(i,r){if(1&i){const t=e.RV6();e.j41(0,"div",56),e.DNE(1,an,4,0,"span",57)(2,rn,5,1,"button",58),e.nI1(3,"async"),e.nI1(4,"async"),e.DNE(5,sn,4,0,"button",59)(6,cn,4,0,"button",59),e.j41(7,"button",60)(8,"mat-icon"),e.EFF(9,"more_vert"),e.k0s()(),e.j41(10,"mat-menu",null,2)(12,"button",61),e.bIt("click",function(){e.eBV(t);const n=e.XpG(2);return e.Njj(n.showCloneCohortDialog())}),e.EFF(13," Clone "),e.k0s(),e.DNE(14,dn,2,1,"button",62)(15,ln,2,0,"button",63)(16,hn,2,0,"button",63)(17,mn,2,0,"button",64)(18,un,2,0,"button",64),e.k0s()()}if(2&i){const t=e.sdS(11),o=e.XpG(2);e.R7$(),e.Y8G("ngIf",o.isViewOnly&&o.isShared),e.R7$(),e.Y8G("ngIf",!1===o.isCohortSaved&&!e.bMT(3,10,o.loadingSelectedPathologyCohort$)&&!e.bMT(4,12,o.loadingCohortInfos$)),e.R7$(3),e.Y8G("ngIf",o.allowAppending),e.R7$(),e.Y8G("ngIf",o.allowSharing),e.R7$(),e.Y8G("matMenuTriggerFor",t),e.R7$(7),e.Y8G("ngIf",o.allowDeid),e.R7$(),e.Y8G("ngIf",o.allowEditingFields&&o.allowSharing),e.R7$(),e.Y8G("ngIf",o.allowExport),e.R7$(),e.Y8G("ngIf",o.allowDeleting),e.R7$(),e.Y8G("ngIf",o.isShared&&o.isCohortSaved)}}function _n(i,r){if(1&i&&e.nrm(0,"busy-overlay",70),2&i){const t=e.XpG(2);e.Y8G("title",(t.selectedCohortInfo.displayName||"")+" cohort")}}function fn(i,r){if(1&i){const t=e.RV6();e.j41(0,"button",72),e.bIt("click",function(){e.eBV(t);const n=e.XpG(3);return e.Njj(n.removeCases())}),e.EFF(1," Remove cases from cohort "),e.j41(2,"mat-icon"),e.EFF(3,"delete"),e.k0s()()}if(2&i){const t=e.XpG(3);e.Y8G("ngClass",e.eq3(1,xt,0===t.selectedCases.size))}}function gn(i,r){if(1&i){const t=e.RV6();e.j41(0,"button",75),e.bIt("click",function(){e.eBV(t);const n=e.XpG(3);return e.Njj(n.selectAll())}),e.j41(1,"mat-icon"),e.EFF(2),e.k0s(),e.EFF(3," Select all in view "),e.k0s()}if(2&i){const t=e.XpG(3);e.R7$(2),e.JRh(t.someCasesSelected?"indeterminate_check_box":t.allCasesSelected?"check_box":"check_box_outline_blank")}}function Cn(i,r){if(1&i){const t=e.RV6();e.j41(0,"div",71)(1,"button",72),e.bIt("click",function(){e.eBV(t);const n=e.XpG(2);return e.Njj(n.downloadSelected())}),e.EFF(2),e.j41(3,"mat-icon"),e.EFF(4,"download"),e.k0s()(),e.DNE(5,fn,4,3,"button",73)(6,gn,4,1,"button",74),e.k0s()}if(2&i){const t=e.XpG(2);e.R7$(),e.Y8G("ngClass",e.eq3(4,xt,0===t.selectedCases.size)),e.R7$(),e.SpI(" Download (",t.selectedCases.size,") selected "),e.R7$(3),e.Y8G("ngIf",t.allowRemoving),e.R7$(),e.Y8G("ngIf",null==t.selectedPathologyCohortCases?null:t.selectedPathologyCohortCases.length)}}function vn(i,r){if(1&i&&(e.nrm(0,"busy-overlay",76),e.nI1(1,"async"),e.nI1(2,"percent")),2&i){let t;const o=e.XpG(2);e.Y8G("title",o.selectedCohortInfo.displayName+" cases "+e.bMT(2,3,(null!==(t=e.bMT(1,1,o.loadingProgressSelectedPathologyCohortCases$))&&void 0!==t?t:0)/100))}}function bn(i,r){1&i&&(e.j41(0,"div",77),e.EFF(1," No images available "),e.k0s())}function yn(i,r){if(1&i&&(e.qex(0),e.EFF(1),e.bVm()),2&i){const t=e.XpG().ngIf;e.R7$(),e.SpI(" ",t.pathologyCohortCase.accessionNumber," ")}}function wn(i,r){1&i&&(e.qex(0),e.EFF(1," Unknown Case ID "),e.bVm())}function kn(i,r){1&i&&(e.j41(0,"span"),e.EFF(1,"s"),e.k0s())}function Dn(i,r){if(1&i&&(e.nrm(0,"image-viewer-quick-view",90),e.nI1(1,"DICOMUriToSlideDescriptorPipe")),2&i){const t=e.XpG().$implicit,o=e.XpG(6);e.Y8G("slideDescriptor",e.bMT(1,2,t.dicomUri))("cohortInfo",o.selectedCohortInfo)}}function Sn(i,r){if(1&i&&(e.qex(0),e.j41(1,"div",88),e.DNE(2,Dn,2,4,"image-viewer-quick-view",89),e.k0s(),e.bVm()),2&i){const t=r.$implicit;e.R7$(2),e.Y8G("ngIf",t.dicomUri)}}function Rn(i,r){if(1&i&&(e.j41(0,"div",87),e.DNE(1,Sn,3,1,"ng-container",79),e.k0s()),2&i){const t=e.XpG().ngIf;e.R7$(),e.Y8G("ngForOf",t.pathologyCohortCase.slides)}}function Mn(i,r){if(1&i){const t=e.RV6();e.j41(0,"mat-expansion-panel",81),e.bIt("opened",function(){const n=e.eBV(t).ngIf;return e.Njj(n.isExpanded=!0)}),e.j41(1,"mat-expansion-panel-header")(2,"button",82),e.bIt("click",function(n){const a=e.eBV(t).ngIf,s=e.XpG(4);return e.Njj(s.toggleSelect(n,a.pathologyCohortCase))}),e.j41(3,"mat-icon"),e.EFF(4),e.k0s()(),e.j41(5,"div")(6,"div",83)(7,"a",84),e.nI1(8,"ToViewerParamsPipe"),e.bIt("click",function(n){return e.eBV(t),e.Njj(n.stopPropagation())}),e.DNE(9,yn,2,1,"ng-container",85)(10,wn,2,0,"ng-container",85),e.k0s()(),e.j41(11,"div")(12,"span")(13,"span"),e.EFF(14),e.k0s(),e.DNE(15,kn,2,0,"span",85),e.k0s(),e.EFF(16," | "),e.j41(17,"span"),e.EFF(18),e.nI1(19,"date"),e.k0s()()()(),e.DNE(20,Rn,2,1,"div",86),e.k0s()}if(2&i){const t=r.ngIf,o=e.XpG().first,n=e.XpG(3);e.Y8G("expanded",o),e.R7$(4),e.JRh(n.selectedCases.has(t.pathologyCohortCase)?"check_box":"check_box_outline_blank"),e.R7$(3),e.AVh("inactive-link",!t.pathologyCohortCase.accessionNumber||!t.pathologyCohortCase.slides.length||t.pathologyCohortCase.failedToLoad),e.Y8G("queryParams",e.i5U(8,11,n.selectedCohortInfo,t.pathologyCohortCase.slides[0])),e.R7$(2),e.Y8G("ngIf",t.pathologyCohortCase.accessionNumber),e.R7$(),e.Y8G("ngIf",!(null!=t&&null!=t.pathologyCohortCase&&t.pathologyCohortCase.accessionNumber)),e.R7$(4),e.SpI("",t.pathologyCohortCase.slides.length," image"),e.R7$(),e.Y8G("ngIf",1!==t.pathologyCohortCase.slides.length),e.R7$(3),e.SpI(" Case date: ",n.isDate(t.pathologyCohortCase.date)?e.i5U(19,14,t.pathologyCohortCase.date,"MM/dd/yyyy"):t.pathologyCohortCase.date||"Unknown date"," "),e.R7$(2),e.Y8G("ngIf",t.isExpanded)}}function xn(i,r){if(1&i&&(e.qex(0),e.DNE(1,Mn,21,17,"mat-expansion-panel",80),e.bVm()),2&i){const t=r.$implicit;e.R7$(),e.Y8G("ngIf",e.eq3(1,en,t))}}function Tn(i,r){if(1&i&&(e.j41(0,"mat-accordion",78,4),e.DNE(2,xn,2,3,"ng-container",79),e.k0s()),2&i){const t=e.XpG(2);e.Y8G("multi",!0),e.R7$(2),e.Y8G("ngForOf",t.selectedPathologyCohortCases)}}function In(i,r){if(1&i){const t=e.RV6();e.j41(0,"div",40)(1,"div",41)(2,"div"),e.eu8(3,42),e.k0s(),e.j41(4,"div",43),e.EFF(5),e.k0s(),e.DNE(6,nn,2,1,"div",44),e.nI1(7,"async"),e.DNE(8,pn,19,14,"div",45),e.nI1(9,"async"),e.j41(10,"button",46),e.bIt("click",function(){e.eBV(t);const n=e.XpG();return e.Njj(n.closeCohortDetailsDrawer())}),e.j41(11,"mat-icon"),e.EFF(12,"close"),e.k0s()()(),e.nrm(13,"mat-divider"),e.j41(14,"div",47),e.DNE(15,_n,1,1,"busy-overlay",48),e.nI1(16,"async"),e.j41(17,"div",49),e.DNE(18,Cn,7,6,"div",50),e.nI1(19,"async"),e.k0s(),e.j41(20,"div",51),e.DNE(21,vn,3,5,"busy-overlay",52),e.nI1(22,"async"),e.DNE(23,bn,2,0,"div",53),e.nI1(24,"async"),e.DNE(25,Tn,3,2,"mat-accordion",54),e.nI1(26,"async"),e.nI1(27,"async"),e.k0s()()()}if(2&i){const t=e.XpG(),o=e.sdS(51);e.R7$(3),e.Y8G("ngTemplateOutlet",o)("ngTemplateOutletContext",e.eq3(26,Mt,t.selectedCohortInfo)),e.R7$(2),e.SpI(" ",(null==t.selectedPathologyCohort||null==t.selectedPathologyCohort.cohortMetadata?null:t.selectedPathologyCohort.cohortMetadata.displayName)||t.selectedCohortInfo.displayName," "),e.R7$(),e.Y8G("ngIf",!e.bMT(7,10,t.loadingSelectedPathologyCohort$)),e.R7$(2),e.Y8G("ngIf",!e.bMT(9,12,t.loadingSelectedPathologyCohort$)),e.R7$(7),e.Y8G("ngIf",e.bMT(16,14,t.loadingSelectedPathologyCohort$)),e.R7$(3),e.Y8G("ngIf",!e.bMT(19,16,t.loadingSelectedPathologyCohortCases$)),e.R7$(3),e.Y8G("ngIf",e.bMT(22,18,t.loadingSelectedPathologyCohortCases$)),e.R7$(2),e.Y8G("ngIf",!(null!=t.selectedPathologyCohortCases&&t.selectedPathologyCohortCases.length||e.bMT(24,20,t.loadingSelectedPathologyCohortCases$))),e.R7$(2),e.Y8G("ngIf",(null==t.selectedPathologyCohortCases?null:t.selectedPathologyCohortCases.length)&&!e.bMT(26,22,t.loadingSelectedPathologyCohortCases$)&&!e.bMT(27,24,t.loadingSelectedPathologyCohort$))}}function En(i,r){1&i&&e.nrm(0,"th",91)}function Fn(i,r){if(1&i&&(e.j41(0,"td",92),e.eu8(1,42),e.k0s()),2&i){const t=r.$implicit;e.XpG();const o=e.sdS(51);e.R7$(),e.Y8G("ngTemplateOutlet",o)("ngTemplateOutletContext",e.eq3(2,Mt,t))}}function On(i,r){1&i&&(e.j41(0,"th",93),e.EFF(1," Name "),e.k0s())}function Pn(i,r){if(1&i&&(e.j41(0,"td",92)(1,"div")(2,"div"),e.EFF(3),e.k0s(),e.j41(4,"div",94),e.EFF(5),e.k0s()()()),2&i){const t=r.$implicit;e.R7$(3),e.SpI(" ",t.displayName," "),e.R7$(2),e.SpI(" ",t.pathologyCohort.cohortMetadata.description," ")}}function An(i,r){1&i&&(e.j41(0,"th",95),e.EFF(1,"Date modified"),e.k0s())}function Nn(i,r){if(1&i&&(e.j41(0,"td",92),e.EFF(1),e.nI1(2,"date"),e.k0s()),2&i){const t=r.$implicit;e.R7$(),e.SpI(" ",e.i5U(2,1,t.pathologyCohort.cohortMetadata.updateTime,"MM/dd/yyyy")," ")}}function Gn(i,r){1&i&&(e.j41(0,"th",96),e.EFF(1," Description "),e.k0s())}function Bn(i,r){if(1&i&&(e.j41(0,"td",92),e.EFF(1),e.k0s()),2&i){const t=r.$implicit;e.R7$(),e.SpI(" ",t.pathologyCohort.cohortMetadata.description," ")}}function jn(i,r){1&i&&e.nrm(0,"tr",97)}function Ln(i,r){if(1&i){const t=e.RV6();e.j41(0,"tr",98),e.bIt("click",function(){const n=e.eBV(t).$implicit,a=e.XpG();return e.Njj(a.selectCohortInfo(n))}),e.k0s()}if(2&i){const t=r.$implicit,o=e.XpG();e.AVh("cohort-row-selected",(null==t?null:t.name)===(null==o.selectedCohortInfo?null:o.selectedCohortInfo.name))}}function Vn(i,r){1&i&&(e.j41(0,"tr")(1,"td",99)(2,"p",100),e.EFF(3,"No working"),e.k0s()()())}function $n(i,r){1&i&&(e.j41(0,"tr")(1,"td",99)(2,"p",100),e.EFF(3,"No cohorts"),e.k0s()()())}function Xn(i,r){1&i&&(e.j41(0,"mat-icon",103),e.EFF(1,"group"),e.k0s())}function Un(i,r){1&i&&(e.j41(0,"mat-icon",104),e.EFF(1,"security"),e.k0s())}function Yn(i,r){if(1&i&&e.DNE(0,Xn,2,0,"mat-icon",101)(1,Un,2,0,"mat-icon",102),2&i){const t=r.cohortInfo;e.Y8G("ngIf",t.isShared),e.R7$(),e.Y8G("ngIf",t.isDeid)}}const $={autoFocus:!1,disableClose:!1};var be=function(i){return i[i.DE_ID=0]="DE_ID",i[i.SHARED=1]="SHARED",i[i.DEFAULT=2]="DEFAULT",i}(be||{});let Hn=(()=>{class i{constructor(t,o,n,a,s,d){this.activatedRoute=t,this.cohortService=o,this.dialogService=n,this.router=a,this.userService=s,this.snackBar=d,this.destroyed$=new ne.m(1),this.loadingSelectedPathologyCohort$=new L.t(!1),this.loadingSelectedPathologyCohortCases$=new L.t(!1),this.loadingProgressSelectedPathologyCohortCases$=new L.t(0),this.loadingCohortInfos$=new L.t(!1),this.dataSource=new Fo([]),this.displayedColumns=["tags","displayName","dateModified"],this.selectedCases=new Set,this.selectedCohortInfo=void 0,this.selectedPathologyCohort=void 0,this.selectedPathologyCohortCases=[],this.allCasesSelected=!1,this.isSavingCohort=!1,this.someCasesSelected=!1,this.isViewOnly=!1,this.allowAppending=!1,this.allowRemoving=!1,this.allowDeleting=!1,this.allowEditingFields=!1,this.allowSharing=!1,this.allowDeid=!1,this.allowExport=!1,this.isShared=!1,this.isCohortSaved=!1,this.pathologyCohortSlideToSlideDescriptorPipe=new No,this.loadingSelectedPathologyCohort$=this.cohortService.loadingSelectedPathologyCohort$,this.loadingCohortInfos$=this.cohortService.loadingCohortInfos$,this.loadingSelectedPathologyCohortCases$=this.cohortService.loadingSelectedPathologyCohortCases$,this.loadingProgressSelectedPathologyCohortCases$=this.cohortService.loadingProgressSelectedPathologyCohortCases$}openQuickviewImage(t){if(!t.dicomUri)return;const o=this.pathologyCohortSlideToSlideDescriptorPipe.transform(t.dicomUri);this.dialogService.openComponentDialog(this.quickviewImageDialogTemplate,{autoFocus:!1,disableClose:!1,data:{slideDescriptor:o}}).afterClosed().subscribe(()=>{})}setupCohortData(){this.cohortService.loadAllCohorts(),this.cohortService.cohorts$.subscribe(t=>{this.dataSource.data=[],this.dataSource.data=t}),(0,se.z)([this.cohortService.selectedPathologyCohort$,this.cohortService.cohorts$]).subscribe(([t,o])=>{this.isCohortSaved=o.some(n=>n.name===t?.name)}),this.cohortService.selectedPathologyCohort$.subscribe(t=>{this.selectedPathologyCohort=t}),this.cohortService.selectedCohortInfo$.subscribe(t=>{this.selectedCohortInfo=t}),this.cohortService.selectedPathologyCohortCases$.pipe((0,_.Q)(this.destroyed$),(0,G.M)(t=>{this.resetSelectedCases(),this.selectedPathologyCohortCases=t.sort((o,n)=>(this.isDate(o.date)?new Date(o.date).getTime():0)-(this.isDate(n.date)?new Date(n.date).getTime():0)||o.accessionNumber.localeCompare(n.accessionNumber))})).subscribe(),(0,se.z)([this.cohortService.selectedPathologyCohort$.pipe((0,_.Q)(this.destroyed$),(0,B.p)(t=>void 0!==t)),this.userService.getCurrentUser$()]).pipe((0,_.Q)(this.destroyed$),(0,G.M)(([t,o])=>{t&&o?this.setAccess(t,o):this.resetAccess()})).subscribe()}resetSelectedCases(){this.selectedCases.clear(),this.allCasesSelected=!1,this.someCasesSelected=!1}downloadSelected(){const t=`Cases - ${(new Date).toLocaleDateString("en-CA")}.csv`;try{const s="data:text/csv;charset=utf-8,"+[["CaseId","DicomUris"],...[...this.selectedCases].map(p=>{const f=(p?.slides??[]).map(m=>m.dicomUri).filter(m=>!!m);return[p.accessionNumber,f.join(", ")]})].map(p=>p.join(",")).join("\n"),d=encodeURI(s),h=document.createElement("a");(0,Po.N9)(h,d),h.download=t,h.style.visibility="hidden",document.body.appendChild(h),h.click(),document.body.removeChild(h),this.snackBar.open(`Downloaded cases: ${t}`)}catch{this.snackBar.open(`Failed to downloaded cases: ${t}`)}}removeCases(){if(!this.selectedCohortInfo?.name)return;this.snackBar.open("Removing cases...");const t=[...this.selectedCases].map(o=>o.caseId).filter(o=>!!o);this.removeCasesFromCohort(this.selectedCohortInfo.name,new Set(t)),this.selectedCases.clear()}removeCasesFromCohort(t,o){this.cohortService.removeCasesFromCohort(t,[...o]).pipe((0,_.Q)(this.destroyed$)).subscribe(n=>{if(n){const a=new M.um;a.duration=2e3,this.snackBar.open("Cases removed.","",a)}else this.snackBar.dismiss()})}validateAllSelected(){return this.allCasesSelected=(this.selectedPathologyCohortCases??[]).every(t=>this.selectedCases.has(t)),this.allCasesSelected&&(this.someCasesSelected=!1),this.allCasesSelected}validateSomeSelected(){return this.someCasesSelected=(this.selectedPathologyCohortCases??[]).some(t=>this.selectedCases.has(t)),this.someCasesSelected}selectAll(){return this.validateAllSelected()?(this.selectedCases.clear(),this.allCasesSelected=!1):(this.selectedCases=new Set(this.selectedPathologyCohortCases??[]),this.allCasesSelected=!0),this.someCasesSelected=!1,this.allCasesSelected}toggleSelect(t,o){t.stopPropagation(),t.preventDefault(),this.selectedCases.has(o)?this.selectedCases.delete(o):this.selectedCases.add(o),this.validateSomeSelected(),this.validateAllSelected()}cohortFilterKeyUp(t){this.filterCohorts(t.target.value)}filterCohorts(t){this.dataSource.filter=t.trim().toLowerCase()}ngOnDestroy(){this.destroyed$.next(!0),this.destroyed$.complete()}ngOnInit(){this.setupCohortData(),this.activatedRoute.queryParams.pipe((0,_.Q)(this.destroyed$),(0,Oo.F)()).subscribe(t=>{const o=t.cohortName;o?this.cohortService.fetchPathologyCohort(o):(this.cohortService.unselectCohort(),"/cohorts"===this.router.url&&this.router.navigateByUrl("/cohorts"))})}selectCohortInfo(t){this.selectedCohortInfo?.name!==t.name?(this.selectedCohortInfo=t,this.cohortService.selectCohortInfo(t),this.cohortService.routeToCohort(t.name),this.cohortDetailsDrawer.toggle(!0)):this.cohortService.reloadSelectedCohort()}ngAfterViewInit(){this.dataSource.sortingDataAccessor=(t,o)=>this.customCohortTableSortingDataAccessor(t,o),this.dataSource.sort=this.matSort}customCohortTableSortingDataAccessor(t,o){if("tags"===o)return t.isDeid?be.DE_ID:t.isShared?be.SHARED:be.DEFAULT;if("dateModified"===o)return t.pathologyCohort.cohortMetadata?.updateTime?new Date(t.pathologyCohort.cohortMetadata.updateTime).getTime():0;const n=t[o];if((0,X.o1)(n)){const a=Number(n);return aye===o);a||this.resetAccess();const s=t?.cohortMetadata?.cohortAccess??"PATHOLOGY_COHORT_ACCESS_RESTRICTED",d="PATHOLOGY_COHORT_ACCESS_OPEN_EDIT"===s,m=!!a&&"PATHOLOGY_USER_ACCESS_ROLE_OWNER"===a.accessRole||!!a&&"PATHOLOGY_USER_ACCESS_ROLE_ADMIN"===a.accessRole,b=!!a&&"PATHOLOGY_USER_ACCESS_ROLE_EDITOR"===a.accessRole||d,D=!b&&!m&&(!!a&&"PATHOLOGY_USER_ACCESS_ROLE_VIEWER"===a.accessRole||"PATHOLOGY_COHORT_ACCESS_OPEN_VIEW_ONLY"===s);this.isViewOnly=D&&!d,this.allowAppending=(m||b)&&!n?.isExported&&!n?.isDeid,this.allowRemoving=m||b,this.allowDeleting=m,this.allowEditingFields=m||b,this.allowSharing=m,this.allowDeid=!1===n?.isDeid&&!D,this.allowExport=!D,this.isShared=n?.isShared??!1}showAppendSlidesDialog(){this.dialogService.openComponentDialog(ze,{data:{editMode:I.SLIDES},...$})}showCreateCohortDialog(){this.dialogService.openComponentDialog(ze,{data:{editMode:I.ALL},...$})}showEditCohortDialog(){this.selectedPathologyCohort?.cohortMetadata?.displayName&&this.dialogService.openComponentDialog(ze,{data:{editMode:I.NAME_DESCRIPTION,displayName:this.selectedPathologyCohort.cohortMetadata.displayName,description:this.selectedPathologyCohort.cohortMetadata.description},...$})}showCloneCohortDialog(){this.dialogService.openComponentDialog($o,$)}showDeleteCohortDialog(){this.dialogService.openComponentDialog(gi,$)}showExportCohortDialog(){this.dialogService.openComponentDialog(bi,$)}showDeIdCohortDialog(){this.dialogService.openComponentDialog(fi,$)}showShareCohortDialog(){this.dialogService.openComponentDialog(Wi,$)}reloadSelectedCohort(){this.cohortService.reloadSelectedCohort()}reloadSelectedCohortCases(){this.selectedPathologyCohort?.name&&this.cohortService.fetchPathologyCohortCases(this.selectedPathologyCohort).subscribe()}saveCohort(){this.selectedPathologyCohort&&this.selectedPathologyCohort.name&&(this.isSavingCohort=!0,this.snackBar.open("Saving cohort..."),this.cohortService.saveCohort({name:this.selectedPathologyCohort.name}).pipe((0,_.Q)(this.destroyed$)).subscribe(o=>{if(o){const n=new M.um;n.duration=2e3,this.snackBar.open("Cohort saved.","",n),this.cohortService.reloadSelectedCohort(),this.cohortService.loadAllCohorts()}else this.snackBar.dismiss();this.isSavingCohort=!1}))}unsaveCohort(){this.selectedPathologyCohort&&this.selectedPathologyCohort.name&&(this.snackBar.open("Removing cohort from your list..."),this.cohortService.unsaveCohort({name:this.selectedPathologyCohort.name}).pipe((0,_.Q)(this.destroyed$)).subscribe(o=>{if(o){const n=new M.um;n.duration=2e3,this.snackBar.open("Cohort removed.","",n),this.cohortService.reloadSelectedCohort(),this.cohortService.loadAllCohorts()}else this.snackBar.dismiss()}))}reloadCohorts(){this.cohortService.loadAllCohorts()}resetAccess(){this.isViewOnly=!1,this.allowAppending=!1,this.allowRemoving=!1,this.allowDeleting=!1,this.allowEditingFields=!1,this.allowSharing=!1,this.allowDeid=!1,this.allowExport=!1,this.isShared=!1,this.isCohortSaved=!1}static{this.\u0275fac=function(o){return new(o||i)(e.rXU(Z.nX),e.rXU(Y.Do),e.rXU(H.o),e.rXU(Z.Ix),e.rXU(Rt.D),e.rXU(M.UG))}}static{this.\u0275cmp=e.VBU({type:i,selectors:[["cohorts-page"]],viewQuery:function(o,n){if(1&o&&(e.GBs(Ki,5),e.GBs(Zi,5),e.GBs(oo,7),e.GBs(Ji,7)),2&o){let a;e.mGM(a=e.lsd())&&(n.cohortDetailsDrawer=a.first),e.mGM(a=e.lsd())&&(n.accordion=a.first),e.mGM(a=e.lsd())&&(n.matSort=a.first),e.mGM(a=e.lsd())&&(n.quickviewImageDialogTemplate=a.first)}},decls:52,vars:12,consts:[["cohortDetailsDrawer",""],["cohortInfoTagsTemplate",""],["menu","matMenu"],["save",""],["pathologyCohortCaseAccordion",""],[1,"cohort-page"],[1,"header-section"],[1,"header-title"],[1,"header-sub-title"],[1,"cohort-search-actions-section"],[1,"search-section"],["appearance","fill","color","primary"],["matPrefix",""],["labelColor","red"],["matInput","","autocomplete","off",3,"keyup"],[1,"actions-section"],["mat-stroked-button","","color","primary","matTooltip","Create cohorts",3,"click"],["mat-stroked-button","","color","primary","matTooltip","Refresh cohorts",3,"click"],[1,"table-section"],["title","cohorts",4,"ngIf"],["hasBackdrop","false"],["mode","side","position","end",3,"opened"],["class","selected-cohort-info-empty",4,"ngIf"],["class","selected-cohort-info",4,"ngIf"],["mat-table","","recycleRows","","matSort","","matSortActive","displayName","matSortDirection","asc",1,"cohorts-table",3,"dataSource"],["matColumnDef","tags"],["mat-header-cell","","mat-sort-header","","sortActionDescription","Sort by tags",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","displayName"],["mat-header-cell","","mat-sort-header","","sortActionDescription","Sort by name",4,"matHeaderCellDef"],["matColumnDef","dateModified"],["mat-header-cell","","mat-sort-header","","sortActionDescription","Sort by date modified",4,"matHeaderCellDef"],["matColumnDef","description"],["mat-header-cell","","mat-sort-header","","sortActionDescription","Sort by description",4,"matHeaderCellDef"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","","class","cohort-row",3,"cohort-row-selected","click",4,"matRowDef","matRowDefColumns"],["mat-row",""],["matNoDataRow",""],["title","cohorts"],[1,"selected-cohort-info-empty"],[1,"selected-cohort-info"],[1,"selected-cohort-info-section"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"selected-cohort-info-title"],["class","selected-cohort-info-description",4,"ngIf"],["class","selected-cohort-info-actions",4,"ngIf"],["mat-icon-button","","aria-label","Close cohort info.",3,"click"],[1,"selected-cohort-info-cases"],["class","selected-cohort-info-loading",3,"title",4,"ngIf"],[1,"cases-refresh-and-actions"],["class","cases-actions",4,"ngIf"],[1,"cohort-cases-section"],[3,"title",4,"ngIf"],["class","selected-pathology-cohort-cases-empty",4,"ngIf"],["displayMode","flat",3,"multi",4,"ngIf"],[1,"selected-cohort-info-description"],[1,"selected-cohort-info-actions"],["class","view-only-chip",4,"ngIf"],["mat-flat-button","","color","primary","class","save-button","data-qa","save-button","mat-button","",3,"disabled","click",4,"ngIf"],["mat-button","",3,"click",4,"ngIf"],["mat-icon-button","","aria-label","More cohort actions",3,"matMenuTriggerFor"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"disabled","click",4,"ngIf"],["mat-menu-item","",3,"click",4,"ngIf"],["class","mat-menu-item-warning","mat-menu-item","",3,"click",4,"ngIf"],[1,"view-only-chip"],["mat-flat-button","","color","primary","data-qa","save-button","mat-button","",1,"save-button",3,"click","disabled"],["mat-button","",3,"click"],["mat-menu-item","",3,"click","disabled"],["mat-menu-item","",1,"mat-menu-item-warning",3,"click"],[1,"selected-cohort-info-loading",3,"title"],[1,"cases-actions"],["mat-stroked-button","","color","primary",1,"delete-button",3,"click","ngClass"],["mat-stroked-button","","color","primary","class","delete-button",3,"ngClass","click",4,"ngIf"],["mat-stroked-button","","color","primary","class","select-all",3,"click",4,"ngIf"],["mat-stroked-button","","color","primary",1,"select-all",3,"click"],[3,"title"],[1,"selected-pathology-cohort-cases-empty"],["displayMode","flat",3,"multi"],[4,"ngFor","ngForOf"],[3,"expanded","opened",4,"ngIf"],[3,"opened","expanded"],["mat-icon-button","","aria-label","Select case",1,"case-checkbox-button",3,"click"],[1,"case-title"],["routerLink","/viewer",1,"case-title",3,"click","queryParams"],[4,"ngIf"],["class","slides-accordion-content",4,"ngIf"],[1,"slides-accordion-content"],[1,"slide-thumbnail"],["class","thumbnail-image",3,"slideDescriptor","cohortInfo",4,"ngIf"],[1,"thumbnail-image",3,"slideDescriptor","cohortInfo"],["mat-header-cell","","mat-sort-header","","sortActionDescription","Sort by tags"],["mat-cell",""],["mat-header-cell","","mat-sort-header","","sortActionDescription","Sort by name"],[1,"cohort-row-name-description"],["mat-header-cell","","mat-sort-header","","sortActionDescription","Sort by date modified"],["mat-header-cell","","mat-sort-header","","sortActionDescription","Sort by description"],["mat-header-row",""],["mat-row","",1,"cohort-row",3,"click"],["colspan","100%"],[1,"cohorts-table-empty"],["matTooltip","Shared",4,"ngIf"],["matTooltip","De-Identified",4,"ngIf"],["matTooltip","Shared"],["matTooltip","De-Identified"]],template:function(o,n){if(1&o){const a=e.RV6();e.j41(0,"div",5)(1,"div",6)(2,"div",7),e.EFF(3,"Cohorts"),e.k0s(),e.j41(4,"div",8),e.EFF(5," All cohorts you created can be found and viewed here, including cohorts that have been shared with you. "),e.k0s()(),e.j41(6,"div",9)(7,"div",10)(8,"mat-form-field",11)(9,"mat-icon",12),e.EFF(10,"search"),e.k0s(),e.j41(11,"mat-label",13),e.EFF(12,"Search for a cohort name or keyword"),e.k0s(),e.j41(13,"input",14),e.bIt("keyup",function(d){return e.eBV(a),e.Njj(n.cohortFilterKeyUp(d))}),e.k0s()()(),e.j41(14,"div",15)(15,"button",16),e.bIt("click",function(){return e.eBV(a),e.Njj(n.showCreateCohortDialog())}),e.j41(16,"mat-icon"),e.EFF(17,"add"),e.k0s(),e.EFF(18," Add "),e.k0s(),e.j41(19,"button",17),e.bIt("click",function(){return e.eBV(a),e.Njj(n.reloadCohorts())}),e.j41(20,"mat-icon"),e.EFF(21,"refresh"),e.k0s(),e.EFF(22," Refresh "),e.k0s()()(),e.j41(23,"div",18),e.DNE(24,tn,1,0,"busy-overlay",19),e.nI1(25,"async"),e.j41(26,"mat-drawer-container",20)(27,"mat-drawer",21,0),e.DNE(29,on,2,0,"div",22),e.nI1(30,"async"),e.DNE(31,In,28,28,"div",23),e.k0s(),e.j41(32,"mat-drawer-content")(33,"table",24),e.qex(34,25),e.DNE(35,En,1,0,"th",26)(36,Fn,2,4,"td",27),e.bVm(),e.qex(37,28),e.DNE(38,On,2,0,"th",29)(39,Pn,6,2,"td",27),e.bVm(),e.qex(40,30),e.DNE(41,An,2,0,"th",31)(42,Nn,3,4,"td",27),e.bVm(),e.qex(43,32),e.DNE(44,Gn,2,0,"th",33)(45,Bn,2,1,"td",27),e.bVm(),e.DNE(46,jn,1,0,"tr",34)(47,Ln,1,2,"tr",35)(48,Vn,4,0,"ng-template",36)(49,$n,4,0,"ng-template",37),e.k0s()()()()(),e.DNE(50,Yn,2,2,"ng-template",null,1,e.C5r)}2&o&&(e.R7$(24),e.Y8G("ngIf",e.bMT(25,8,n.loadingCohortInfos$)),e.R7$(3),e.Y8G("opened",!!n.selectedCohortInfo),e.R7$(2),e.Y8G("ngIf",!n.selectedCohortInfo&&!e.bMT(30,10,n.loadingSelectedPathologyCohort$)),e.R7$(2),e.Y8G("ngIf",n.selectedCohortInfo),e.R7$(2),e.Y8G("dataSource",n.dataSource),e.R7$(13),e.Y8G("matHeaderRowDef",n.displayedColumns)("matHeaderRowDefSticky",!0),e.R7$(),e.Y8G("matRowDefColumns",n.displayedColumns))},dependencies:[v.RG,v.rl,v.nJ,v.JW,Q.m_,Q.An,C.MD,C.YU,C.Sq,C.bT,C.T3,C.Jj,C.m1,C.vh,Io,pt,ut,$e,_t,Xe,Ve,ft,Ue,Ye,gt,Ct,vt,w.Hl,w.$z,w.iY,E.fS,E.fg,eo,at,rt,pe,qi.x,Ao.s,Go,Z.iI,Z.Wk,Lo,he.MY,he.BS,he.GK,he.Z2,le.w,le.q,Ut,oe,me,Xt],styles:[".case-checkbox-button[_ngcontent-%COMP%]{color:#5f6368}.case-title[_ngcontent-%COMP%]{color:#5f6368;font-size:1.1em}.cases-actions[_ngcontent-%COMP%]{display:grid;grid-template-columns:max-content max-content max-content max-content;place-content:end;grid-column-gap:.5em;padding-bottom:.5em}.cases-refresh-and-actions[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr;grid-column-gap:1em;padding:.5em 0 0}.cohort-cases-section[_ngcontent-%COMP%]{display:grid;position:relative;height:100%;align-content:start}.cohort-page[_ngcontent-%COMP%]{display:grid;grid-template-rows:min-content min-content 1fr;height:95%;padding:1em 0 1em 1em}.cohort-row-name-description[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:30em}.cohort-search-actions-section[_ngcontent-%COMP%]{display:grid;grid-template-columns:min-content 1fr;grid-column-gap:1em}.cohort-search-actions-section[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%]{padding:1em 0 0;width:25em}.cohort-search-actions-section[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] .mat-mdc-floating-label{color:#444746}.cohort-search-actions-section[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] .mat-mdc-form-field-input-control{caret-color:#444746}.cohort-search-actions-section[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] .mat-mdc-text-field-wrapper{width:100%;border:1px solid transparent;border-radius:2em;background:#eef3fa}.cohort-search-actions-section[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] div[matformfieldlineripple]{display:none}.cohort-search-actions-section[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] .mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}.cohort-search-actions-section[_ngcontent-%COMP%] .actions-section[_ngcontent-%COMP%]{display:grid;grid-auto-columns:min-content;grid-auto-flow:column;grid-column-gap:1em;place-content:end;padding:1em 1em 1em 0}.cohorts-table[_ngcontent-%COMP%]{background:#fafafa}.cohorts-table[_ngcontent-%COMP%] .mat-mdc-header-row[_ngcontent-%COMP%]{background:#e8eaed}.cohorts-table-empty[_ngcontent-%COMP%]{display:grid;align-content:center}.cohorts-table[_ngcontent-%COMP%] .cohort-row[_ngcontent-%COMP%]:hover, .cohort-row-selected[_ngcontent-%COMP%]{background:#d3e3fd}.header-section[_ngcontent-%COMP%]{display:grid;grid-row-gap:.5em;grid-template-rows:min-content min-content}.header-sub-title[_ngcontent-%COMP%]{font-size:1em}.header-title[_ngcontent-%COMP%]{font-size:2em}.hidden[_ngcontent-%COMP%]{opacity:0;pointer-events:none}.inactive-link[_ngcontent-%COMP%]{cursor:default;pointer-events:none;text-decoration:unset}.mat-accordion[_ngcontent-%COMP%]{overflow:auto}.mat-divider[_ngcontent-%COMP%]{margin:1em 0 0}.mat-column-tags[_ngcontent-%COMP%]{width:4em}.mat-drawer-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;margin:0 20px;min-width:400px}.mat-drawer[_ngcontent-%COMP%]{width:70%}.mat-drawer-container[_ngcontent-%COMP%]{margin:0;border-radius:10px}.mat-menu-item-warning[_ngcontent-%COMP%]{color:#f44336}.row-selected-section[_ngcontent-%COMP%]{position:absolute;background:#f5f5f5;height:58.5em;right:0;top:3.5em;width:74vw}.selected-cohort-info[_ngcontent-%COMP%]{display:grid;grid-template-rows:min-content min-content 1fr;padding:1em;overflow:auto}.selected-cohort-info-cases[_ngcontent-%COMP%]{position:relative;display:grid;grid-template-rows:min-content 1fr}.selected-pathology-cohort-cases-empty[_ngcontent-%COMP%], .selected-cohort-info-loading[_ngcontent-%COMP%]{align-content:center;display:grid}.selected-cohort-info-empty[_ngcontent-%COMP%]{display:grid;place-content:center}.selected-cohort-info-section[_ngcontent-%COMP%]{align-items:baseline;display:grid;grid-column-gap:1em;grid-template-columns:min-content 1fr min-content min-content}.selected-cohort-info-title[_ngcontent-%COMP%]{font-size:1.5em}.selected-cohort-info-actions[_ngcontent-%COMP%]{display:grid;grid-column-gap:.5em;grid-template-columns:max-content max-content max-content}.selected-cohort-info-description[_ngcontent-%COMP%]{display:grid;grid-column:2/4;grid-row:2}.slides-accordion-content[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:1em}.quickview-button[_ngcontent-%COMP%]{bottom:.5em;position:absolute;right:.2em}.quickview-button[_ngcontent-%COMP%]:hover{transform:scale(1.2)}.quickview-dialog-content[_ngcontent-%COMP%]{height:60vh;position:relative;overflow:hidden;width:70vw}.quickview-dialog-close-button[_ngcontent-%COMP%]{position:absolute;right:.2em;top:.2em;z-index:2}.quickview-dialog-open-full-image-button[_ngcontent-%COMP%]{bottom:.2em;position:absolute;right:.2em;z-index:2}.slide-thumbnail[_ngcontent-%COMP%]{align-content:center;aspect-ratio:3/2;background:#d9d9d9;color:#7f7f7f;display:flex;justify-items:center;width:20em;position:relative}.table-section[_ngcontent-%COMP%]{max-height:75vh;overflow:auto;position:relative}.table-container[_ngcontent-%COMP%]{flex:1;min-height:100px;overflow:auto}.view-only-chip[_ngcontent-%COMP%]{align-items:center;background-color:#aecbfa;border-radius:1em;display:grid;grid-column-gap:.2em;grid-template-columns:min-content max-content;padding:.4em}"]})}}return i})()}}]); \ No newline at end of file diff --git a/web/221.9cbb800b0f6da290.js b/web/221.9cbb800b0f6da290.js new file mode 100644 index 0000000000000000000000000000000000000000..e3f429fc9fd33c3711540249bee1849aa0ff68e3 --- /dev/null +++ b/web/221.9cbb800b0f6da290.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[221],{8221:(a,i,e)=>{e.r(i),e.d(i,{LoginPageComponent:()=>l});var g=e(177),n=e(4438);let l=(()=>{class t{ngAfterViewInit(){typeof google<"u"&&google.accounts&&google.accounts.id?google.accounts.id.renderButton(document.getElementById("loginBtn"),{theme:"outline",size:"large",width:200,type:"standard"}):console.error("Google Identity Services library not loaded.")}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=n.VBU({type:t,selectors:[["login-page"]],decls:2,vars:0,consts:[[1,"login-page"],["id","loginBtn"]],template:function(o,c){1&o&&(n.j41(0,"div",0),n.nrm(1,"div",1),n.k0s())},dependencies:[g.MD],styles:[".login-page[_ngcontent-%COMP%]{display:grid;height:100%;place-items:center}"]})}}return t})()}}]); \ No newline at end of file diff --git a/web/382.03d981e973d105f9.js b/web/382.03d981e973d105f9.js new file mode 100644 index 0000000000000000000000000000000000000000..6d6f66c3d77bd43ee0613e2e70519d631b118038 --- /dev/null +++ b/web/382.03d981e973d105f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[382],{5382:(De,M,l)=>{l.r(M),l.d(M,{SearchPageComponent:()=>ze});var d=l(177),e=l(4438),g=l(9417),T=l(2628),f=l(8834),_=l(2408),v=l(9213),P=l(9631),I=l(4823),b=l(2168),z=l(2771),h=l(6977),x=l(4119),D=l(8294),O=l(3),u=l(5351),y=l(9183),S=l(2798),F=l(6697),E=l(1524),k=l(6708),G=l(9625);let $=(()=>{class a{transform(t,c,o="highlighted-text"){const r=new RegExp("\\b"+[...c].join("\\b|\\b")+"\\b","gi");return t.replace(r,i=>``+i+"")}static{this.\u0275fac=function(c){return new(c||a)}}static{this.\u0275pipe=e.EJ8({name:"HighlightPipe",type:a,pure:!0})}}return a})(),j=(()=>{class a{transform(t){return t?.dicomUri?{series:t.dicomUri}:{}}static{this.\u0275fac=function(c){return new(c||a)}}static{this.\u0275pipe=e.EJ8({name:"PathologySlideToViewerParamsPipe",type:a,pure:!0})}}return a})();var B=l(2194),N=l(9423),Y=l(5416);const A=["readDetailsTemplate"],R=a=>({hidden:a}),X=()=>({}),V=a=>({"thumbnail-images-scroll":a}),L=a=>({"grid-template-columns":a});function U(a,n){1&a&&e.eu8(0)}function W(a,n){if(1&a&&(e.qex(0),e.DNE(1,U,1,0,"ng-container",4),e.bVm()),2&a){e.XpG();const t=e.sdS(4);e.R7$(),e.Y8G("ngTemplateOutlet",t)}}function H(a,n){if(1&a&&(e.j41(0,"div",7),e.EFF(1),e.k0s()),2&a){const t=e.XpG(3);e.R7$(),e.SpI(" ",t.emptyMessage," ")}}function J(a,n){if(1&a&&(e.qex(0),e.DNE(1,H,2,1,"div",6),e.bVm()),2&a){const t=e.XpG(2);e.R7$(),e.Y8G("ngIf",t.emptyMessage&&t.showEmptyMessage)}}function Q(a,n){if(1&a&&(e.j41(0,"div",8)(1,"div",9),e.EFF(2),e.k0s(),e.j41(3,"div")(4,"span",10),e.EFF(5,"Latest case:"),e.k0s(),e.EFF(6),e.k0s(),e.j41(7,"div")(8,"span",10),e.EFF(9,"Last update:"),e.k0s(),e.EFF(10),e.k0s()()),2&a){const t=e.XpG(2);e.R7$(2),e.Lme(" ",t.patient.name," (",t.patient.patientId,") "),e.R7$(4),e.SpI(" #",t.patient.latestCaseAccessionNumber,""),e.R7$(4),e.SpI(" ",t.getFormattedDate(t.patient.latestCaseDate)," ")}}function K(a,n){1&a&&(e.j41(0,"span"),e.EFF(1,"found"),e.k0s())}function Z(a,n){if(1&a){const t=e.RV6();e.j41(0,"div",21)(1,"span"),e.EFF(2," Sort by: "),e.k0s(),e.j41(3,"mat-select",22),e.mxI("valueChange",function(o){e.eBV(t);const r=e.XpG(4);return e.DH7(r.diagnosticReportsSortBy,o)||(r.diagnosticReportsSortBy=o),e.Njj(o)}),e.bIt("selectionChange",function(){e.eBV(t);const o=e.XpG(4);return e.Njj(o.searchBySort(o.diagnosticReportsSortBy))}),e.j41(4,"mat-option",23),e.EFF(5," Most recent"),e.k0s(),e.j41(6,"mat-option",23),e.EFF(7," Least recent "),e.k0s()()()}if(2&a){const t=e.XpG(4);e.R7$(3),e.R50("value",t.diagnosticReportsSortBy),e.R7$(),e.Y8G("value",t.searchDiagnosticReportSort.LAST_MODIFIED_DESC),e.R7$(2),e.Y8G("value",t.searchDiagnosticReportSort.LAST_MODIFIED_ASC)}}function q(a,n){if(1&a){const t=e.RV6();e.j41(0,"button",24),e.bIt("click",function(){e.eBV(t);const o=e.XpG(4);return e.Njj(o.downloadSelected())}),e.EFF(1),e.j41(2,"mat-icon"),e.EFF(3,"download"),e.k0s()()}if(2&a){const t=e.XpG(4);e.Y8G("ngClass",e.eq3(2,R,0===t.selectedCases.size)),e.R7$(),e.SpI(" Download (",t.selectedCases.size,") selected ")}}function ee(a,n){if(1&a){const t=e.RV6();e.j41(0,"button",24),e.bIt("click",function(){e.eBV(t);const o=e.XpG(4);return e.Njj(o.removeCases())}),e.EFF(1," Remove cases from cohort "),e.j41(2,"mat-icon"),e.EFF(3,"delete"),e.k0s()()}if(2&a){const t=e.XpG(4);e.Y8G("ngClass",e.eq3(1,R,0===t.selectedCases.size))}}function te(a,n){if(1&a){const t=e.RV6();e.j41(0,"button",25),e.bIt("click",function(){e.eBV(t);const o=e.XpG(4);return e.Njj(o.selectAll())}),e.j41(1,"mat-icon"),e.EFF(2),e.k0s(),e.EFF(3," Select all in view "),e.k0s()}if(2&a){const t=e.XpG(4);e.R7$(2),e.JRh(t.allCasesSelected?"check_box":"check_box_outline_blank")}}function ae(a,n){if(1&a&&(e.j41(0,"div",13)(1,"div",14)(2,"div",15),e.EFF(3),e.nI1(4,"number"),e.DNE(5,K,2,0,"span",3),e.k0s(),e.j41(6,"div",16),e.DNE(7,Z,8,3,"div",17),e.j41(8,"div",18),e.DNE(9,q,4,4,"button",19)(10,ee,4,3,"button",19)(11,te,4,1,"button",20),e.k0s()()()()),2&a){const t=e.XpG(3);e.AVh("info-sticky",t.selectedCases.size),e.R7$(3),e.Lme(" ",e.bMT(4,11,t.totalResults)," ",t.totalResults>1?"cases":"case"," "),e.R7$(2),e.Y8G("ngIf",t.searchText),e.R7$(),e.AVh("search-actions-sorting",t.allowSorting),e.R7$(),e.Y8G("ngIf",t.allowSorting),e.R7$(2),e.Y8G("ngIf",t.allowDownloading),e.R7$(),e.Y8G("ngIf",t.allowRemoving),e.R7$(),e.Y8G("ngIf",t.caseWidgets.length)}}function oe(a,n){if(1&a&&(e.j41(0,"span"),e.EFF(1),e.k0s()),2&a){const t=e.XpG().$implicit;e.R7$(),e.SpI(" ",t.id," ")}}function ce(a,n){1&a&&(e.j41(0,"span"),e.EFF(1," Unknown Case ID "),e.k0s())}function ne(a,n){1&a&&(e.j41(0,"span"),e.EFF(1,"s"),e.k0s())}function le(a,n){if(1&a&&(e.j41(0,"div",37),e.EFF(1),e.nI1(2,"date"),e.k0s()),2&a){const t=e.XpG(2).$implicit,c=e.XpG(4);e.R7$(),e.SpI(" Diagnostic Report: Last modified on ",t.diagnosticReportDate&&c.isDate(t.diagnosticReportDate)?e.i5U(2,1,t.diagnosticReportDate,"MM/dd/yyyy"):t.diagnosticReportDate," ")}}function re(a,n){if(1&a){const t=e.RV6();e.j41(0,"div"),e.nrm(1,"div",38),e.nI1(2,"HighlightPipe"),e.j41(3,"button",39),e.bIt("click",function(o){e.eBV(t);const r=e.XpG(2).$implicit,i=e.XpG(4);return e.Njj(i.openReadDetailsDialog(r,o))}),e.j41(4,"mat-icon"),e.EFF(5,"library_books"),e.k0s(),e.EFF(6," Read details "),e.k0s()()}if(2&a){let t;const c=e.XpG(2).$implicit,o=e.XpG(4);e.R7$(),e.Y8G("innerHTML",e.i5U(2,3,null!==(t=null==c.text?null:c.text.snippet)&&void 0!==t?t:"",o.searchedKeywords),e.npT),e.R7$(2),e.AVh("selected",o.selectedCases.has(c))}}function ie(a,n){if(1&a&&(e.j41(0,"div"),e.DNE(1,le,3,4,"div",36)(2,re,7,6,"div",3),e.k0s()),2&a){const t=e.XpG().$implicit,c=e.XpG(4);e.R7$(),e.Y8G("ngIf",c.showText&&(null==t.text?null:t.text.div)),e.R7$(),e.Y8G("ngIf",c.showText&&(null==t.text?null:t.text.div))}}function de(a,n){if(1&a&&(e.nrm(0,"image-viewer-quick-view",42),e.nI1(1,"DICOMUriToSlideDescriptorPipe")),2&a){let t;e.Y8G("slideDescriptor",e.bMT(1,1,null!==(t=n.$implicit.dicomUri)&&void 0!==t?t:""))}}function se(a,n){if(1&a&&(e.j41(0,"div",40),e.DNE(1,de,2,3,"image-viewer-quick-view",41),e.k0s()),2&a){const t=e.XpG().$implicit;e.Y8G("ngClass",e.eq3(3,V,0===(null==t||null==t.slides?null:t.slides.length)))("ngStyle",e.eq3(5,L,"repeat("+(null==t||null==t.slides?null:t.slides.length)+",32%)")),e.R7$(),e.Y8G("ngForOf",null==t?null:t.slides)}}function me(a,n){if(1&a){const t=e.RV6();e.j41(0,"div",29)(1,"div",30)(2,"div",31)(3,"a",32),e.nI1(4,"PathologySlideToViewerParamsPipe"),e.DNE(5,oe,2,1,"span",3)(6,ce,2,0,"span",3),e.k0s(),e.j41(7,"div")(8,"span")(9,"span"),e.EFF(10),e.k0s(),e.DNE(11,ne,2,0,"span",3),e.k0s(),e.EFF(12," | "),e.j41(13,"span"),e.EFF(14),e.nI1(15,"date"),e.k0s()()(),e.j41(16,"div",33),e.DNE(17,ie,3,2,"div",3)(18,se,2,7,"div",34),e.k0s()(),e.j41(19,"button",35),e.bIt("click",function(o){const r=e.eBV(t).$implicit,i=e.XpG(4);return e.Njj(i.toggleSelect(o,r))}),e.j41(20,"mat-icon"),e.EFF(21,"done"),e.k0s()()()}if(2&a){const t=n.$implicit,c=e.XpG(4);e.AVh("diagnostic-report-show-text",c.showText),e.R7$(3),e.AVh("inactive-link",!t.hasLinking||!t.slides.length||(null==t.caseInfo?null:t.caseInfo.failedToLoad)),e.Y8G("queryParams",null!=t&&null!=t.slides&&t.slides.length?e.bMT(4,14,t.slides[0]):e.lJ4(19,X)),e.R7$(2),e.Y8G("ngIf",t.id!==(null==t.diagnosticReport||null==t.diagnosticReport.resource?null:t.diagnosticReport.resource.id)),e.R7$(),e.Y8G("ngIf",t.id===(null==t.diagnosticReport||null==t.diagnosticReport.resource?null:t.diagnosticReport.resource.id)),e.R7$(4),e.SpI("",t.slides.length," image"),e.R7$(),e.Y8G("ngIf",1!==t.slides.length),e.R7$(3),e.SpI(" Case date: ",c.isDate(t.caseDate)?e.i5U(15,16,t.caseDate,"MM/dd/yyyy"):t.caseDate," "),e.R7$(3),e.Y8G("ngIf",c.showText&&(null==t.text?null:t.text.div)),e.R7$(),e.Y8G("ngIf",null==t||null==t.slides?null:t.slides.length),e.R7$(),e.AVh("selected",c.selectedCases.has(t))}}function pe(a,n){1&a&&e.eu8(0)}function ge(a,n){if(1&a&&(e.qex(0),e.DNE(1,pe,1,0,"ng-container",4),e.bVm()),2&a){e.XpG(5);const t=e.sdS(4);e.R7$(),e.Y8G("ngTemplateOutlet",t)}}function be(a,n){if(1&a){const t=e.RV6();e.j41(0,"button",45),e.bIt("click",function(){e.eBV(t);const o=e.XpG(5);return e.Njj(o.handleLoadMore(o.nextPageToken))}),e.EFF(1," Load more "),e.k0s()}}function he(a,n){if(1&a&&(e.j41(0,"div",43),e.DNE(1,ge,2,1,"ng-container",3)(2,be,2,0,"button",44),e.k0s()),2&a){const t=e.XpG(4);e.R7$(),e.Y8G("ngIf",t.loadingMore),e.R7$(),e.Y8G("ngIf",!t.loadingMore)}}function xe(a,n){if(1&a&&(e.j41(0,"div",26),e.DNE(1,me,22,20,"div",27)(2,he,3,2,"div",28),e.k0s()),2&a){const t=e.XpG(3);e.R7$(),e.Y8G("ngForOf",t.caseWidgets),e.R7$(),e.Y8G("ngIf",t.nextPageToken)}}function ue(a,n){if(1&a&&(e.qex(0),e.DNE(1,ae,12,13,"div",11)(2,xe,3,2,"div",12),e.bVm()),2&a){const t=e.XpG(2);e.R7$(),e.Y8G("ngIf",t.allowSelecting),e.R7$(),e.Y8G("ngIf",t.caseWidgets.length)}}function fe(a,n){if(1&a&&(e.qex(0),e.DNE(1,J,2,1,"ng-container",3)(2,Q,11,4,"div",5)(3,ue,3,2,"ng-container",3),e.bVm()),2&a){const t=e.XpG();e.R7$(),e.Y8G("ngIf",0===t.totalResults&&!t.patient),e.R7$(),e.Y8G("ngIf",t.patient),e.R7$(),e.Y8G("ngIf",0!==t.totalResults)}}function _e(a,n){if(1&a&&(e.j41(0,"div"),e.EFF(1),e.k0s()),2&a){const t=e.XpG(2);e.R7$(),e.SpI("Searching ",t.loadingText,"...")}}function ve(a,n){if(1&a&&(e.j41(0,"div"),e.EFF(1),e.nI1(2,"percent"),e.k0s()),2&a){const t=e.XpG(2);e.R7$(),e.SpI(" Loading ",e.bMT(2,1,t.loadingProgressSelectedPathologyCohortCases/100),"... ")}}function Ce(a,n){if(1&a&&(e.j41(0,"div",46),e.nrm(1,"mat-spinner",47),e.DNE(2,_e,2,1,"div",3)(3,ve,3,3,"div",3),e.k0s()),2&a){const t=e.XpG();e.R7$(),e.Y8G("diameter",50),e.R7$(),e.Y8G("ngIf",t.loadingText),e.R7$(),e.Y8G("ngIf",!t.loadingText)}}function ke(a,n){if(1&a&&(e.j41(0,"div",48),e.EFF(1),e.k0s(),e.nrm(2,"div",49),e.nI1(3,"HighlightPipe"),e.j41(4,"mat-dialog-actions",50)(5,"button",51),e.EFF(6,"Close"),e.k0s()()),2&a){let t;const c=n.$implicit,o=e.XpG();e.R7$(),e.SpI("Cases - ",c.id,""),e.R7$(),e.Y8G("innerHTML",e.i5U(3,3,null!==(t=c.diagnosticReport.resource.text.sanitizedHtml.toString())&&void 0!==t?t:"",o.searchedKeywords),e.npT),e.R7$(3),e.Y8G("mat-dialog-close",!1)}}let we=(()=>{class a{constructor(t,c){this.dialogService=t,this.snackBar=c,this.allowDownloading=!1,this.allowRemoving=!1,this.allowSorting=!1,this.allowSelecting=!1,this.cases=[],this.casesByCaseId=new Map,this.cohortName="",this.diagnosticReports=[],this.emptyMessage="",this.showText=!0,this.nextPageToken="",this.linkToken="",this.loading=!1,this.loadingProgressSelectedPathologyCohortCases=0,this.loadingText="",this.loadingMore=!1,this.patient=void 0,this.searchText="",this.showEmptyMessage=!1,this.totalResults=0,this.twoColumns=!1,this.loadMore=new e.bkB,this.removeCasesFromCohort=new e.bkB,this.searchSortBy=new e.bkB,this.allCasesSelected=!1,this.caseWidgets=[],this.diagnosticReportsSortBy=k.W.LAST_MODIFIED_DESC,this.selectedCases=new Set,this.searchedKeywords=new Set,this.searchDiagnosticReportSort=k.W}ngOnChanges(t){const c=t.cases?.currentValue,o=t.casesByCaseId?.currentValue,r=t.diagnosticReports?.currentValue,i=t.searchText?.currentValue;(r||c||o)&&(this.caseWidgets=[...this.casesToCaseWidgets(this.cases),...this.diagnosticReportsToCaseWidgets(this.diagnosticReports,this.casesByCaseId??new Map)],this.searchText||this.caseWidgets.sort((s,m)=>{const p=this.isDate(s.caseDate)?new Date(s.caseDate).getTime():0,C=this.isDate(m.caseDate)?new Date(m.caseDate).getTime():0;return(this.diagnosticReportsSortBy===k.W.LAST_MODIFIED_DESC?C-p:p-C)||s.id.localeCompare(m.id)}),this.selectedCases.clear(),this.validateAllSelected()),i&&(this.searchedKeywords=new Set(this.searchText.split(" ").map(s=>s.trim())))}downloadSelected(){const t=`Cases - ${(new Date).toLocaleDateString("en-CA")}.csv`;try{const i="data:text/csv;charset=utf-8,"+[["CaseId","DicomUris"],...[...this.selectedCases].map(p=>{if(p.id===p.diagnosticReport?.resource?.id)return["Unknown ID"];const C=p.slides.map(w=>w.dicomUri).filter(w=>!!w);return[p.id,C.join(", ")]})].map(p=>p.join(",")).join("\n"),s=encodeURI(i),m=document.createElement("a");(0,E.N9)(m,s),m.download=t,m.style.visibility="hidden",document.body.appendChild(m),m.click(),document.body.removeChild(m),this.snackBar.open(`Downloaded cases: ${t}`)}catch{this.snackBar.open(`Failed to downloaded cases: ${t}`)}}handleLoadMore(t){this.loadMore.emit(t)}isDate(t){const c=Date.parse(t);return!isNaN(c)}openReadDetailsDialog(t,c){c.stopPropagation(),this.dialogService.openComponentDialog(this.readDetailsTemplate,{data:t,autoFocus:!1}).afterClosed().pipe((0,F.s)(1)).subscribe()}removeCases(){this.snackBar.open("Removing cases...");const t=[...this.selectedCases].map(c=>c?.caseInfo?.caseId).filter(c=>!!c);this.removeCasesFromCohort.emit({cohortName:this.cohortName,selectedCaseIds:new Set(t)}),this.selectedCases.clear()}searchBySort(t){this.searchSortBy.emit(t)}selectAll(){return this.validateAllSelected()?(this.selectedCases.clear(),this.allCasesSelected=!1):(this.selectedCases=new Set(this.caseWidgets),this.allCasesSelected=!0),this.allCasesSelected}toggleSelect(t,c){t.stopPropagation(),t.preventDefault(),this.selectedCases.has(c)?this.selectedCases.delete(c):this.selectedCases.add(c),this.validateAllSelected()}casesToCaseWidgets(t){return t.map(o=>({id:o.accessionNumber,hasLinking:!!o.accessionNumber,caseDate:o.date,slides:o.slides,caseInfo:o}))}diagnosticReportsToCaseWidgets(t,c){return t.map(r=>{const i=r.resource.caseAccessionId??"",s=c.get(i);return{id:i||r.resource.id,hasLinking:!!i,caseDate:s?.date??"Not available",diagnosticReportDate:r.resource.meta.lastUpdated,text:r.resource.text,slides:s?.slides??[],caseInfo:s,diagnosticReport:r}})}validateAllSelected(){return this.allCasesSelected=this.caseWidgets.every(t=>this.selectedCases.has(t)),this.allCasesSelected}getFormattedDate(t){return t&&!isNaN(Date.parse(t))?new Intl.DateTimeFormat("en-US").format(new Date(t)):t||"N/A"}static{this.\u0275fac=function(c){return new(c||a)(e.rXU(N.o),e.rXU(Y.UG))}}static{this.\u0275cmp=e.VBU({type:a,selectors:[["search-results"]],viewQuery:function(c,o){if(1&c&&e.GBs(A,7),2&c){let r;e.mGM(r=e.lsd())&&(o.readDetailsTemplate=r.first)}},inputs:{allowDownloading:"allowDownloading",allowRemoving:"allowRemoving",allowSorting:"allowSorting",allowSelecting:"allowSelecting",cases:"cases",casesByCaseId:"casesByCaseId",cohortName:"cohortName",diagnosticReports:"diagnosticReports",emptyMessage:"emptyMessage",showText:"showText",nextPageToken:"nextPageToken",linkToken:"linkToken",loading:"loading",loadingProgressSelectedPathologyCohortCases:"loadingProgressSelectedPathologyCohortCases",loadingText:"loadingText",loadingMore:"loadingMore",patient:"patient",searchText:"searchText",showEmptyMessage:"showEmptyMessage",totalResults:"totalResults",twoColumns:"twoColumns"},outputs:{loadMore:"loadMore",removeCasesFromCohort:"removeCasesFromCohort",searchSortBy:"searchSortBy"},features:[e.OA$],decls:7,vars:4,consts:[["loadingTemplate",""],["readDetailsTemplate",""],[1,"cases-list"],[4,"ngIf"],[4,"ngTemplateOutlet"],["class","diagnostic-report patient-info",4,"ngIf"],["class","empty-message",4,"ngIf"],[1,"empty-message"],[1,"diagnostic-report","patient-info"],[1,"case-title"],[1,"label-header"],["class","info",3,"info-sticky",4,"ngIf"],["class","diagnostic-reports",4,"ngIf"],[1,"info"],[1,"search-info"],[1,"search-result-count"],[1,"search-actions"],["class","sort-by",4,"ngIf"],[1,"select-actions"],["mat-stroked-button","","color","primary","class","delete-button",3,"ngClass","click",4,"ngIf"],["mat-stroked-button","","color","primary","class","select-all",3,"click",4,"ngIf"],[1,"sort-by"],[3,"valueChange","selectionChange","value"],[3,"value"],["mat-stroked-button","","color","primary",1,"delete-button",3,"click","ngClass"],["mat-stroked-button","","color","primary",1,"select-all",3,"click"],[1,"diagnostic-reports"],["class","diagnostic-report",3,"diagnostic-report-show-text",4,"ngFor","ngForOf"],["class","load-more-section",4,"ngIf"],[1,"diagnostic-report"],[1,"case-info"],[1,"case-info-basic-details"],["routerLink","/viewer",1,"case-title",3,"queryParams"],[1,"case-info-details-and-images"],["class","thumbnail-images",3,"ngClass","ngStyle",4,"ngIf"],[1,"diagnostic-report-select-button",3,"click"],["class","diagnostic-report-date",4,"ngIf"],[1,"diagnostic-report-date"],[1,"snippet",3,"innerHTML"],["mat-button","","color","primary",3,"click"],[1,"thumbnail-images",3,"ngClass","ngStyle"],["class","thumbnail-image",3,"slideDescriptor",4,"ngFor","ngForOf"],[1,"thumbnail-image",3,"slideDescriptor"],[1,"load-more-section"],["mat-flat-button","","color","primary","class","load-more",3,"click",4,"ngIf"],["mat-flat-button","","color","primary",1,"load-more",3,"click"],[1,"loading-section"],[3,"diameter"],["mat-dialog-title","",1,"mat-dialog-title"],["mat-dialog-content","",1,"mat-dialog-content",3,"innerHTML"],["align","end",1,"discard-confirmation-actions"],["mat-button","","color","primary",3,"mat-dialog-close"]],template:function(c,o){1&c&&(e.j41(0,"div",2),e.DNE(1,W,2,1,"ng-container",3)(2,fe,4,3,"ng-container",3),e.k0s(),e.DNE(3,Ce,4,3,"ng-template",null,0,e.C5r)(5,ke,7,6,"ng-template",null,1,e.C5r)),2&c&&(e.AVh("cases-list-padding",o.loading||0===o.totalResults),e.R7$(),e.Y8G("ngIf",o.loading&&!o.loadingMore),e.R7$(),e.Y8G("ngIf",!o.loading))},dependencies:[u.hM,u.tx,u.BI,u.E7,u.Yi,$,d.MD,d.YU,d.Sq,d.bT,d.T3,d.B3,d.QX,d.m1,d.vh,y.D6,y.LG,v.m_,v.An,G.s,B.x,j,b.iI,b.Wk,O.Sy,O.wT,S.Ve,S.VO,f.Hl,f.$z],styles:[".hidden[_ngcontent-%COMP%]{opacity:0;pointer-events:none} .highlighted-text{background:#d2e3fc}.cases-list[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr}.cases-list-padding[_ngcontent-%COMP%]{padding:1em 0 .5em}.case-info[_ngcontent-%COMP%]{display:grid;grid-gap:1em}.case-info[_ngcontent-%COMP%] .case-info-basic-details[_ngcontent-%COMP%]{display:grid;width:90%}.case-info[_ngcontent-%COMP%] .case-info-details-and-images[_ngcontent-%COMP%]{display:grid;grid-row-gap:1em}.case-slide[_ngcontent-%COMP%]{align-items:center;align-self:center;aspect-ratio:1/1;background:#ddd;border-radius:8px;color:#bdc1c6;display:grid;font-size:3em;justify-content:center}.case-slide-patient[_ngcontent-%COMP%]{border-radius:50px}.case-title[_ngcontent-%COMP%]{color:#5f6368;font-size:1.1em;font-weight:700;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}.diagnostic-report[_ngcontent-%COMP%]{border:1px solid gray;border-radius:8px;color:gray;display:grid;grid-template-columns:1fr;grid-column-gap:.5em;padding:1em;position:relative}.diagnostic-report-date[_ngcontent-%COMP%]{font-style:italic}.diagnostic-report-show-text[_ngcontent-%COMP%]{grid-template-columns:1fr}.diagnostic-reports[_ngcontent-%COMP%]{display:grid;grid-gap:1em;grid-template-columns:1fr;padding-bottom:4em}.diagnostic-report-select-button[_ngcontent-%COMP%]{border:1px solid #999;background:#fafafa;border-radius:100%;color:#999;cursor:pointer;padding-top:6px;position:absolute;right:1em;top:1em;transition:background-color .08s ease-out}.diagnostic-report-select-button[_ngcontent-%COMP%]:hover{color:#777}.diagnostic-report-select-button.selected[_ngcontent-%COMP%]{background-color:#4285f4;color:#fafafa}.diagnostic-report-select-button.selected[_ngcontent-%COMP%]:hover{background-color:#1a73e8}.disable-selecting[_ngcontent-%COMP%] .select-button[_ngcontent-%COMP%]{pointer-events:none}.empty-message[_ngcontent-%COMP%]{justify-self:center;color:red}.grid-one-column[_ngcontent-%COMP%]{align-items:end;grid-template-columns:1fr}.grid-two-columns[_ngcontent-%COMP%]{grid-template-columns:1fr 1fr}.info[_ngcontent-%COMP%]{display:grid;padding:1em 0}.info-sticky[_ngcontent-%COMP%]{align-self:start;background:#fafafa;position:sticky;top:0;z-index:1}.load-more[_ngcontent-%COMP%]{justify-self:center;width:max-content}.load-more-section[_ngcontent-%COMP%]{display:grid;justify-items:center;overflow-anchor:none}.loading-section[_ngcontent-%COMP%]{display:grid;grid-row-gap:1em;justify-items:center;justify-self:center}mat-selection-list[_ngcontent-%COMP%]{display:grid;grid-row-gap:1em}mat-list-option[_ngcontent-%COMP%]{border:1px solid #dadce0;border-radius:15px}.search-info[_ngcontent-%COMP%]{align-items:center;display:grid;grid-template-columns:1fr;justify-content:space-between}.search-actions[_ngcontent-%COMP%]{display:flex;justify-content:end}.search-actions-sorting[_ngcontent-%COMP%]{justify-content:space-between}.select-actions[_ngcontent-%COMP%]{display:flex;column-gap:1fr;grid-column-gap:.5em;grid-template-columns:repeat(auto-fill,min-content);justify-content:end}.select-button[_ngcontent-%COMP%]{border-radius:15px;background-color:transparent;border:none;cursor:pointer;color:#fff;padding:0 2px;position:absolute;right:19px;top:18px;transition:background-color .08s ease-out}.select-button.selected[_ngcontent-%COMP%]{background-color:#4285f4;border:1px solid white}.select-button.selected[_ngcontent-%COMP%]:hover{background-color:#1a73e8}.inactive-link[_ngcontent-%COMP%]{cursor:default;pointer-events:none;text-decoration:unset}.slide-image[_ngcontent-%COMP%]{height:1em;font-size:1em;width:1em}.patient-info[_ngcontent-%COMP%]{margin-top:2em}.search-result-count[_ngcontent-%COMP%]{color:#5f6368;font-weight:700}.snippet[_ngcontent-%COMP%]{height:4.5em;line-height:1.5em;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical}.sort-by[_ngcontent-%COMP%]{align-items:center;color:#1976d2;display:grid;grid-column-gap:.2em;grid-template-columns:max-content 6.2em}.sort-by[_ngcontent-%COMP%] .mat-button{color:#1976d2}.sort-by[_ngcontent-%COMP%] .mat-mdc-select-value, .sort-by[_ngcontent-%COMP%] .mat-mdc-select-arrow{color:inherit}.thumbnail-images[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr 1fr;grid-column-gap:1em;overflow:auto;padding-bottom:.5em}.thumbnail-images[_ngcontent-%COMP%] .thumbnail-image[_ngcontent-%COMP%]{border-radius:8px;height:10em;overflow:hidden;outline:1px solid #dadce0}.thumbnail-images[_ngcontent-%COMP%] .thumbnail-image-empty[_ngcontent-%COMP%]{display:grid;place-content:center center;outline:1px solid #dadce0;border-radius:8px;height:10em;background:#d3d3d3}.thumbnail-images[_ngcontent-%COMP%] .thumbnail-image-empty[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%]{transform:scale(2)}.thumbnail-images[_ngcontent-%COMP%] .thumbnail-images-more[_ngcontent-%COMP%]{border-radius:8px;outline:1px solid #dadce0;display:grid;place-content:center center;height:100%;padding:0;font-size:1.3em;color:#5f6368;background:#d3e3fd;font-weight:700}.label-header[_ngcontent-%COMP%]{font-weight:700;font-size:1em}"]})}}return a})();var Me=l(2024),Pe=l(345);const Oe=()=>[],ye=()=>["/"];function Se(a,n){1&a&&(e.j41(0,"div",10)(1,"div",11),e.nrm(2,"img",12),e.j41(3,"span"),e.EFF(4," Pathology Image Library "),e.k0s()()()),2&a&&(e.R7$(),e.Y8G("routerLink",e.lJ4(1,ye)))}function Re(a,n){1&a&&(e.j41(0,"mat-label"),e.EFF(1,"Search keyword, patient ID, or case ID"),e.k0s())}function Te(a,n){1&a&&(e.j41(0,"mat-label"),e.EFF(1,"Search patient ID, or case ID"),e.k0s())}function Ie(a,n){1&a&&(e.j41(0,"div",13)(1,"div",14),e.EFF(2,"Search tips:"),e.k0s(),e.j41(3,"ul",15)(4,"li"),e.EFF(5," Typing more than one FHIR keyword searches for an exact match (e.g. Prostatic Adenocarcinoma) "),e.k0s(),e.j41(6,"li"),e.EFF(7,'Use "|" for OR searches (e.g. Keratosis | Biopsy)'),e.k0s(),e.j41(8,"li"),e.EFF(9,'Use "-" to negate words (e.g. -Acute)'),e.k0s()()())}let ze=(()=>{class a{constructor(t,c,o,r){this.route=t,this.router=c,this.searchService=o,this.title=r,this.cases=[],this.diagnosticReports=[],this.loading=!1,this.searchInitiated=!1,this.patient=void 0,this.searchText=new g.MJ("",{nonNullable:!0}),this.RECORD_ID_TYPE_META=D.H,this.searchEvent=new e.bkB,this.forceUpperCase=x.c.SEARCH_UPPERCASE_ONLY,this.enableFhirSearch=!1,this.enableFhirSearchTooltip=!1,this.destroyed$=new z.m(1),this.cohortsEnabled=x.c.ENABLE_COHORTS,this.viewerAppName=x.c.VIEWER_APP_NAME,o.diagnosticReports$.pipe((0,h.Q)(this.destroyed$)).subscribe(i=>{this.diagnosticReports=i}),o.patient$.pipe((0,h.Q)(this.destroyed$)).subscribe(i=>{this.patient=i})}ngOnInit(){x.c.IMAGE_DICOM_STORE_BASE_URL?(this.title.setTitle(this.viewerAppName),this.route.queryParams.pipe((0,h.Q)(this.destroyed$)).subscribe(t=>{this.startSearch(t.q??"")}),this.enableFhirSearch=!!x.c.FHIR_STORE_BASE_URL,this.searchOnLoad&&this.searchTextDefault&&this.search()):this.router.navigateByUrl("/config")}ngOnDestroy(){this.searchService.resetSearchResults(),this.destroyed$.next(!0),this.destroyed$.complete()}ngOnChanges(){const t=(this.searchTextDefault??"").replaceAll("\\\\","\\");this.searchText.patchValue(t)}search(){if(!this.searchText)return;const t=this.forceUpperCase?this.searchText.value.toUpperCase():this.searchText.value;this.startSearch(this.cleanSearchText(t.trim()))}cleanSearchText(t){return(t=t.replaceAll("\\","\\\\")).trim()}loadMore(t){this.searchService.searchFhirDiagnosticReportNextPage(t).pipe((0,h.Q)(this.destroyed$)).subscribe()}startSearch(t){if(this.searchText.patchValue(t),!t)return this.searchService.resetSearchResults(),this.router.navigate([]),void(this.searchInitiated=!1);this.searchInitiated=!0,this.route.snapshot.queryParamMap.get("q")!==t&&this.router.navigate([],{queryParams:{q:t}}),this.searchService.searchCasesAndFhirStore(t).pipe((0,h.Q)(this.destroyed$)).subscribe()}searchSortBy(t){this.searchService.searchSortBy(t).pipe((0,h.Q)(this.destroyed$)).subscribe()}static{this.\u0275fac=function(c){return new(c||a)(e.rXU(b.nX),e.rXU(b.Ix),e.rXU(Me.S),e.rXU(Pe.hE))}}static{this.\u0275cmp=e.VBU({type:a,selectors:[["search-page"]],inputs:{searchTextDefault:"searchTextDefault",searchOnLoad:"searchOnLoad"},outputs:{searchEvent:"searchEvent"},features:[e.OA$],decls:20,vars:37,consts:[[1,"search-page"],["class","header",4,"ngIf"],[1,"search-container"],["appearance","outline","color","primary"],["matPrefix",""],[4,"ngIf"],["matInput","","autocomplete","off",3,"keyup.enter","formControl"],["mat-flat-button","","color","primary",3,"click"],["class","search-tip-section",4,"ngIf"],["emptyMessage","No results found, check your search and try again",3,"loadMore","searchSortBy","allowDownloading","allowSelecting","allowSorting","cases","casesByCaseId","diagnosticReports","loading","loadingText","loadingMore","nextPageToken","patient","searchText","showText","totalResults","showEmptyMessage"],[1,"header"],[1,"header-logo",3,"routerLink"],["src","../../favicon.ico","alt","Logo"],[1,"search-tip-section"],[1,"search-tip-title"],[1,"search-tip-info"]],template:function(c,o){1&c&&(e.j41(0,"div",0),e.DNE(1,Se,5,2,"div",1),e.j41(2,"div",2)(3,"mat-form-field",3)(4,"mat-icon",4),e.EFF(5,"search"),e.k0s(),e.DNE(6,Re,2,0,"mat-label",5)(7,Te,2,0,"mat-label",5),e.j41(8,"input",6),e.bIt("keyup.enter",function(){return o.search()}),e.k0s()(),e.j41(9,"button",7),e.bIt("click",function(){return o.search()}),e.EFF(10,"Search"),e.k0s(),e.DNE(11,Ie,10,0,"div",8),e.k0s(),e.j41(12,"search-results",9),e.nI1(13,"async"),e.nI1(14,"async"),e.nI1(15,"async"),e.nI1(16,"async"),e.nI1(17,"async"),e.nI1(18,"async"),e.nI1(19,"async"),e.bIt("loadMore",function(i){return o.loadMore(i)})("searchSortBy",function(i){return o.searchSortBy(i)}),e.k0s()()),2&c&&(e.R7$(),e.Y8G("ngIf",!o.searchText),e.R7$(5),e.Y8G("ngIf",o.enableFhirSearch),e.R7$(),e.Y8G("ngIf",!o.enableFhirSearch),e.R7$(),e.AVh("force-upper",o.forceUpperCase),e.Y8G("formControl",o.searchText),e.R7$(3),e.Y8G("ngIf",o.enableFhirSearchTooltip),e.R7$(),e.Y8G("allowDownloading",!0)("allowSelecting",""!==o.searchText.value)("allowSorting",0!==o.diagnosticReports.length)("cases",e.bMT(13,22,o.searchService.cases$)||e.lJ4(36,Oe))("casesByCaseId",e.bMT(14,24,o.searchService.casesByCaseId$)||void 0)("diagnosticReports",o.diagnosticReports)("loading",e.bMT(15,26,o.searchService.loading$)||!1)("loadingText",e.bMT(16,28,o.searchService.loadingText$)||"")("loadingMore",e.bMT(17,30,o.searchService.loadingMore$)||!1)("nextPageToken",e.bMT(18,32,o.searchService.nextDiagnosticReportLink$)||"")("patient",o.patient)("searchText",o.searchText.value)("showText",0!==o.diagnosticReports.length)("totalResults",e.bMT(19,34,o.searchService.totalResults$)||0)("showEmptyMessage",""!==o.searchText.value&&o.searchInitiated))},dependencies:[we,d.MD,d.bT,d.Jj,v.m_,v.An,I.uc,g.YN,g.me,g.BC,g.X1,g.l_,_.RG,_.rl,_.nJ,_.JW,b.iI,b.Wk,P.fS,P.fg,f.Hl,f.$z,T.jL],styles:['@import"https://fonts.googleapis.com/css?family=Google+Sans";@import"https://fonts.googleapis.com/css?family=Google+Sans+Text:400,500";@import"https://fonts.googleapis.com/css?family=Google+Sans+Display:400,500,700";@import"https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp";@import"https://fonts.googleapis.com/css2?family=Google+Symbols:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200";.mat-elevation-z0[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z0[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-0, none)}.mat-elevation-z1[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z1[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-1, none)}.mat-elevation-z2[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z2[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-2, none)}.mat-elevation-z3[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z3[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-3, none)}.mat-elevation-z4[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z4[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-4, none)}.mat-elevation-z5[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z5[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-5, none)}.mat-elevation-z6[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z6[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-6, none)}.mat-elevation-z7[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z7[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-7, none)}.mat-elevation-z8[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z8[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-8, none)}.mat-elevation-z9[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z9[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-9, none)}.mat-elevation-z10[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z10[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-10, none)}.mat-elevation-z11[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z11[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-11, none)}.mat-elevation-z12[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z12[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-12, none)}.mat-elevation-z13[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z13[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-13, none)}.mat-elevation-z14[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z14[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-14, none)}.mat-elevation-z15[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z15[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-15, none)}.mat-elevation-z16[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z16[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-16, none)}.mat-elevation-z17[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z17[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-17, none)}.mat-elevation-z18[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z18[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-18, none)}.mat-elevation-z19[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z19[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-19, none)}.mat-elevation-z20[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z20[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-20, none)}.mat-elevation-z21[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z21[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-21, none)}.mat-elevation-z22[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z22[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-22, none)}.mat-elevation-z23[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z23[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-23, none)}.mat-elevation-z24[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z24[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-24, none)}html[_ngcontent-%COMP%]{--mat-sys-on-surface: initial}.mat-app-background[_ngcontent-%COMP%]{background-color:var(--mat-app-background-color, var(--mat-sys-background, transparent));color:var(--mat-app-text-color, var(--mat-sys-on-background, inherit))}.mat-elevation-0[_ngcontent-%COMP%]{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-1[_ngcontent-%COMP%]{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-2[_ngcontent-%COMP%]{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-3[_ngcontent-%COMP%]{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-4[_ngcontent-%COMP%]{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-5[_ngcontent-%COMP%]{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-6[_ngcontent-%COMP%]{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-7[_ngcontent-%COMP%]{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-8[_ngcontent-%COMP%]{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-9[_ngcontent-%COMP%]{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-10[_ngcontent-%COMP%]{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-11[_ngcontent-%COMP%]{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-12[_ngcontent-%COMP%]{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-13[_ngcontent-%COMP%]{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-14[_ngcontent-%COMP%]{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-15[_ngcontent-%COMP%]{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-16[_ngcontent-%COMP%]{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-17[_ngcontent-%COMP%]{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-18[_ngcontent-%COMP%]{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-19[_ngcontent-%COMP%]{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-20[_ngcontent-%COMP%]{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-21[_ngcontent-%COMP%]{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-22[_ngcontent-%COMP%]{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-23[_ngcontent-%COMP%]{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-24[_ngcontent-%COMP%]{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}html[_ngcontent-%COMP%]{--mat-ripple-color: rgba(0, 0, 0, .1)}html[_ngcontent-%COMP%]{--mat-option-selected-state-label-text-color: #2196f3;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent[_ngcontent-%COMP%]{--mat-option-selected-state-label-text-color: #b0bec5;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-warn[_ngcontent-%COMP%]{--mat-option-selected-state-label-text-color: #f44336;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}html[_ngcontent-%COMP%]{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%]{--mat-full-pseudo-checkbox-selected-icon-color: #b0bec5;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}html[_ngcontent-%COMP%]{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #b0bec5;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-primary[_ngcontent-%COMP%]{--mat-full-pseudo-checkbox-selected-icon-color: #2196f3;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-primary[_ngcontent-%COMP%]{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #2196f3;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-accent[_ngcontent-%COMP%]{--mat-full-pseudo-checkbox-selected-icon-color: #b0bec5;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-accent[_ngcontent-%COMP%]{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #b0bec5;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-warn[_ngcontent-%COMP%]{--mat-full-pseudo-checkbox-selected-icon-color: #f44336;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-warn[_ngcontent-%COMP%]{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #f44336;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}html[_ngcontent-%COMP%]{--mat-app-background-color: #fafafa;--mat-app-text-color: rgba(0, 0, 0, .87);--mat-app-elevation-shadow-level-0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-2: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-3: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-4: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-5: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 5px 8px 0px rgba(0, 0, 0, .14), 0px 1px 14px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-6: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-7: 0px 4px 5px -2px rgba(0, 0, 0, .2), 0px 7px 10px 1px rgba(0, 0, 0, .14), 0px 2px 16px 1px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-8: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-9: 0px 5px 6px -3px rgba(0, 0, 0, .2), 0px 9px 12px 1px rgba(0, 0, 0, .14), 0px 3px 16px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-10: 0px 6px 6px -3px rgba(0, 0, 0, .2), 0px 10px 14px 1px rgba(0, 0, 0, .14), 0px 4px 18px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-11: 0px 6px 7px -4px rgba(0, 0, 0, .2), 0px 11px 15px 1px rgba(0, 0, 0, .14), 0px 4px 20px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-12: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-13: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 13px 19px 2px rgba(0, 0, 0, .14), 0px 5px 24px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-14: 0px 7px 9px -4px rgba(0, 0, 0, .2), 0px 14px 21px 2px rgba(0, 0, 0, .14), 0px 5px 26px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-15: 0px 8px 9px -5px rgba(0, 0, 0, .2), 0px 15px 22px 2px rgba(0, 0, 0, .14), 0px 6px 28px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-16: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-17: 0px 8px 11px -5px rgba(0, 0, 0, .2), 0px 17px 26px 2px rgba(0, 0, 0, .14), 0px 6px 32px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-18: 0px 9px 11px -5px rgba(0, 0, 0, .2), 0px 18px 28px 2px rgba(0, 0, 0, .14), 0px 7px 34px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-19: 0px 9px 12px -6px rgba(0, 0, 0, .2), 0px 19px 29px 2px rgba(0, 0, 0, .14), 0px 7px 36px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-20: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 20px 31px 3px rgba(0, 0, 0, .14), 0px 8px 38px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-21: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 21px 33px 3px rgba(0, 0, 0, .14), 0px 8px 40px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-22: 0px 10px 14px -6px rgba(0, 0, 0, .2), 0px 22px 35px 3px rgba(0, 0, 0, .14), 0px 8px 42px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-23: 0px 11px 14px -7px rgba(0, 0, 0, .2), 0px 23px 36px 3px rgba(0, 0, 0, .14), 0px 9px 44px 8px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-24: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-elevated-card-container-shape: 4px}html[_ngcontent-%COMP%]{--mdc-outlined-card-container-shape: 4px;--mdc-outlined-card-outline-width: 1px}html[_ngcontent-%COMP%]{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}html[_ngcontent-%COMP%]{--mdc-linear-progress-active-indicator-height: 4px;--mdc-linear-progress-track-height: 4px;--mdc-linear-progress-track-shape: 0}.mat-mdc-progress-bar[_ngcontent-%COMP%]{--mdc-linear-progress-active-indicator-color: #2196f3;--mdc-linear-progress-track-color: rgba(33, 150, 243, .25)}.mat-mdc-progress-bar.mat-accent[_ngcontent-%COMP%]{--mdc-linear-progress-active-indicator-color: #b0bec5;--mdc-linear-progress-track-color: rgba(176, 190, 197, .25)}.mat-mdc-progress-bar.mat-warn[_ngcontent-%COMP%]{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}html[_ngcontent-%COMP%]{--mdc-plain-tooltip-container-shape: 4px;--mdc-plain-tooltip-supporting-text-line-height: 16px}html[_ngcontent-%COMP%]{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html[_ngcontent-%COMP%]{--mdc-filled-text-field-active-indicator-height: 1px;--mdc-filled-text-field-focus-active-indicator-height: 2px;--mdc-filled-text-field-container-shape: 4px}html[_ngcontent-%COMP%]{--mdc-outlined-text-field-outline-width: 1px;--mdc-outlined-text-field-focus-outline-width: 2px;--mdc-outlined-text-field-container-shape: 4px}html[_ngcontent-%COMP%]{--mdc-filled-text-field-caret-color: #2196f3;--mdc-filled-text-field-focus-active-indicator-color: #2196f3;--mdc-filled-text-field-focus-label-text-color: rgba(33, 150, 243, .87);--mdc-filled-text-field-container-color: rgb(244.8, 244.8, 244.8);--mdc-filled-text-field-disabled-container-color: rgb(249.9, 249.9, 249.9);--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-hover-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-hover-label-text-color: #f44336;--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336}html[_ngcontent-%COMP%]{--mdc-outlined-text-field-caret-color: #2196f3;--mdc-outlined-text-field-focus-outline-color: #2196f3;--mdc-outlined-text-field-focus-label-text-color: rgba(33, 150, 243, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-hover-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-error-hover-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336}html[_ngcontent-%COMP%]{--mat-form-field-focus-select-arrow-color: rgba(33, 150, 243, .87);--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38);--mat-form-field-state-layer-color: rgba(0, 0, 0, .87);--mat-form-field-error-text-color: #f44336;--mat-form-field-select-option-text-color: inherit;--mat-form-field-select-disabled-option-text-color: GrayText;--mat-form-field-leading-icon-color: unset;--mat-form-field-disabled-leading-icon-color: unset;--mat-form-field-trailing-icon-color: unset;--mat-form-field-disabled-trailing-icon-color: unset;--mat-form-field-error-focus-trailing-icon-color: unset;--mat-form-field-error-hover-trailing-icon-color: unset;--mat-form-field-error-trailing-icon-color: unset;--mat-form-field-enabled-select-arrow-color: rgba(0, 0, 0, .54);--mat-form-field-disabled-select-arrow-color: rgba(0, 0, 0, .38);--mat-form-field-hover-state-layer-opacity: .04;--mat-form-field-focus-state-layer-opacity: .08}.mat-mdc-form-field.mat-accent[_ngcontent-%COMP%]{--mdc-filled-text-field-caret-color: #b0bec5;--mdc-filled-text-field-focus-active-indicator-color: #b0bec5;--mdc-filled-text-field-focus-label-text-color: rgba(176, 190, 197, .87)}.mat-mdc-form-field.mat-accent[_ngcontent-%COMP%]{--mdc-outlined-text-field-caret-color: #b0bec5;--mdc-outlined-text-field-focus-outline-color: #b0bec5;--mdc-outlined-text-field-focus-label-text-color: rgba(176, 190, 197, .87)}.mat-mdc-form-field.mat-accent[_ngcontent-%COMP%]{--mat-form-field-focus-select-arrow-color: rgba(176, 190, 197, .87)}.mat-mdc-form-field.mat-warn[_ngcontent-%COMP%]{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-warn[_ngcontent-%COMP%]{--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-warn[_ngcontent-%COMP%]{--mat-form-field-focus-select-arrow-color: rgba(244, 67, 54, .87)}html[_ngcontent-%COMP%]{--mat-form-field-container-height: 56px;--mat-form-field-filled-label-display: block;--mat-form-field-container-vertical-padding: 16px;--mat-form-field-filled-with-label-container-padding-top: 24px;--mat-form-field-filled-with-label-container-padding-bottom: 8px}html[_ngcontent-%COMP%]{--mat-select-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(33, 150, 243, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html[_ngcontent-%COMP%] .mat-mdc-form-field.mat-accent[_ngcontent-%COMP%]{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(176, 190, 197, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html[_ngcontent-%COMP%] .mat-mdc-form-field.mat-warn[_ngcontent-%COMP%]{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html[_ngcontent-%COMP%]{--mat-select-arrow-transform: translateY(-8px)}html[_ngcontent-%COMP%]{--mat-autocomplete-container-shape: 4px;--mat-autocomplete-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-autocomplete-background-color: white}html[_ngcontent-%COMP%]{--mdc-dialog-container-shape: 4px}html[_ngcontent-%COMP%]{--mat-dialog-container-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12);--mat-dialog-container-max-width: 80vw;--mat-dialog-container-small-max-width: 80vw;--mat-dialog-container-min-width: 0;--mat-dialog-actions-alignment: start;--mat-dialog-actions-padding: 8px;--mat-dialog-content-padding: 20px 24px;--mat-dialog-with-actions-content-padding: 20px 24px;--mat-dialog-headline-padding: 0 24px 9px}html[_ngcontent-%COMP%]{--mdc-dialog-container-color: white;--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mdc-chip-container-shape-radius: 16px;--mdc-chip-with-avatar-avatar-shape-radius: 14px;--mdc-chip-with-avatar-avatar-size: 28px;--mdc-chip-with-icon-icon-size: 18px;--mdc-chip-outline-width: 0;--mdc-chip-outline-color: transparent;--mdc-chip-disabled-outline-color: transparent;--mdc-chip-focus-outline-color: transparent;--mdc-chip-hover-state-layer-opacity: .04;--mdc-chip-with-avatar-disabled-avatar-opacity: 1;--mdc-chip-flat-selected-outline-width: 0;--mdc-chip-selected-hover-state-layer-opacity: .04;--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity: 1;--mdc-chip-with-icon-disabled-icon-opacity: 1}.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mat-chip-disabled-container-opacity: .4;--mat-chip-trailing-action-opacity: .54;--mat-chip-trailing-action-focus-opacity: 1;--mat-chip-trailing-action-state-layer-color: transparent;--mat-chip-selected-trailing-action-state-layer-color: transparent;--mat-chip-trailing-action-hover-state-layer-opacity: 0;--mat-chip-trailing-action-focus-state-layer-opacity: 0}.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-elevated-selected-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-elevated-disabled-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-flat-disabled-selected-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-selected-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121}.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mat-chip-selected-disabled-trailing-icon-color: #212121;--mat-chip-selected-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary[_ngcontent-%COMP%]{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #2196f3;--mdc-chip-elevated-selected-container-color: #2196f3;--mdc-chip-elevated-disabled-container-color: #2196f3;--mdc-chip-flat-disabled-selected-container-color: #2196f3;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-selected-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary[_ngcontent-%COMP%]{--mat-chip-selected-disabled-trailing-icon-color: white;--mat-chip-selected-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent[_ngcontent-%COMP%]{--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-elevated-container-color: #b0bec5;--mdc-chip-elevated-selected-container-color: #b0bec5;--mdc-chip-elevated-disabled-container-color: #b0bec5;--mdc-chip-flat-disabled-selected-container-color: #b0bec5;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-selected-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent[_ngcontent-%COMP%]{--mat-chip-selected-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mat-chip-selected-trailing-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn[_ngcontent-%COMP%]{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-selected-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-flat-disabled-selected-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-selected-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn[_ngcontent-%COMP%]{--mat-chip-selected-disabled-trailing-icon-color: white;--mat-chip-selected-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mdc-chip-container-height: 32px}html[_ngcontent-%COMP%]{--mdc-switch-disabled-selected-icon-opacity: .38;--mdc-switch-disabled-track-opacity: .12;--mdc-switch-disabled-unselected-icon-opacity: .38;--mdc-switch-handle-height: 20px;--mdc-switch-handle-shape: 10px;--mdc-switch-handle-width: 20px;--mdc-switch-selected-icon-size: 18px;--mdc-switch-track-height: 14px;--mdc-switch-track-shape: 7px;--mdc-switch-track-width: 36px;--mdc-switch-unselected-icon-size: 18px;--mdc-switch-selected-focus-state-layer-opacity: .12;--mdc-switch-selected-hover-state-layer-opacity: .04;--mdc-switch-selected-pressed-state-layer-opacity: .1;--mdc-switch-unselected-focus-state-layer-opacity: .12;--mdc-switch-unselected-hover-state-layer-opacity: .04;--mdc-switch-unselected-pressed-state-layer-opacity: .1}html[_ngcontent-%COMP%] .mat-mdc-slide-toggle[_ngcontent-%COMP%]{--mat-switch-disabled-selected-handle-opacity: .38;--mat-switch-disabled-unselected-handle-opacity: .38;--mat-switch-unselected-handle-size: 20px;--mat-switch-selected-handle-size: 20px;--mat-switch-pressed-handle-size: 20px;--mat-switch-with-icon-handle-size: 20px;--mat-switch-selected-handle-horizontal-margin: 0;--mat-switch-selected-with-icon-handle-horizontal-margin: 0;--mat-switch-selected-pressed-handle-horizontal-margin: 0;--mat-switch-unselected-handle-horizontal-margin: 0;--mat-switch-unselected-with-icon-handle-horizontal-margin: 0;--mat-switch-unselected-pressed-handle-horizontal-margin: 0;--mat-switch-visible-track-opacity: 1;--mat-switch-hidden-track-opacity: 1;--mat-switch-visible-track-transition: transform 75ms 0ms cubic-bezier(0, 0, .2, 1);--mat-switch-hidden-track-transition: transform 75ms 0ms cubic-bezier(.4, 0, .6, 1);--mat-switch-track-outline-width: 1px;--mat-switch-track-outline-color: transparent;--mat-switch-selected-track-outline-width: 1px;--mat-switch-selected-track-outline-color: transparent;--mat-switch-disabled-unselected-track-outline-width: 1px;--mat-switch-disabled-unselected-track-outline-color: transparent}html[_ngcontent-%COMP%]{--mdc-switch-selected-focus-state-layer-color: #1e88e5;--mdc-switch-selected-handle-color: #1e88e5;--mdc-switch-selected-hover-state-layer-color: #1e88e5;--mdc-switch-selected-pressed-state-layer-color: #1e88e5;--mdc-switch-selected-focus-handle-color: #0d47a1;--mdc-switch-selected-hover-handle-color: #0d47a1;--mdc-switch-selected-pressed-handle-color: #0d47a1;--mdc-switch-selected-focus-track-color: #64b5f6;--mdc-switch-selected-hover-track-color: #64b5f6;--mdc-switch-selected-pressed-track-color: #64b5f6;--mdc-switch-selected-track-color: #64b5f6;--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: #fff;--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-switch-disabled-label-text-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%] .mat-mdc-slide-toggle[_ngcontent-%COMP%]{--mat-switch-label-text-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%] .mat-mdc-slide-toggle.mat-accent[_ngcontent-%COMP%]{--mdc-switch-selected-focus-state-layer-color: #546e7a;--mdc-switch-selected-handle-color: #546e7a;--mdc-switch-selected-hover-state-layer-color: #546e7a;--mdc-switch-selected-pressed-state-layer-color: #546e7a;--mdc-switch-selected-focus-handle-color: #263238;--mdc-switch-selected-hover-handle-color: #263238;--mdc-switch-selected-pressed-handle-color: #263238;--mdc-switch-selected-focus-track-color: #90a4ae;--mdc-switch-selected-hover-track-color: #90a4ae;--mdc-switch-selected-pressed-track-color: #90a4ae;--mdc-switch-selected-track-color: #90a4ae}html[_ngcontent-%COMP%] .mat-mdc-slide-toggle.mat-warn[_ngcontent-%COMP%]{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}html[_ngcontent-%COMP%]{--mdc-switch-state-layer-size: 40px}html[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-opacity: .38;--mdc-radio-disabled-unselected-icon-opacity: .38;--mdc-radio-state-layer-size: 40px}.mat-mdc-radio-button.mat-primary[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #2196f3;--mdc-radio-selected-hover-icon-color: #2196f3;--mdc-radio-selected-icon-color: #2196f3;--mdc-radio-selected-pressed-icon-color: #2196f3}.mat-mdc-radio-button.mat-primary[_ngcontent-%COMP%]{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #2196f3;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-accent[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #b0bec5;--mdc-radio-selected-hover-icon-color: #b0bec5;--mdc-radio-selected-icon-color: #b0bec5;--mdc-radio-selected-pressed-icon-color: #b0bec5}.mat-mdc-radio-button.mat-accent[_ngcontent-%COMP%]{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #b0bec5;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-warn[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-radio-button.mat-warn[_ngcontent-%COMP%]{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%]{--mdc-radio-state-layer-size: 40px}html[_ngcontent-%COMP%]{--mat-radio-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-slider-active-track-height: 6px;--mdc-slider-active-track-shape: 9999px;--mdc-slider-handle-height: 20px;--mdc-slider-handle-shape: 50%;--mdc-slider-handle-width: 20px;--mdc-slider-inactive-track-height: 4px;--mdc-slider-inactive-track-shape: 9999px;--mdc-slider-with-overlap-handle-outline-width: 1px;--mdc-slider-with-tick-marks-active-container-opacity: .6;--mdc-slider-with-tick-marks-container-shape: 50%;--mdc-slider-with-tick-marks-container-size: 2px;--mdc-slider-with-tick-marks-inactive-container-opacity: .6;--mdc-slider-handle-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-slider-value-indicator-width: auto;--mat-slider-value-indicator-height: 32px;--mat-slider-value-indicator-caret-display: block;--mat-slider-value-indicator-border-radius: 4px;--mat-slider-value-indicator-padding: 0 12px;--mat-slider-value-indicator-text-transform: none;--mat-slider-value-indicator-container-transform: translateX(-50%)}html[_ngcontent-%COMP%]{--mdc-slider-handle-color: #2196f3;--mdc-slider-focus-handle-color: #2196f3;--mdc-slider-hover-handle-color: #2196f3;--mdc-slider-active-track-color: #2196f3;--mdc-slider-inactive-track-color: #2196f3;--mdc-slider-with-tick-marks-inactive-container-color: #2196f3;--mdc-slider-with-tick-marks-active-container-color: white;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-label-container-color: #000;--mdc-slider-label-label-text-color: #fff;--mdc-slider-with-overlap-handle-outline-color: #fff;--mdc-slider-with-tick-marks-disabled-container-color: #000}html[_ngcontent-%COMP%]{--mat-slider-ripple-color: #2196f3;--mat-slider-hover-state-layer-color: rgba(33, 150, 243, .05);--mat-slider-focus-state-layer-color: rgba(33, 150, 243, .2);--mat-slider-value-indicator-opacity: .6}html[_ngcontent-%COMP%] .mat-accent[_ngcontent-%COMP%]{--mdc-slider-handle-color: #b0bec5;--mdc-slider-focus-handle-color: #b0bec5;--mdc-slider-hover-handle-color: #b0bec5;--mdc-slider-active-track-color: #b0bec5;--mdc-slider-inactive-track-color: #b0bec5;--mdc-slider-with-tick-marks-inactive-container-color: #b0bec5;--mdc-slider-with-tick-marks-active-container-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%] .mat-accent[_ngcontent-%COMP%]{--mat-slider-ripple-color: #b0bec5;--mat-slider-hover-state-layer-color: rgba(176, 190, 197, .05);--mat-slider-focus-state-layer-color: rgba(176, 190, 197, .2)}html[_ngcontent-%COMP%] .mat-warn[_ngcontent-%COMP%]{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: white}html[_ngcontent-%COMP%] .mat-warn[_ngcontent-%COMP%]{--mat-slider-ripple-color: #f44336;--mat-slider-hover-state-layer-color: rgba(244, 67, 54, .05);--mat-slider-focus-state-layer-color: rgba(244, 67, 54, .2)}html[_ngcontent-%COMP%]{--mat-menu-container-shape: 4px;--mat-menu-divider-bottom-spacing: 0;--mat-menu-divider-top-spacing: 0;--mat-menu-item-spacing: 16px;--mat-menu-item-icon-size: 24px;--mat-menu-item-leading-spacing: 16px;--mat-menu-item-trailing-spacing: 16px;--mat-menu-item-with-icon-leading-spacing: 16px;--mat-menu-item-with-icon-trailing-spacing: 16px;--mat-menu-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white;--mat-menu-divider-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-list-list-item-container-shape: 0;--mdc-list-list-item-leading-avatar-shape: 50%;--mdc-list-list-item-container-color: transparent;--mdc-list-list-item-selected-container-color: transparent;--mdc-list-list-item-leading-avatar-color: transparent;--mdc-list-list-item-leading-icon-size: 24px;--mdc-list-list-item-leading-avatar-size: 40px;--mdc-list-list-item-trailing-icon-size: 24px;--mdc-list-list-item-disabled-state-layer-color: transparent;--mdc-list-list-item-disabled-state-layer-opacity: 0;--mdc-list-list-item-disabled-label-text-opacity: .38;--mdc-list-list-item-disabled-leading-icon-opacity: .38;--mdc-list-list-item-disabled-trailing-icon-opacity: .38}html[_ngcontent-%COMP%]{--mat-list-active-indicator-color: transparent;--mat-list-active-indicator-shape: 4px}html[_ngcontent-%COMP%]{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mdc-list-item__start[_ngcontent-%COMP%], .mdc-list-item__end[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #2196f3;--mdc-radio-selected-hover-icon-color: #2196f3;--mdc-radio-selected-icon-color: #2196f3;--mdc-radio-selected-pressed-icon-color: #2196f3}.mat-accent[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%], .mat-accent[_ngcontent-%COMP%] .mdc-list-item__end[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #b0bec5;--mdc-radio-selected-hover-icon-color: #b0bec5;--mdc-radio-selected-icon-color: #b0bec5;--mdc-radio-selected-pressed-icon-color: #b0bec5}.mat-warn[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%], .mat-warn[_ngcontent-%COMP%] .mdc-list-item__end[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #2196f3;--mdc-checkbox-selected-hover-icon-color: #2196f3;--mdc-checkbox-selected-icon-color: #2196f3;--mdc-checkbox-selected-pressed-icon-color: #2196f3;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #2196f3;--mdc-checkbox-selected-hover-state-layer-color: #2196f3;--mdc-checkbox-selected-pressed-state-layer-color: #2196f3;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: black;--mdc-checkbox-selected-focus-icon-color: #b0bec5;--mdc-checkbox-selected-hover-icon-color: #b0bec5;--mdc-checkbox-selected-icon-color: #b0bec5;--mdc-checkbox-selected-pressed-icon-color: #b0bec5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #b0bec5;--mdc-checkbox-selected-hover-state-layer-color: #b0bec5;--mdc-checkbox-selected-pressed-state-layer-color: #b0bec5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-base.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--selected[_ngcontent-%COMP%] .mdc-list-item__primary-text[_ngcontent-%COMP%], .mat-mdc-list-base.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--selected[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%], .mat-mdc-list-base.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--activated[_ngcontent-%COMP%] .mdc-list-item__primary-text[_ngcontent-%COMP%], .mat-mdc-list-base.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--activated[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%]{color:#2196f3}.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--disabled[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%], .mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--disabled[_ngcontent-%COMP%] .mdc-list-item__content[_ngcontent-%COMP%], .mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--disabled[_ngcontent-%COMP%] .mdc-list-item__end[_ngcontent-%COMP%]{opacity:1}html[_ngcontent-%COMP%]{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}html[_ngcontent-%COMP%]{--mat-list-list-item-leading-icon-start-space: 16px;--mat-list-list-item-leading-icon-end-space: 32px}.mdc-list-item__start[_ngcontent-%COMP%], .mdc-list-item__end[_ngcontent-%COMP%]{--mdc-radio-state-layer-size: 40px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line[_ngcontent-%COMP%], .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line[_ngcontent-%COMP%], .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line[_ngcontent-%COMP%]{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines[_ngcontent-%COMP%], .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines[_ngcontent-%COMP%], .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines[_ngcontent-%COMP%]{height:72px}html[_ngcontent-%COMP%]{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-paginator-container-size: 56px;--mat-paginator-form-field-container-height: 40px;--mat-paginator-form-field-container-vertical-padding: 8px;--mat-paginator-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-secondary-navigation-tab-container-height: 48px}html[_ngcontent-%COMP%]{--mdc-tab-indicator-active-indicator-height: 2px;--mdc-tab-indicator-active-indicator-shape: 0}html[_ngcontent-%COMP%]{--mat-tab-header-divider-color: transparent;--mat-tab-header-divider-height: 0}.mat-mdc-tab-group[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar[_ngcontent-%COMP%]{--mdc-tab-indicator-active-indicator-color: #2196f3}.mat-mdc-tab-group[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar[_ngcontent-%COMP%]{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #2196f3;--mat-tab-header-active-ripple-color: #2196f3;--mat-tab-header-inactive-ripple-color: #2196f3;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #2196f3;--mat-tab-header-active-hover-label-text-color: #2196f3;--mat-tab-header-active-focus-indicator-color: #2196f3;--mat-tab-header-active-hover-indicator-color: #2196f3}.mat-mdc-tab-group.mat-accent[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-accent[_ngcontent-%COMP%]{--mdc-tab-indicator-active-indicator-color: #b0bec5}.mat-mdc-tab-group.mat-accent[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-accent[_ngcontent-%COMP%]{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #b0bec5;--mat-tab-header-active-ripple-color: #b0bec5;--mat-tab-header-inactive-ripple-color: #b0bec5;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #b0bec5;--mat-tab-header-active-hover-label-text-color: #b0bec5;--mat-tab-header-active-focus-indicator-color: #b0bec5;--mat-tab-header-active-hover-indicator-color: #b0bec5}.mat-mdc-tab-group.mat-warn[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-warn[_ngcontent-%COMP%]{--mdc-tab-indicator-active-indicator-color: #f44336}.mat-mdc-tab-group.mat-warn[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-warn[_ngcontent-%COMP%]{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-background-primary[_ngcontent-%COMP%]{--mat-tab-header-with-background-background-color: #2196f3;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-background-accent[_ngcontent-%COMP%]{--mat-tab-header-with-background-background-color: #b0bec5;--mat-tab-header-with-background-foreground-color: rgba(0, 0, 0, .87)}.mat-mdc-tab-group.mat-background-warn[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-background-warn[_ngcontent-%COMP%]{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header[_ngcontent-%COMP%]{--mdc-secondary-navigation-tab-container-height: 48px}html[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-state-layer-opacity: .16;--mdc-checkbox-selected-hover-state-layer-opacity: .04;--mdc-checkbox-selected-pressed-state-layer-opacity: .16;--mdc-checkbox-unselected-focus-state-layer-opacity: .16;--mdc-checkbox-unselected-hover-state-layer-opacity: .04;--mdc-checkbox-unselected-pressed-state-layer-opacity: .16}html[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: black;--mdc-checkbox-selected-focus-icon-color: #b0bec5;--mdc-checkbox-selected-hover-icon-color: #b0bec5;--mdc-checkbox-selected-icon-color: #b0bec5;--mdc-checkbox-selected-pressed-icon-color: #b0bec5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #b0bec5;--mdc-checkbox-selected-hover-state-layer-color: #b0bec5;--mdc-checkbox-selected-pressed-state-layer-color: #b0bec5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}html[_ngcontent-%COMP%]{--mat-checkbox-disabled-label-color: rgba(0, 0, 0, .38);--mat-checkbox-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-checkbox.mat-primary[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #2196f3;--mdc-checkbox-selected-hover-icon-color: #2196f3;--mdc-checkbox-selected-icon-color: #2196f3;--mdc-checkbox-selected-pressed-icon-color: #2196f3;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #2196f3;--mdc-checkbox-selected-hover-state-layer-color: #2196f3;--mdc-checkbox-selected-pressed-state-layer-color: #2196f3;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}html[_ngcontent-%COMP%]{--mdc-checkbox-state-layer-size: 40px}html[_ngcontent-%COMP%]{--mat-checkbox-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-text-button-container-shape: 4px;--mdc-text-button-keep-touch-target: false}html[_ngcontent-%COMP%]{--mdc-filled-button-container-shape: 4px;--mdc-filled-button-keep-touch-target: false}html[_ngcontent-%COMP%]{--mdc-protected-button-container-shape: 4px;--mdc-protected-button-container-elevation-shadow: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mdc-protected-button-disabled-container-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-protected-button-focus-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-hover-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-pressed-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-outlined-button-keep-touch-target: false;--mdc-outlined-button-outline-width: 1px;--mdc-outlined-button-container-shape: 4px}html[_ngcontent-%COMP%]{--mat-text-button-horizontal-padding: 8px;--mat-text-button-with-icon-horizontal-padding: 8px;--mat-text-button-icon-spacing: 8px;--mat-text-button-icon-offset: 0}html[_ngcontent-%COMP%]{--mat-filled-button-horizontal-padding: 16px;--mat-filled-button-icon-spacing: 8px;--mat-filled-button-icon-offset: -4px}html[_ngcontent-%COMP%]{--mat-protected-button-horizontal-padding: 16px;--mat-protected-button-icon-spacing: 8px;--mat-protected-button-icon-offset: -4px}html[_ngcontent-%COMP%]{--mat-outlined-button-horizontal-padding: 15px;--mat-outlined-button-icon-spacing: 8px;--mat-outlined-button-icon-offset: -4px}html[_ngcontent-%COMP%]{--mdc-text-button-label-text-color: black;--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mat-text-button-state-layer-color: black;--mat-text-button-disabled-state-layer-color: black;--mat-text-button-ripple-color: rgba(0, 0, 0, .1);--mat-text-button-hover-state-layer-opacity: .04;--mat-text-button-focus-state-layer-opacity: .12;--mat-text-button-pressed-state-layer-opacity: .12}html[_ngcontent-%COMP%]{--mdc-filled-button-container-color: white;--mdc-filled-button-label-text-color: black;--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mat-filled-button-state-layer-color: black;--mat-filled-button-disabled-state-layer-color: black;--mat-filled-button-ripple-color: rgba(0, 0, 0, .1);--mat-filled-button-hover-state-layer-opacity: .04;--mat-filled-button-focus-state-layer-opacity: .12;--mat-filled-button-pressed-state-layer-opacity: .12}html[_ngcontent-%COMP%]{--mdc-protected-button-container-color: white;--mdc-protected-button-label-text-color: black;--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mat-protected-button-state-layer-color: black;--mat-protected-button-disabled-state-layer-color: black;--mat-protected-button-ripple-color: rgba(0, 0, 0, .1);--mat-protected-button-hover-state-layer-opacity: .04;--mat-protected-button-focus-state-layer-opacity: .12;--mat-protected-button-pressed-state-layer-opacity: .12}html[_ngcontent-%COMP%]{--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-label-text-color: black;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-outlined-button-state-layer-color: black;--mat-outlined-button-disabled-state-layer-color: black;--mat-outlined-button-ripple-color: rgba(0, 0, 0, .1);--mat-outlined-button-hover-state-layer-opacity: .04;--mat-outlined-button-focus-state-layer-opacity: .12;--mat-outlined-button-pressed-state-layer-opacity: .12}.mat-mdc-button.mat-primary[_ngcontent-%COMP%]{--mdc-text-button-label-text-color: #2196f3}.mat-mdc-button.mat-primary[_ngcontent-%COMP%]{--mat-text-button-state-layer-color: #2196f3;--mat-text-button-ripple-color: rgba(33, 150, 243, .1)}.mat-mdc-button.mat-accent[_ngcontent-%COMP%]{--mdc-text-button-label-text-color: #b0bec5}.mat-mdc-button.mat-accent[_ngcontent-%COMP%]{--mat-text-button-state-layer-color: #b0bec5;--mat-text-button-ripple-color: rgba(176, 190, 197, .1)}.mat-mdc-button.mat-warn[_ngcontent-%COMP%]{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button.mat-warn[_ngcontent-%COMP%]{--mat-text-button-state-layer-color: #f44336;--mat-text-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-unelevated-button.mat-primary[_ngcontent-%COMP%]{--mdc-filled-button-container-color: #2196f3;--mdc-filled-button-label-text-color: white}.mat-mdc-unelevated-button.mat-primary[_ngcontent-%COMP%]{--mat-filled-button-state-layer-color: white;--mat-filled-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-unelevated-button.mat-accent[_ngcontent-%COMP%]{--mdc-filled-button-container-color: #b0bec5;--mdc-filled-button-label-text-color: black}.mat-mdc-unelevated-button.mat-accent[_ngcontent-%COMP%]{--mat-filled-button-state-layer-color: black;--mat-filled-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-unelevated-button.mat-warn[_ngcontent-%COMP%]{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: white}.mat-mdc-unelevated-button.mat-warn[_ngcontent-%COMP%]{--mat-filled-button-state-layer-color: white;--mat-filled-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-primary[_ngcontent-%COMP%]{--mdc-protected-button-container-color: #2196f3;--mdc-protected-button-label-text-color: white}.mat-mdc-raised-button.mat-primary[_ngcontent-%COMP%]{--mat-protected-button-state-layer-color: white;--mat-protected-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-accent[_ngcontent-%COMP%]{--mdc-protected-button-container-color: #b0bec5;--mdc-protected-button-label-text-color: black}.mat-mdc-raised-button.mat-accent[_ngcontent-%COMP%]{--mat-protected-button-state-layer-color: black;--mat-protected-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button.mat-warn[_ngcontent-%COMP%]{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: white}.mat-mdc-raised-button.mat-warn[_ngcontent-%COMP%]{--mat-protected-button-state-layer-color: white;--mat-protected-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-outlined-button.mat-primary[_ngcontent-%COMP%]{--mdc-outlined-button-label-text-color: #2196f3;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-primary[_ngcontent-%COMP%]{--mat-outlined-button-state-layer-color: #2196f3;--mat-outlined-button-ripple-color: rgba(33, 150, 243, .1)}.mat-mdc-outlined-button.mat-accent[_ngcontent-%COMP%]{--mdc-outlined-button-label-text-color: #b0bec5;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-accent[_ngcontent-%COMP%]{--mat-outlined-button-state-layer-color: #b0bec5;--mat-outlined-button-ripple-color: rgba(176, 190, 197, .1)}.mat-mdc-outlined-button.mat-warn[_ngcontent-%COMP%]{--mdc-outlined-button-label-text-color: #f44336;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-warn[_ngcontent-%COMP%]{--mat-outlined-button-state-layer-color: #f44336;--mat-outlined-button-ripple-color: rgba(244, 67, 54, .1)}html[_ngcontent-%COMP%]{--mdc-text-button-container-height: 36px}html[_ngcontent-%COMP%]{--mdc-filled-button-container-height: 36px}html[_ngcontent-%COMP%]{--mdc-protected-button-container-height: 36px}html[_ngcontent-%COMP%]{--mdc-outlined-button-container-height: 36px}html[_ngcontent-%COMP%]{--mat-text-button-touch-target-display: block}html[_ngcontent-%COMP%]{--mat-filled-button-touch-target-display: block}html[_ngcontent-%COMP%]{--mat-protected-button-touch-target-display: block}html[_ngcontent-%COMP%]{--mat-outlined-button-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-icon-button-icon-size: 24px}html[_ngcontent-%COMP%]{--mdc-icon-button-icon-color: inherit;--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mat-icon-button-state-layer-color: black;--mat-icon-button-disabled-state-layer-color: black;--mat-icon-button-ripple-color: rgba(0, 0, 0, .1);--mat-icon-button-hover-state-layer-opacity: .04;--mat-icon-button-focus-state-layer-opacity: .12;--mat-icon-button-pressed-state-layer-opacity: .12}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-primary[_ngcontent-%COMP%]{--mdc-icon-button-icon-color: #2196f3}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-primary[_ngcontent-%COMP%]{--mat-icon-button-state-layer-color: #2196f3;--mat-icon-button-ripple-color: rgba(33, 150, 243, .1)}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-accent[_ngcontent-%COMP%]{--mdc-icon-button-icon-color: #b0bec5}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-accent[_ngcontent-%COMP%]{--mat-icon-button-state-layer-color: #b0bec5;--mat-icon-button-ripple-color: rgba(176, 190, 197, .1)}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-warn[_ngcontent-%COMP%]{--mdc-icon-button-icon-color: #f44336}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-warn[_ngcontent-%COMP%]{--mat-icon-button-state-layer-color: #f44336;--mat-icon-button-ripple-color: rgba(244, 67, 54, .1)}html[_ngcontent-%COMP%]{--mat-icon-button-touch-target-display: block}.mat-mdc-icon-button.mat-mdc-button-base[_ngcontent-%COMP%]{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}html[_ngcontent-%COMP%]{--mdc-fab-container-shape: 50%;--mdc-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-fab-small-container-shape: 50%;--mdc-fab-small-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-extended-fab-container-height: 48px;--mdc-extended-fab-container-shape: 24px;--mdc-extended-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-fab-container-color: white}html[_ngcontent-%COMP%]{--mat-fab-foreground-color: black;--mat-fab-state-layer-color: black;--mat-fab-disabled-state-layer-color: black;--mat-fab-ripple-color: rgba(0, 0, 0, .1);--mat-fab-hover-state-layer-opacity: .04;--mat-fab-focus-state-layer-opacity: .12;--mat-fab-pressed-state-layer-opacity: .12;--mat-fab-disabled-state-container-color: rgba(0, 0, 0, .12);--mat-fab-disabled-state-foreground-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mdc-fab-small-container-color: white}html[_ngcontent-%COMP%]{--mat-fab-small-foreground-color: black;--mat-fab-small-state-layer-color: black;--mat-fab-small-disabled-state-layer-color: black;--mat-fab-small-ripple-color: rgba(0, 0, 0, .1);--mat-fab-small-hover-state-layer-opacity: .04;--mat-fab-small-focus-state-layer-opacity: .12;--mat-fab-small-pressed-state-layer-opacity: .12;--mat-fab-small-disabled-state-container-color: rgba(0, 0, 0, .12);--mat-fab-small-disabled-state-foreground-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-primary[_ngcontent-%COMP%]{--mdc-fab-container-color: #2196f3}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-primary[_ngcontent-%COMP%]{--mat-fab-foreground-color: white;--mat-fab-state-layer-color: white;--mat-fab-ripple-color: rgba(255, 255, 255, .1)}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-accent[_ngcontent-%COMP%]{--mdc-fab-container-color: #b0bec5}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-accent[_ngcontent-%COMP%]{--mat-fab-foreground-color: black;--mat-fab-state-layer-color: black;--mat-fab-ripple-color: rgba(0, 0, 0, .1)}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-warn[_ngcontent-%COMP%]{--mdc-fab-container-color: #f44336}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-warn[_ngcontent-%COMP%]{--mat-fab-foreground-color: white;--mat-fab-state-layer-color: white;--mat-fab-ripple-color: rgba(255, 255, 255, .1)}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-primary[_ngcontent-%COMP%]{--mdc-fab-small-container-color: #2196f3}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-primary[_ngcontent-%COMP%]{--mat-fab-small-foreground-color: white;--mat-fab-small-state-layer-color: white;--mat-fab-small-ripple-color: rgba(255, 255, 255, .1)}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-accent[_ngcontent-%COMP%]{--mdc-fab-small-container-color: #b0bec5}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-accent[_ngcontent-%COMP%]{--mat-fab-small-foreground-color: black;--mat-fab-small-state-layer-color: black;--mat-fab-small-ripple-color: rgba(0, 0, 0, .1)}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-warn[_ngcontent-%COMP%]{--mdc-fab-small-container-color: #f44336}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-warn[_ngcontent-%COMP%]{--mat-fab-small-foreground-color: white;--mat-fab-small-state-layer-color: white;--mat-fab-small-ripple-color: rgba(255, 255, 255, .1)}html[_ngcontent-%COMP%]{--mat-fab-touch-target-display: block}html[_ngcontent-%COMP%]{--mat-fab-small-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-snackbar-container-shape: 4px}html[_ngcontent-%COMP%]{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}html[_ngcontent-%COMP%]{--mat-snack-bar-button-color: #b0bec5}html[_ngcontent-%COMP%]{--mat-table-row-item-outline-width: 1px}html[_ngcontent-%COMP%]{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}html[_ngcontent-%COMP%]{--mdc-circular-progress-active-indicator-width: 4px;--mdc-circular-progress-size: 48px}html[_ngcontent-%COMP%]{--mdc-circular-progress-active-indicator-color: #2196f3}html[_ngcontent-%COMP%] .mat-accent[_ngcontent-%COMP%]{--mdc-circular-progress-active-indicator-color: #b0bec5}html[_ngcontent-%COMP%] .mat-warn[_ngcontent-%COMP%]{--mdc-circular-progress-active-indicator-color: #f44336}html[_ngcontent-%COMP%]{--mat-badge-container-shape: 50%;--mat-badge-container-size: unset;--mat-badge-small-size-container-size: unset;--mat-badge-large-size-container-size: unset;--mat-badge-legacy-container-size: 22px;--mat-badge-legacy-small-size-container-size: 16px;--mat-badge-legacy-large-size-container-size: 28px;--mat-badge-container-offset: -11px 0;--mat-badge-small-size-container-offset: -8px 0;--mat-badge-large-size-container-offset: -14px 0;--mat-badge-container-overlap-offset: -11px;--mat-badge-small-size-container-overlap-offset: -8px;--mat-badge-large-size-container-overlap-offset: -14px;--mat-badge-container-padding: 0;--mat-badge-small-size-container-padding: 0;--mat-badge-large-size-container-padding: 0}html[_ngcontent-%COMP%]{--mat-badge-background-color: #2196f3;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent[_ngcontent-%COMP%]{--mat-badge-background-color: #b0bec5;--mat-badge-text-color: rgba(0, 0, 0, .87)}.mat-badge-warn[_ngcontent-%COMP%]{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html[_ngcontent-%COMP%]{--mat-bottom-sheet-container-shape: 4px}html[_ngcontent-%COMP%]{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html[_ngcontent-%COMP%]{--mat-legacy-button-toggle-height: 36px;--mat-legacy-button-toggle-shape: 2px;--mat-legacy-button-toggle-focus-state-layer-opacity: 1}html[_ngcontent-%COMP%]{--mat-standard-button-toggle-shape: 4px;--mat-standard-button-toggle-hover-state-layer-opacity: .04;--mat-standard-button-toggle-focus-state-layer-opacity: .12}html[_ngcontent-%COMP%]{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd}html[_ngcontent-%COMP%]{--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: rgb(224.4, 224.4, 224.4)}html[_ngcontent-%COMP%]{--mat-standard-button-toggle-height: 48px}html[_ngcontent-%COMP%]{--mat-datepicker-calendar-container-shape: 4px;--mat-datepicker-calendar-container-touch-shape: 4px;--mat-datepicker-calendar-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-datepicker-calendar-container-touch-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #2196f3;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(33, 150, 243, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(33, 150, 243, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(33, 150, 243, .3);--mat-datepicker-toggle-active-state-icon-color: #2196f3;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(33, 150, 243, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032);--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-text-color: black;--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent[_ngcontent-%COMP%]{--mat-datepicker-calendar-date-selected-state-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-selected-state-background-color: #b0bec5;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(176, 190, 197, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-focus-state-background-color: rgba(176, 190, 197, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(176, 190, 197, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(176, 190, 197, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032)}.mat-datepicker-content.mat-warn[_ngcontent-%COMP%]{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032)}.mat-datepicker-toggle-active.mat-accent[_ngcontent-%COMP%]{--mat-datepicker-toggle-active-state-icon-color: #b0bec5}.mat-datepicker-toggle-active.mat-warn[_ngcontent-%COMP%]{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls[_ngcontent-%COMP%]{--mat-icon-button-touch-target-display: none}.mat-calendar-controls[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-mdc-button-base[_ngcontent-%COMP%]{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}html[_ngcontent-%COMP%]{--mat-divider-width: 1px}html[_ngcontent-%COMP%]{--mat-divider-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-expansion-container-shape: 4px;--mat-expansion-legacy-header-indicator-display: inline-block;--mat-expansion-header-indicator-display: none}html[_ngcontent-%COMP%]{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html[_ngcontent-%COMP%]{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html[_ngcontent-%COMP%]{--mat-icon-color: inherit}.mat-icon.mat-primary[_ngcontent-%COMP%]{--mat-icon-color: #2196f3}.mat-icon.mat-accent[_ngcontent-%COMP%]{--mat-icon-color: #b0bec5}.mat-icon.mat-warn[_ngcontent-%COMP%]{--mat-icon-color: #f44336}html[_ngcontent-%COMP%]{--mat-sidenav-container-shape: 0;--mat-sidenav-container-elevation-shadow: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-sidenav-container-width: auto}html[_ngcontent-%COMP%]{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html[_ngcontent-%COMP%]{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #2196f3;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #2196f3;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #2196f3;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html[_ngcontent-%COMP%] .mat-step-header.mat-accent[_ngcontent-%COMP%]{--mat-stepper-header-icon-foreground-color: rgba(0, 0, 0, .87);--mat-stepper-header-selected-state-icon-background-color: #b0bec5;--mat-stepper-header-selected-state-icon-foreground-color: rgba(0, 0, 0, .87);--mat-stepper-header-done-state-icon-background-color: #b0bec5;--mat-stepper-header-done-state-icon-foreground-color: rgba(0, 0, 0, .87);--mat-stepper-header-edit-state-icon-background-color: #b0bec5;--mat-stepper-header-edit-state-icon-foreground-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%] .mat-step-header.mat-warn[_ngcontent-%COMP%]{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html[_ngcontent-%COMP%]{--mat-stepper-header-height: 72px}html[_ngcontent-%COMP%]{--mat-sort-arrow-color: rgb(117.3, 117.3, 117.3)}html[_ngcontent-%COMP%]{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary[_ngcontent-%COMP%]{--mat-toolbar-container-background-color: #2196f3;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent[_ngcontent-%COMP%]{--mat-toolbar-container-background-color: #b0bec5;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-warn[_ngcontent-%COMP%]{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html[_ngcontent-%COMP%]{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}html[_ngcontent-%COMP%]{--mat-tree-container-background-color: white;--mat-tree-node-text-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%]{--mat-tree-node-min-height: 48px}html[_ngcontent-%COMP%]{--mat-timepicker-container-shape: 4px;--mat-timepicker-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-timepicker-container-background-color: white}.overlay[_ngcontent-%COMP%]{z-index:1000;inset:0 0 0 0 absolute;background-color:#0003;display:flex;align-items:center;justify-content:center}.hidden[_ngcontent-%COMP%]{visibility:hidden;pointer-events:none}.hidden[_ngcontent-%COMP%], .hidden[_ngcontent-%COMP%] canvas[_ngcontent-%COMP%]{visibility:hidden;pointer-events:none}html[_ngcontent-%COMP%], body[_ngcontent-%COMP%]{height:100%;font-family:Google Symbols;font-family:Roboto,Helvetica Neue,sans-serif}html[_ngcontent-%COMP%]{overflow:hidden}body[_ngcontent-%COMP%]{background-color:#f5f5f5;margin:0;overflow:auto}body.search[_ngcontent-%COMP%]{background-color:#fff}.cursor-overlay[_ngcontent-%COMP%]{height:100%;left:0;position:fixed;top:0;width:100%;z-index:999;pointer-events:none}.cursor-overlay.grabbing[_ngcontent-%COMP%]{cursor:-webkit-grabbing}.cursor-overlay.wait[_ngcontent-%COMP%]{cursor:wait}hr[_ngcontent-%COMP%]{border-color:#0000001f;border-style:solid;border-width:1px 0 0;margin:0}.mat-icon[_ngcontent-%COMP%]{bottom:1px;position:relative}.mat-tooltip[_ngcontent-%COMP%]{margin:4px;font-size:12px}.cdk-overlay-pane[_ngcontent-%COMP%] .mat-mdc-dialog-container[_ngcontent-%COMP%]{min-width:25em}.mat-mdc-menu-content[_ngcontent-%COMP%]{background:#fff}.mat-drawer.mat-drawer-side[_ngcontent-%COMP%] .mat-drawer-inner-container[_ngcontent-%COMP%]{display:grid}.mat-mdc-dialog-container[_ngcontent-%COMP%] .mat-mdc-dialog-actions[_ngcontent-%COMP%]{padding:1em}.mat-mdc-dialog-container[_ngcontent-%COMP%] .mat-mdc-dialog-title[_ngcontent-%COMP%]{padding-top:1em}.mat-mdc-dialog-container[_ngcontent-%COMP%] .mat-mdc-dialog-title[_ngcontent-%COMP%]:before{content:unset}.mat-mdc-icon-button.mat-mdc-icon-button.mat-mdc-button-base[_ngcontent-%COMP%]{display:grid;height:auto;place-content:center center;padding:.2em;width:auto}.mat-icon[_ngcontent-%COMP%]{overflow:visible}.mat-dialog-container[_ngcontent-%COMP%] .mat-card[_ngcontent-%COMP%]{padding:24px}.mat-dialog-container[_ngcontent-%COMP%] .mat-card-header-text[_ngcontent-%COMP%]{margin:0}[_ngcontent-%COMP%]::-webkit-scrollbar{-webkit-appearance:none}[_ngcontent-%COMP%]::-webkit-scrollbar:horizontal{height:11px}[_ngcontent-%COMP%]::-webkit-scrollbar:vertical{width:11px}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border-radius:8px;border:2px solid white;background-color:#00000080}[_ngcontent-%COMP%]::-webkit-scrollbar-track{background-color:#fff;border-radius:8px}mat-sidenav-container[_ngcontent-%COMP%]{height:100%}.search-page[_ngcontent-%COMP%]{display:grid;grid-template-rows:min-content min-content 1fr;grid-template-columns:50em;height:95%;justify-content:center;overflow:auto;padding:0 1em 1em}.header[_ngcontent-%COMP%]{align-items:center;color:gray;display:grid;justify-content:center;font-family:Google Sans Display,Roboto,Arial,sans-serif;font-size:24px;letter-spacing:.17px;line-height:20px;padding:1.5em 0}.header-logo[_ngcontent-%COMP%]{align-items:center;cursor:pointer;display:grid;grid-column-gap:.3em;grid-template-columns:min-content max-content}.microscope-icon[_ngcontent-%COMP%]{top:3px}.status[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;padding-top:24px}.patient-info[_ngcontent-%COMP%]{padding:24px;font-family:Google Sans Text;font-size:12px;font-weight:400;line-height:16px;color:gray}.patient-info[_ngcontent-%COMP%] > h3[_ngcontent-%COMP%]{padding:0;margin:0;font-family:Google Sans Display;font-size:14px;font-weight:500;line-height:20px;color:gray} .mat-drawer.mat-drawer-side .mat-drawer-inner-container{overflow:hidden} .mat-mdc-form-field-infix{width:15em}.search-container[_ngcontent-%COMP%]{align-items:baseline;background-color:#eee;display:grid;grid-template-columns:25em min-content;grid-gap:0em 1em;justify-content:center;padding:1em 0}.bar[_ngcontent-%COMP%]{align-items:center;background-color:#eee;grid-gap:.5em 1em;display:grid;padding:1em;justify-content:center;grid-template-columns:max-content min-content}.bar[_ngcontent-%COMP%] .mat-form-field-underline{display:none}.bar[_ngcontent-%COMP%] .mat-form-field-wrapper{padding:0}.bar[_ngcontent-%COMP%] .mat-form-field-flex{align-items:end;padding:0}.bar[_ngcontent-%COMP%] .mat-form-field-prefix{padding-bottom:.2em;font-size:1.7em}.bar[_ngcontent-%COMP%] .mat-form-field-prefix .mat-icon{font-size:1em;height:1em;width:1em}.bar[_ngcontent-%COMP%] .mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button{width:unset;height:unset}.bar[_ngcontent-%COMP%] .mat-form-field-infix{width:21em}.force-upper[_ngcontent-%COMP%]{text-transform:uppercase}.uppercase-button[_ngcontent-%COMP%]{border-style:solid;border-width:thin;padding:2px}img[_ngcontent-%COMP%]{opacity:.7}.search-tip-section[_ngcontent-%COMP%]{font-size:.8em;color:#5f6368}.search-tip-title[_ngcontent-%COMP%]{font-weight:700}.search-tip-info[_ngcontent-%COMP%]{padding-left:1.3em;margin-top:0}.no-force-upper[_ngcontent-%COMP%]{opacity:.3}body[_ngcontent-%COMP%]{background-color:#fff}']})}}return a})()}}]); \ No newline at end of file diff --git a/web/391.9ed074a12d41c746.js b/web/391.9ed074a12d41c746.js new file mode 100644 index 0000000000000000000000000000000000000000..3618f7a5c88af42516359ad5aec159988006999a --- /dev/null +++ b/web/391.9ed074a12d41c746.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[391],{6708:(K,R,a)=>{a.d(R,{W:()=>u});var u=function(m){return m.LAST_MODIFIED_ASC="_lastUpdated",m.LAST_MODIFIED_DESC="-_lastUpdated",m}(u||{})},9625:(K,R,a)=>{a.d(R,{s:()=>m});var u=a(4438);let m=(()=>{class v{transform(E){return{id:E}}static{this.\u0275fac=function($){return new($||v)}}static{this.\u0275pipe=u.EJ8({name:"DICOMUriToSlideDescriptorPipe",type:v,pure:!0})}}return v})()},2024:(K,R,a)=>{a.d(R,{S:()=>le});var u=a(4412),m=a(2771),v=a(6648),j=a(9030),E=a(7673),$=a(7468),C=a(983),L=a(8294),D=a(3738),U=a(6977),w=a(6354),T=a(9437),A=a(6365),O=a(6594),J=a(9901),H=a(5558),P=a(980),Y=a(8141),M=function(f){return f.CASE_ID="caseId",f.PATIENT_ID="patientId",f}(M||{}),y=a(4119),G=a(4907),g=a(4438),ne=a(9423),Q=a(6708),se=a(8375),ie=a(8472),oe=a(1626),F=a(2840),X=a(3266),b=function(f){return f.SEARCH="search",f.NEXT="next",f}(b||{});let ae=(()=>{class f{constructor(n,i,o,s){this.authService=n,this.http=i,this.logService=o,this.windowService=s,this.diagnosticReports$=new u.t([]),this.loadingDiagnosticReports$=new u.t(!1),this.loadingMoreDiagnosticReports$=new u.t(!1),this.nextDiagnosticReportLink$=new u.t(""),this.searchResults$=new u.t(void 0),this.totalDiagnosticReports$=new u.t(0),this.destroyed$=new m.m(1)}ngOnDestroy(){this.destroyed$.next(!0),this.destroyed$.complete()}searchDiagnosticReport(n){if(!n.nextPageToken&&!n.searchText&&!n.sortByParams){const i=`Invalid call to searchDiagnosticReport: ${JSON.stringify(n)}`;throw this.logService.error({name:"searchDiagnosticReport",message:i}),new Error(i)}return this.authService.getOAuthToken().pipe((0,U.Q)(this.destroyed$),(0,H.n)(i=>{const o={authorization:"Bearer "+i,prefer:"handling=strict"};(0,g.naY)()||delete o.prefer;const s=this.computeSearchDiagnosticReportURL(n);return this.loadingMoreDiagnosticReports$.getValue()||this.loadingDiagnosticReports$.next(!0),this.http.get(s,{headers:o,withCredentials:!1}).pipe((0,U.Q)(this.destroyed$),(0,w.T)(l=>(l.entry=l.entry?this.sanitizeDiagnosticReports(l.entry,n.searchKeywords??new Set):[],l)),(0,Y.M)(l=>{this.updateDiagnosticReportSearchResults(l,n.nextPageToken)}),(0,T.W)(l=>{this.resetSearchResults(),l=JSON.stringify(l),this.logService.error({name:`httpRequest: "${s}"`,message:l});let h="Error while fetching search results from FHIR store.";throw n.nextPageToken&&(h="Error while fetching next page search results from FHIR store."),new Error(h)}),(0,P.j)(()=>{this.loadingDiagnosticReports$.next(!1)}))}))}diagnosticReportNextPage(n,i){if(!n){const s="Invalid next page token";throw this.logService.error({name:`nextDiagnosticReportLink: "${n}"`,message:s}),new Error(s)}const o=this.parseUrlParams(n);return this.loadingMoreDiagnosticReports$.next(!0),this.searchDiagnosticReport({nextPageToken:o,searchKeywords:i}).pipe((0,P.j)(()=>{this.loadingMoreDiagnosticReports$.next(!1)}))}diagnosticReportBySort(n,i){const o=(this.searchResults$?.getValue()??{}).link.find(({relation:N})=>N===b.SEARCH)?.url??"";if(!o){const N="Invalid call to diagnosticReportBySort - cannot find previous search link.";throw this.logService.error({name:"searchDiagnosticReport",message:N}),new Error(N)}const s=o.slice(o.indexOf("&_sort=")+7),l=s.slice(0,s.indexOf("&")),h=o.indexOf(l),B=o.slice(0,h),q=o.slice(h+l.length),k=this.parseUrlParams(`${B}${n}${q}`);return this.searchDiagnosticReport({sortByParams:k,searchKeywords:i})}computeSearchDiagnosticReportURL({searchText:n,nextPageToken:i,pageSize:o,sort:s,sortByParams:l}){n&&(o=o??20,s=s??Q.W.LAST_MODIFIED_DESC);let h="";return h=l||(i?this.parseUrlParams(i):Object.entries({_text:n,_elements:"text,identifier",_count:o,_sort:s}).reduce((z,k)=>`${z}&${k.join("=")}`,"")),`${y.c.FHIR_STORE_BASE_URL}DiagnosticReport?${h}${y.c.FHIR_STORE_SEARCH_QUERY_PARAMETERS}`}parseUrlParams(n){return n.slice(n.indexOf("DiagnosticReport/?")+18)}resetSearchResults(){this.searchResults$.next(void 0),this.nextDiagnosticReportLink$.next(""),this.totalDiagnosticReports$.next(0)}sanitizeDiagnosticReports(n,i){return n.map(o=>{const s=o.resource.text;return s&&(s.sanitizedHtml=s.div,s.tagsRemovedSanitized=this.windowService.extractContent(s.sanitizedHtml),s.snippet=(0,se.An)(i,s.tagsRemovedSanitized,380)),o.resource.caseAccessionId=(o.resource?.identifier??[])[0]?.value??"",o})}updateDiagnosticReportSearchResults(n,i){if(i){const s=this.diagnosticReports$.getValue();this.diagnosticReports$.next([...s,...n.entry])}else this.diagnosticReports$.next(n.entry),this.totalDiagnosticReports$.next(n.total);this.searchResults$.next(n);const o=n.link.find(({relation:s})=>s===b.NEXT)?.url??"";this.nextDiagnosticReportLink$.next(o)}static{this.\u0275fac=function(i){return new(i||f)(g.KVO(ie.u),g.KVO(oe.Qq),g.KVO(F.K),g.KVO(X.s))}}static{this.\u0275prov=g.jDH({token:f,factory:f.\u0275fac,providedIn:"root"})}}return f})(),le=(()=>{class f{constructor(n,i,o,s){this.dialogService=n,this.dicomwebService=i,this.fhirStoreService=o,this.logService=s,this.cases$=new u.t([]),this.casesByCaseId$=new u.t(new Map),this.diagnosticReports$=new u.t([]),this.loading$=new u.t(!1),this.loadingMore$=new u.t(!1),this.loadingText$=new u.t(""),this.nextDiagnosticReportLink$=new u.t(""),this.patient$=new u.t(void 0),this.searchText$=new u.t(""),this.searchKeywords$=new u.t(new Set),this.totalResults$=new u.t(0),this.enableFhirSearch=!!y.c.FHIR_STORE_BASE_URL,this.destroyed$=new m.m(1),this.initializeSearchService()}initializeSearchService(){this.diagnosticReports$=this.fhirStoreService.diagnosticReports$,this.nextDiagnosticReportLink$=this.fhirStoreService.nextDiagnosticReportLink$,this.searchText$.pipe((0,U.Q)(this.destroyed$)).subscribe(n=>{const i=n.replaceAll("|"," ").split(" ").map(s=>s.trim()).filter(s=>!s.startsWith("-")).filter(s=>s),o=new Set([...i]);this.searchKeywords$.next(o)})}ngOnDestroy(){this.destroyed$.next(!0),this.destroyed$.complete()}getSlideDicomPathFromListOfRecordIds(n,i){return(0,v.H)(new Set(n)).pipe((0,w.T)(s=>(0,j.v)(()=>this.dicomwebService.searchSeriesById(s,i).pipe((0,T.W)(()=>(0,E.of)([])),(0,w.T)(l=>({recordId:s,slideIds:l?l.map(h=>(0,D.Lk)(y.c.IMAGE_DICOM_STORE_BASE_URL,h)):[]}))))),(0,A.U)(5),(0,O.$)())}getCasesByIds(n){let i=this.casesByCaseId$.getValue();const o=n.filter(s=>!i.has(s)).map(s=>this.searchCases(s));(0,$.p)(o).pipe((0,U.Q)(this.destroyed$)).subscribe(s=>{const l=s.flat(1);i=new Map(l.map(h=>[h.accessionNumber,h])),this.casesByCaseId$.next(i)})}resetSearchResults(){this.cases$.next([]),this.diagnosticReports$.next([]),this.patient$.next(void 0),this.totalResults$.next(0),this.casesByCaseId$.next(new Map),this.nextDiagnosticReportLink$.next("")}searchCasesAndFhirStore(n){this.searchText$.next(n),this.loading$.next(!0),this.resetSearchResults();const i=n.split(" ").filter(s=>""!==s).length;let o=C.w;return 1===i?o=this.searchPatient(n).pipe((0,J.U)(void 0),(0,H.n)(s=>s?.patient?(this.handleSuccessfulPatient(s.patient,s.cases),(0,E.of)(s)):this.searchCases(n).pipe((0,H.n)(l=>l.length?(this.handleSuccessfulCases(l),l):this.enableFhirSearch?this.searchFhirStore(n):[])))):this.enableFhirSearch&&(o=this.searchFhirStore(n)),o.pipe((0,P.j)(()=>{this.loading$.next(!1)}))}searchFhirDiagnosticReportNextPage(n){if(!n)throw new Error(`Invalid token for next page: ${n}`);return this.loadingMore$.next(!0),this.fhirStoreService.searchDiagnosticReport({nextPageToken:n,searchKeywords:this.searchKeywords$.getValue()}).pipe((0,P.j)(()=>{this.loadingMore$.next(!1)}))}searchSortBy(n){return this.loading$.next(!0),this.fhirStoreService.diagnosticReportBySort(n,this.searchKeywords$.getValue()).pipe((0,P.j)(()=>{this.loading$.next(!1)}))}handleSuccessfulCases(n){const i=this.casesByCaseId$.getValue();n.forEach(o=>{o.caseId&&i.set(o.caseId,o)}),this.casesByCaseId$.next(i),this.cases$.next(n),this.totalResults$.next(n.length)}handleSuccessfulPatient(n,i){this.patient$.next(n??void 0),this.handleSuccessfulCases(i)}searchCases(n){return this.loadingText$.next("cases"),this.dicomwebService.searchSeriesById(n,M.CASE_ID).pipe((0,w.T)(i=>{if(!i)return[];const o=new Map;for(const l of i)(0,D.N2)(y.c.IMAGE_DICOM_STORE_BASE_URL,l,o);return[...o.values()]}),(0,T.W)(i=>{const o=("string"==typeof i?i:"Error ")+" while looking up "+L.H.caseId.displayText;return this.logService.error({name:"Error dialog",message:o,stack:"SearchService/searchCases"}),this.dialogService.error(o),C.w}))}searchPatient(n){return"*"===n?C.w:(this.loadingText$.next("patient"),this.dicomwebService.searchSeriesById(n,M.PATIENT_ID).pipe((0,w.T)(i=>{if(!i||0===i.length)return{patient:void 0,cases:[]};const o=new Map,s={};for(const l of i)(0,D.Z6)(l,s),(0,D.N2)(y.c.IMAGE_DICOM_STORE_BASE_URL,l,o);return s.name??="Unknown Patient Name",s.patientId??="Unknown Patient ID",s.latestCaseDate=(0,G.Yq)(s.latestCaseDate),s.latestCaseAccessionNumber??="Unknown Case ID",{patient:s,cases:Array.from(o.values())}}),(0,T.W)(i=>{const o=("string"==typeof i?i:"Error ")+" while looking up "+L.H.patientId.displayText;return this.logService.error({name:"Error dialog",message:o,stack:"SearchService/searchPatient"}),this.dialogService.error(o),C.w})))}searchFhirStore(n){return this.loadingText$.next("FHIR store"),this.fhirStoreService.searchDiagnosticReport({searchText:n,searchKeywords:this.searchKeywords$.getValue()}).pipe((0,Y.M)(()=>{this.totalResults$.next(this.fhirStoreService.totalDiagnosticReports$.getValue()),this.nextDiagnosticReportLink$.next(this.fhirStoreService.nextDiagnosticReportLink$.getValue());const i=new Set(this.fhirStoreService.diagnosticReports$.getValue().map(o=>o.resource.caseAccessionId??o.resource.id));this.getCasesByIds([...i])}))}static{this.\u0275fac=function(i){return new(i||f)(g.KVO(ne.o),g.KVO(D.w),g.KVO(ae),g.KVO(F.K))}}static{this.\u0275prov=g.jDH({token:f,factory:f.\u0275fac,providedIn:"root"})}}return f})()},1524:(K,R,a)=>{a.d(R,{N9:()=>L});const v=/^\s*(?!javascript:)(?:[\w+.-]+:|[^:/?#]*(?:[/?#]|$))/i;function L(e,t){const r=function $(e){return function E(e){if(!function j(e){return!v.test(e)}(e))return e}(e)}(t);void 0!==r&&(e.href=r)}globalThis,Error}}]); \ No newline at end of file diff --git a/web/3rdpartylicenses.txt b/web/3rdpartylicenses.txt new file mode 100644 index 0000000000000000000000000000000000000000..c18507259f1ee795ff258ca42426348b7a7fa8ec --- /dev/null +++ b/web/3rdpartylicenses.txt @@ -0,0 +1,4718 @@ +@angular-slider/ngx-slider +MIT +The MIT License (MIT) + +Copyright (c) 2013 Rafal Zajac +Copyright (c) 2018 Piotr Dziwinski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION 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/animations +MIT +The MIT License + +Copyright (c) 2010-2025 Google LLC. https://angular.dev/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. + + +@angular/cdk +MIT +The MIT License + +Copyright (c) 2025 Google 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. + + +@angular/common +MIT +The MIT License + +Copyright (c) 2010-2025 Google LLC. https://angular.dev/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. + + +@angular/core +MIT +The MIT License + +Copyright (c) 2010-2025 Google LLC. https://angular.dev/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. + + +@angular/forms +MIT +The MIT License + +Copyright (c) 2010-2025 Google LLC. https://angular.dev/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. + + +@angular/material +MIT +The MIT License + +Copyright (c) 2025 Google 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. + + +@angular/platform-browser +MIT +The MIT License + +Copyright (c) 2010-2025 Google LLC. https://angular.dev/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. + + +@angular/router +MIT +The MIT License + +Copyright (c) 2010-2025 Google LLC. https://angular.dev/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. + + +@babel/runtime +MIT +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. + + +@tensorflow/tfjs +Apache-2.0 + +@tensorflow/tfjs-backend-cpu +Apache-2.0 + +@tensorflow/tfjs-backend-webgl +Apache-2.0 + +@tensorflow/tfjs-converter +Apache-2.0 + +@tensorflow/tfjs-core +Apache-2.0 + +@tensorflow/tfjs-data +Apache-2.0 + +@tensorflow/tfjs-layers +Apache-2.0 AND MIT + +@turf/along +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/angle +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/area +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/bbox +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/bbox-clip +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/bbox-polygon +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/bearing +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/bezier-spline +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/boolean-clockwise +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/boolean-contains +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/boolean-crosses +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/boolean-disjoint +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/boolean-equal +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/boolean-intersects +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/boolean-overlap +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/boolean-parallel +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/boolean-point-in-polygon +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/boolean-point-on-line +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/boolean-within +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/buffer +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/center +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/center-mean +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/center-median +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/center-of-mass +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/centroid +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/circle +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/clean-coords +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/clusters +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/clusters-dbscan +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/clusters-kmeans +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/collect +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/combine +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/concave +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/convex +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/destination +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/difference +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/dissolve +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/distance +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/distance-weight +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/ellipse +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/envelope +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/explode +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/flatten +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/flip +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/great-circle +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/helpers +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/hex-grid +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/interpolate +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/intersect +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/invariant +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/isobands +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/isolines +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/kinks +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/length +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/line-arc +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/line-chunk +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/line-intersect +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/line-offset +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/line-overlap +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/line-segment +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/line-slice +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/line-slice-along +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/line-split +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/line-to-polygon +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/mask +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/meta +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/midpoint +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/moran-index +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/nearest-point +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/nearest-point-on-line +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/nearest-point-to-line +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/planepoint +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/point-grid +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/point-on-feature +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/point-to-line-distance +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/points-within-polygon +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/polygon-smooth +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/polygon-tangents +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/polygon-to-line +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/polygonize +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/projection +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/random +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/rectangle-grid +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/rewind +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/rhumb-bearing +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/rhumb-destination +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/rhumb-distance +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/sample +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/sector +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/shortest-path +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/simplify +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/square +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/square-grid +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/standard-deviational-ellipse +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/tag +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/tesselate +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/tin +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/transform-rotate +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/transform-scale +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/transform-translate +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/triangle-grid +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/truncate +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/turf +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/union +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/unkink-polygon +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@turf/voronoi +MIT +The MIT License (MIT) + +Copyright (c) 2017 TurfJS + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +call-bind +MIT +MIT License + +Copyright (c) 2020 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +call-bind-apply-helpers +MIT +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +call-bound +MIT +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION 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 +MIT +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. + +color-parse +MIT +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. + +color-rgba +MIT + +color-space +MIT +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 + +concaveman +ISC +ISC License + +Copyright (c) 2016, Mapbox + +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. + + +d3-array +BSD-3-Clause +Copyright 2010-2016 Mike Bostock +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 author nor the names of 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. + + +d3-geo +BSD-3-Clause +Copyright 2010-2016 Mike Bostock +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 author nor the names of 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. + +This license applies to GeographicLib, versions 1.12 and later. + +Copyright (c) 2008-2012, Charles Karney + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +d3-voronoi +BSD-3-Clause +Copyright 2010-2016 Mike Bostock +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 author nor the names of 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. + +Copyright (C) 2010-2013 Raymond Hill +https://github.com/gorhill/Javascript-Voronoi + +Licensed under The MIT License +http://en.wikipedia.org/wiki/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. + + +deep-equal +MIT +MIT License + +Copyright (c) 2012, 2013, 2014 James Halliday , 2009 Thomas Robinson <280north.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. + + +define-data-property +MIT +MIT License + +Copyright (c) 2023 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +define-properties +MIT +The MIT License (MIT) + +Copyright (C) 2015 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +density-clustering +MIT +The MIT License + + + +Copyright © 2013 Abeja 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. + +detect-it +MIT +The MIT License (MIT) + +Copyright (c) 2016 Rafael Pedicini + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +dunder-proto +MIT +MIT License + +Copyright (c) 2024 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +earcut +ISC +ISC License + +Copyright (c) 2016, Mapbox + +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. + + +es-define-property +MIT +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION 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-errors +MIT +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION 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-object-atoms +MIT +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +function-bind +MIT +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. + + + +functions-have-names +MIT +MIT License + +Copyright (c) 2019 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +geojson-equality +MIT +The MIT License (MIT) + +Copyright (c) 2014 Gagan Bansal + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + + +geojson-rbush +MIT +The MIT License (MIT) + +Copyright (c) 2018 Denis Carriere + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION 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-intrinsic +MIT +MIT License + +Copyright (c) 2020 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION 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-proto +MIT +MIT License + +Copyright (c) 2025 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +gopd +MIT +MIT License + +Copyright (c) 2022 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION 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-property-descriptors +MIT +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. + + +has-symbols +MIT +MIT License + +Copyright (c) 2016 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION 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-tostringtag +MIT +MIT License + +Copyright (c) 2021 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. + + +hasown +MIT +MIT License + +Copyright (c) Jordan Harband 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. + + +is-arguments +MIT +The MIT License (MIT) + +Copyright (c) 2014 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION 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-date-object +MIT +The MIT License (MIT) + +Copyright (c) 2015 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION 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-regex +MIT +The MIT License (MIT) + +Copyright (c) 2014 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +long +Apache-2.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. + + +math-intrinsics +MIT +MIT License + +Copyright (c) 2024 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION 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-assign +MIT +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (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. + + +object-is +MIT +The MIT License (MIT) + +Copyright (c) 2014 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION 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-keys +MIT +The MIT License (MIT) + +Copyright (C) 2013 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +ol +BSD-2-Clause +BSD 2-Clause License + +Copyright 2005-present, OpenLayers 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: + +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. + + +point-in-polygon +MIT +The MIT License (MIT) + +Copyright (c) 2016 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. + + +polygon-clipping +MIT +The MIT License (MIT) + +Copyright (c) 2018 Mike Fogel - covers everything not specially attributed to others below. + +Copyright (c) 2016 Alexander Milevski - covers all portions originally part of github:w8r/martinez, from which this project was forked on Febuary 2, 2018. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +quickselect +ISC +ISC License + +Copyright (c) 2018, Vladimir Agafonkin + +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. + + +rbush +MIT +MIT License + +Copyright (c) 2016 Vladimir Agafonkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +regexp.prototype.flags +MIT +The MIT License (MIT) + +Copyright (C) 2014 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + + +robust-predicates +Unlicense +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 + + +rxjs +Apache-2.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 (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. + + + +safevalues +Apache-2.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. + + +seedrandom +MIT + +set-function-length +MIT +MIT License + +Copyright (c) Jordan Harband 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. + + +set-function-name +MIT +MIT License + +Copyright (c) Jordan Harband 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. + + +skmeans +MIT + +tinyqueue +ISC +ISC License + +Copyright (c) 2017, Vladimir Agafonkin + +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. + + +topojson-server +ISC +Copyright 2012-2019 Michael Bostock + +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. + + +tslib +0BSD +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. + +turf-jsts +(EDL-1.0 OR EPL-1.0) + +zone.js +MIT +The MIT License + +Copyright (c) 2010-2024 Google LLC. https://angular.io/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. diff --git a/web/563.74488451f0ca2585.js b/web/563.74488451f0ca2585.js new file mode 100644 index 0000000000000000000000000000000000000000..720450bb24d397de7d15062ee1f9d36b74fffff1 --- /dev/null +++ b/web/563.74488451f0ca2585.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[563],{6471:(z,k,r)=>{r.d(k,{D7:()=>W,HW:()=>Q,YN:()=>li,Zv:()=>O,jH:()=>A});var m=r(9888),d=r(7336),_=r(9046),b=r(177),t=r(4438),s=r(3),y=r(1413),p=r(7786),l=r(6977),u=r(9172),K=r(5558),j=r(8203),f=r(9417),R=r(2408);const B=["*",[["mat-chip-avatar"],["","matChipAvatar",""]],[["mat-chip-trailing-icon"],["","matChipRemove",""],["","matChipTrailingIcon",""]]],F=["*","mat-chip-avatar, [matChipAvatar]","mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]"];function N(c,h){1&c&&(t.j41(0,"span",3),t.SdG(1,1),t.k0s())}function U(c,h){1&c&&(t.j41(0,"span",6),t.SdG(1,2),t.k0s())}const q=[[["mat-chip-avatar"],["","matChipAvatar",""]],[["","matChipEditInput",""]],"*",[["mat-chip-trailing-icon"],["","matChipRemove",""],["","matChipTrailingIcon",""]]],J=["mat-chip-avatar, [matChipAvatar]","[matChipEditInput]","*","mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]"];function Z(c,h){1&c&&t.nrm(0,"span",0)}function Y(c,h){1&c&&(t.j41(0,"span",2),t.SdG(1),t.k0s())}function ii(c,h){1&c&&t.SdG(0,1)}function ti(c,h){1&c&&t.nrm(0,"span",7)}function ei(c,h){if(1&c&&t.DNE(0,ii,1,0)(1,ti,1,0,"span",7),2&c){const i=t.XpG();t.vxM(i.contentEditInput?0:1)}}function ai(c,h){1&c&&t.SdG(0,2)}function ci(c,h){1&c&&(t.j41(0,"span",5),t.SdG(1,3),t.k0s())}const I=["*"],C=new t.nKC("mat-chips-default-options",{providedIn:"root",factory:()=>({separatorKeyCodes:[d.Fm]})}),M=new t.nKC("MatChipAvatar"),E=new t.nKC("MatChipTrailingIcon"),D=new t.nKC("MatChipRemove"),w=new t.nKC("MatChip");let v=(()=>{class c{_elementRef=(0,t.WQX)(t.aKT);_parentChip=(0,t.WQX)(w);isInteractive=!0;_isPrimary=!0;get disabled(){return this._disabled||this._parentChip?.disabled||!1}set disabled(i){this._disabled=i}_disabled=!1;tabIndex=-1;_allowFocusWhenDisabled=!1;_getDisabledAttribute(){return this.disabled&&!this._allowFocusWhenDisabled?"":null}_getTabindex(){return this.disabled&&!this._allowFocusWhenDisabled||!this.isInteractive?null:this.tabIndex.toString()}constructor(){(0,t.WQX)(_.l).load(s.Ah),"BUTTON"===this._elementRef.nativeElement.nodeName&&this._elementRef.nativeElement.setAttribute("type","button")}focus(){this._elementRef.nativeElement.focus()}_handleClick(i){!this.disabled&&this.isInteractive&&this._isPrimary&&(i.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}_handleKeydown(i){(i.keyCode===d.Fm||i.keyCode===d.t6)&&!this.disabled&&this.isInteractive&&this._isPrimary&&!this._parentChip._isEditing&&(i.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}static \u0275fac=function(a){return new(a||c)};static \u0275dir=t.FsC({type:c,selectors:[["","matChipAction",""]],hostAttrs:[1,"mdc-evolution-chip__action","mat-mdc-chip-action"],hostVars:9,hostBindings:function(a,e){1&a&&t.bIt("click",function(o){return e._handleClick(o)})("keydown",function(o){return e._handleKeydown(o)}),2&a&&(t.BMQ("tabindex",e._getTabindex())("disabled",e._getDisabledAttribute())("aria-disabled",e.disabled),t.AVh("mdc-evolution-chip__action--primary",e._isPrimary)("mdc-evolution-chip__action--presentational",!e.isInteractive)("mdc-evolution-chip__action--trailing",!e._isPrimary))},inputs:{isInteractive:"isInteractive",disabled:[2,"disabled","disabled",t.L39],tabIndex:[2,"tabIndex","tabIndex",i=>null==i?-1:(0,t.Udg)(i)],_allowFocusWhenDisabled:"_allowFocusWhenDisabled"},features:[t.GFd]})}return c})(),O=(()=>{class c extends v{_isPrimary=!1;_handleClick(i){this.disabled||(i.stopPropagation(),i.preventDefault(),this._parentChip.remove())}_handleKeydown(i){(i.keyCode===d.Fm||i.keyCode===d.t6)&&!this.disabled&&(i.stopPropagation(),i.preventDefault(),this._parentChip.remove())}static \u0275fac=(()=>{let i;return function(e){return(i||(i=t.xGo(c)))(e||c)}})();static \u0275dir=t.FsC({type:c,selectors:[["","matChipRemove",""]],hostAttrs:["role","button",1,"mat-mdc-chip-remove","mat-mdc-chip-trailing-icon","mat-focus-indicator","mdc-evolution-chip__icon","mdc-evolution-chip__icon--trailing"],hostVars:1,hostBindings:function(a,e){2&a&&t.BMQ("aria-hidden",null)},features:[t.Jv_([{provide:D,useExisting:c}]),t.Vt3]})}return c})(),g=(()=>{class c{_changeDetectorRef=(0,t.WQX)(t.gRc);_elementRef=(0,t.WQX)(t.aKT);_ngZone=(0,t.WQX)(t.SKi);_focusMonitor=(0,t.WQX)(m.FN);_globalRippleOptions=(0,t.WQX)(s.$E,{optional:!0});_document=(0,t.WQX)(b.qQ);_onFocus=new y.B;_onBlur=new y.B;_isBasicChip;role=null;_hasFocusInternal=!1;_pendingFocus;_actionChanges;_animationsDisabled;_allLeadingIcons;_allTrailingIcons;_allRemoveIcons;_hasFocus(){return this._hasFocusInternal}id=(0,t.WQX)(m.g7).getId("mat-mdc-chip-");ariaLabel=null;ariaDescription=null;_ariaDescriptionId=`${this.id}-aria-description`;_chipListDisabled=!1;_textElement;get value(){return void 0!==this._value?this._value:this._textElement.textContent.trim()}set value(i){this._value=i}_value;color;removable=!0;highlighted=!1;disableRipple=!1;get disabled(){return this._disabled||this._chipListDisabled}set disabled(i){this._disabled=i}_disabled=!1;removed=new t.bkB;destroyed=new t.bkB;basicChipAttrName="mat-basic-chip";leadingIcon;trailingIcon;removeIcon;primaryAction;_rippleLoader=(0,t.WQX)(s.Ej);_injector=(0,t.WQX)(t.zZn);constructor(){(0,t.WQX)(_.l).load(s.Ah),(0,t.WQX)(_.l).load(_.Y);const i=(0,t.WQX)(t.bc$,{optional:!0});this._animationsDisabled="NoopAnimations"===i,this._monitorFocus(),this._rippleLoader?.configureRipple(this._elementRef.nativeElement,{className:"mat-mdc-chip-ripple",disabled:this._isRippleDisabled()})}ngOnInit(){const i=this._elementRef.nativeElement;this._isBasicChip=i.hasAttribute(this.basicChipAttrName)||i.tagName.toLowerCase()===this.basicChipAttrName}ngAfterViewInit(){this._textElement=this._elementRef.nativeElement.querySelector(".mat-mdc-chip-action-label"),this._pendingFocus&&(this._pendingFocus=!1,this.focus())}ngAfterContentInit(){this._actionChanges=(0,p.h)(this._allLeadingIcons.changes,this._allTrailingIcons.changes,this._allRemoveIcons.changes).subscribe(()=>this._changeDetectorRef.markForCheck())}ngDoCheck(){this._rippleLoader.setDisabled(this._elementRef.nativeElement,this._isRippleDisabled())}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement),this._actionChanges?.unsubscribe(),this.destroyed.emit({chip:this}),this.destroyed.complete()}remove(){this.removable&&this.removed.emit({chip:this})}_isRippleDisabled(){return this.disabled||this.disableRipple||this._animationsDisabled||this._isBasicChip||!!this._globalRippleOptions?.disabled}_hasTrailingIcon(){return!(!this.trailingIcon&&!this.removeIcon)}_handleKeydown(i){(i.keyCode===d.G_&&!i.repeat||i.keyCode===d.SJ)&&(i.preventDefault(),this.remove())}focus(){this.disabled||(this.primaryAction?this.primaryAction.focus():this._pendingFocus=!0)}_getSourceAction(i){return this._getActions().find(a=>{const e=a._elementRef.nativeElement;return e===i||e.contains(i)})}_getActions(){const i=[];return this.primaryAction&&i.push(this.primaryAction),this.removeIcon&&i.push(this.removeIcon),this.trailingIcon&&i.push(this.trailingIcon),i}_handlePrimaryActionInteraction(){}_monitorFocus(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(i=>{const a=null!==i;a!==this._hasFocusInternal&&(this._hasFocusInternal=a,a?this._onFocus.next({chip:this}):(this._changeDetectorRef.markForCheck(),setTimeout(()=>this._ngZone.run(()=>this._onBlur.next({chip:this})))))})}static \u0275fac=function(a){return new(a||c)};static \u0275cmp=t.VBU({type:c,selectors:[["mat-basic-chip"],["","mat-basic-chip",""],["mat-chip"],["","mat-chip",""]],contentQueries:function(a,e,n){if(1&a&&(t.wni(n,M,5),t.wni(n,E,5),t.wni(n,D,5),t.wni(n,M,5),t.wni(n,E,5),t.wni(n,D,5)),2&a){let o;t.mGM(o=t.lsd())&&(e.leadingIcon=o.first),t.mGM(o=t.lsd())&&(e.trailingIcon=o.first),t.mGM(o=t.lsd())&&(e.removeIcon=o.first),t.mGM(o=t.lsd())&&(e._allLeadingIcons=o),t.mGM(o=t.lsd())&&(e._allTrailingIcons=o),t.mGM(o=t.lsd())&&(e._allRemoveIcons=o)}},viewQuery:function(a,e){if(1&a&&t.GBs(v,5),2&a){let n;t.mGM(n=t.lsd())&&(e.primaryAction=n.first)}},hostAttrs:[1,"mat-mdc-chip"],hostVars:31,hostBindings:function(a,e){1&a&&t.bIt("keydown",function(o){return e._handleKeydown(o)}),2&a&&(t.Mr5("id",e.id),t.BMQ("role",e.role)("aria-label",e.ariaLabel),t.HbH("mat-"+(e.color||"primary")),t.AVh("mdc-evolution-chip",!e._isBasicChip)("mdc-evolution-chip--disabled",e.disabled)("mdc-evolution-chip--with-trailing-action",e._hasTrailingIcon())("mdc-evolution-chip--with-primary-graphic",e.leadingIcon)("mdc-evolution-chip--with-primary-icon",e.leadingIcon)("mdc-evolution-chip--with-avatar",e.leadingIcon)("mat-mdc-chip-with-avatar",e.leadingIcon)("mat-mdc-chip-highlighted",e.highlighted)("mat-mdc-chip-disabled",e.disabled)("mat-mdc-basic-chip",e._isBasicChip)("mat-mdc-standard-chip",!e._isBasicChip)("mat-mdc-chip-with-trailing-icon",e._hasTrailingIcon())("_mat-animation-noopable",e._animationsDisabled))},inputs:{role:"role",id:"id",ariaLabel:[0,"aria-label","ariaLabel"],ariaDescription:[0,"aria-description","ariaDescription"],value:"value",color:"color",removable:[2,"removable","removable",t.L39],highlighted:[2,"highlighted","highlighted",t.L39],disableRipple:[2,"disableRipple","disableRipple",t.L39],disabled:[2,"disabled","disabled",t.L39]},outputs:{removed:"removed",destroyed:"destroyed"},exportAs:["matChip"],features:[t.Jv_([{provide:w,useExisting:c}]),t.GFd],ngContentSelectors:F,decls:8,vars:3,consts:[[1,"mat-mdc-chip-focus-overlay"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--primary"],["matChipAction","",3,"isInteractive"],[1,"mdc-evolution-chip__graphic","mat-mdc-chip-graphic"],[1,"mdc-evolution-chip__text-label","mat-mdc-chip-action-label"],[1,"mat-mdc-chip-primary-focus-indicator","mat-focus-indicator"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--trailing"]],template:function(a,e){1&a&&(t.NAR(B),t.nrm(0,"span",0),t.j41(1,"span",1)(2,"span",2),t.DNE(3,N,2,0,"span",3),t.j41(4,"span",4),t.SdG(5),t.nrm(6,"span",5),t.k0s()()(),t.DNE(7,U,2,0,"span",6)),2&a&&(t.R7$(2),t.Y8G("isInteractive",!1),t.R7$(),t.vxM(e.leadingIcon?3:-1),t.R7$(4),t.vxM(e._hasTrailingIcon()?7:-1))},dependencies:[v],styles:['.mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-outline-width, 1px);border-radius:var(--mdc-chip-container-shape-radius, 8px);box-sizing:border-box;content:"";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-outline-color, var(--mat-sys-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mdc-chip-focus-outline-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-flat-selected-outline-width, 0)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-sys-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mdc-chip-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mdc-chip-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mdc-chip-label-text-size, var(--mat-sys-label-large-size));font-weight:var(--mdc-chip-label-text-weight, var(--mat-sys-label-large-weight));letter-spacing:var(--mdc-chip-label-text-tracking, var(--mat-sys-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-selected-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mdc-chip-with-avatar-avatar-size, 24px);height:var(--mdc-chip-with-avatar-avatar-size, 24px);font-size:var(--mdc-chip-with-avatar-avatar-size, 24px)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-sys-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}@media(forced-colors: active){.mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity, 1)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity, 1)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38))}.mat-mdc-standard-chip{border-radius:var(--mdc-chip-container-shape-radius, 8px);height:var(--mdc-chip-container-height, 32px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-sys-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-flat-disabled-selected-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}@media(forced-colors: active){.mat-mdc-standard-chip{outline:solid 1px}}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius, 24px);width:var(--mdc-chip-with-icon-icon-size, 18px);height:var(--mdc-chip-with-icon-icon-size, 18px);font-size:var(--mdc-chip-with-icon-icon-size, 18px)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-sys-on-surface))}.mat-mdc-chip-highlighted{--mdc-chip-with-icon-icon-color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-sys-on-secondary-container));--mdc-chip-elevated-container-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-sys-secondary-container));--mdc-chip-label-text-color:var(--mdc-chip-selected-label-text-color, var(--mat-sys-on-secondary-container));--mdc-chip-outline-width:var(--mdc-chip-flat-selected-outline-width, 0)}.mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-hover-state-layer-color, var(--mat-sys-on-surface-variant));opacity:var(--mdc-chip-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-hover-state-layer-color, var(--mat-sys-on-secondary-container));opacity:var(--mdc-chip-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-sys-on-surface-variant));opacity:var(--mdc-chip-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-sys-on-secondary-container));opacity:var(--mdc-chip-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mdc-chip-with-avatar-disabled-avatar-opacity, 0.38)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mdc-chip-with-icon-disabled-icon-opacity, 0.38)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity, 1)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-sys-on-surface))}.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity, 1)}.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity, 1)}.mat-mdc-chip-remove::after{background-color:var(--mat-chip-trailing-action-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background-color:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-remove::before{margin:calc(var(--mat-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-remove::after{content:"";display:block;opacity:0;position:absolute;top:-3px;bottom:-3px;left:5px;right:5px;border-radius:50%;box-sizing:border-box;padding:12px;margin:-12px;background-clip:content-box}.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}@media(forced-colors: active){.mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}}.mat-mdc-chip-action:focus .mat-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0})}return c})(),x=(()=>{class c{_elementRef=(0,t.WQX)(t.aKT);_document=(0,t.WQX)(b.qQ);constructor(){}initialize(i){this.getNativeElement().focus(),this.setValue(i)}getNativeElement(){return this._elementRef.nativeElement}setValue(i){this.getNativeElement().textContent=i,this._moveCursorToEndOfInput()}getValue(){return this.getNativeElement().textContent||""}_moveCursorToEndOfInput(){const i=this._document.createRange();i.selectNodeContents(this.getNativeElement()),i.collapse(!1);const a=window.getSelection();a.removeAllRanges(),a.addRange(i)}static \u0275fac=function(a){return new(a||c)};static \u0275dir=t.FsC({type:c,selectors:[["span","matChipEditInput",""]],hostAttrs:["role","textbox","tabindex","-1","contenteditable","true",1,"mat-chip-edit-input"]})}return c})(),A=(()=>{class c extends g{basicChipAttrName="mat-basic-chip-row";_editStartPending=!1;editable=!1;edited=new t.bkB;defaultEditInput;contentEditInput;_isEditing=!1;constructor(){super(),this.role="row",this._onBlur.pipe((0,l.Q)(this.destroyed)).subscribe(()=>{this._isEditing&&!this._editStartPending&&this._onEditFinish()})}_hasTrailingIcon(){return!this._isEditing&&super._hasTrailingIcon()}_handleFocus(){!this._isEditing&&!this.disabled&&this.focus()}_handleKeydown(i){i.keyCode!==d.Fm||this.disabled?this._isEditing?i.stopPropagation():super._handleKeydown(i):this._isEditing?(i.preventDefault(),this._onEditFinish()):this.editable&&this._startEditing(i)}_handleDoubleclick(i){!this.disabled&&this.editable&&this._startEditing(i)}_startEditing(i){if(!this.primaryAction||this.removeIcon&&this._getSourceAction(i.target)===this.removeIcon)return;const a=this.value;this._isEditing=this._editStartPending=!0,(0,t.mal)(()=>{this._getEditInput().initialize(a),this._editStartPending=!1},{injector:this._injector})}_onEditFinish(){this._isEditing=this._editStartPending=!1,this.edited.emit({chip:this,value:this._getEditInput().getValue()}),(this._document.activeElement===this._getEditInput().getNativeElement()||this._document.activeElement===this._document.body)&&this.primaryAction.focus()}_isRippleDisabled(){return super._isRippleDisabled()||this._isEditing}_getEditInput(){return this.contentEditInput||this.defaultEditInput}static \u0275fac=function(a){return new(a||c)};static \u0275cmp=t.VBU({type:c,selectors:[["mat-chip-row"],["","mat-chip-row",""],["mat-basic-chip-row"],["","mat-basic-chip-row",""]],contentQueries:function(a,e,n){if(1&a&&t.wni(n,x,5),2&a){let o;t.mGM(o=t.lsd())&&(e.contentEditInput=o.first)}},viewQuery:function(a,e){if(1&a&&t.GBs(x,5),2&a){let n;t.mGM(n=t.lsd())&&(e.defaultEditInput=n.first)}},hostAttrs:[1,"mat-mdc-chip","mat-mdc-chip-row","mdc-evolution-chip"],hostVars:27,hostBindings:function(a,e){1&a&&t.bIt("focus",function(o){return e._handleFocus(o)})("dblclick",function(o){return e._handleDoubleclick(o)}),2&a&&(t.Mr5("id",e.id),t.BMQ("tabindex",e.disabled?null:-1)("aria-label",null)("aria-description",null)("role",e.role),t.AVh("mat-mdc-chip-with-avatar",e.leadingIcon)("mat-mdc-chip-disabled",e.disabled)("mat-mdc-chip-editing",e._isEditing)("mat-mdc-chip-editable",e.editable)("mdc-evolution-chip--disabled",e.disabled)("mdc-evolution-chip--with-trailing-action",e._hasTrailingIcon())("mdc-evolution-chip--with-primary-graphic",e.leadingIcon)("mdc-evolution-chip--with-primary-icon",e.leadingIcon)("mdc-evolution-chip--with-avatar",e.leadingIcon)("mat-mdc-chip-highlighted",e.highlighted)("mat-mdc-chip-with-trailing-icon",e._hasTrailingIcon()))},inputs:{editable:"editable"},outputs:{edited:"edited"},features:[t.Jv_([{provide:g,useExisting:c},{provide:w,useExisting:c}]),t.Vt3],ngContentSelectors:J,decls:10,vars:9,consts:[[1,"mat-mdc-chip-focus-overlay"],["role","gridcell","matChipAction","",1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--primary",3,"disabled"],[1,"mdc-evolution-chip__graphic","mat-mdc-chip-graphic"],[1,"mdc-evolution-chip__text-label","mat-mdc-chip-action-label"],["aria-hidden","true",1,"mat-mdc-chip-primary-focus-indicator","mat-focus-indicator"],["role","gridcell",1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--trailing"],[1,"cdk-visually-hidden",3,"id"],["matChipEditInput",""]],template:function(a,e){1&a&&(t.NAR(q),t.DNE(0,Z,1,0,"span",0),t.j41(1,"span",1),t.DNE(2,Y,2,0,"span",2),t.j41(3,"span",3),t.DNE(4,ei,2,1)(5,ai,1,0),t.nrm(6,"span",4),t.k0s()(),t.DNE(7,ci,2,0,"span",5),t.j41(8,"span",6),t.EFF(9),t.k0s()),2&a&&(t.vxM(e._isEditing?-1:0),t.R7$(),t.Y8G("disabled",e.disabled),t.BMQ("aria-label",e.ariaLabel)("aria-describedby",e._ariaDescriptionId),t.R7$(),t.vxM(e.leadingIcon?2:-1),t.R7$(2),t.vxM(e._isEditing?4:5),t.R7$(3),t.vxM(e._hasTrailingIcon()?7:-1),t.R7$(),t.Y8G("id",e._ariaDescriptionId),t.R7$(),t.JRh(e.ariaDescription))},dependencies:[v,x],styles:['.mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-outline-width, 1px);border-radius:var(--mdc-chip-container-shape-radius, 8px);box-sizing:border-box;content:"";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-outline-color, var(--mat-sys-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mdc-chip-focus-outline-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-flat-selected-outline-width, 0)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-sys-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mdc-chip-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mdc-chip-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mdc-chip-label-text-size, var(--mat-sys-label-large-size));font-weight:var(--mdc-chip-label-text-weight, var(--mat-sys-label-large-weight));letter-spacing:var(--mdc-chip-label-text-tracking, var(--mat-sys-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-selected-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mdc-chip-with-avatar-avatar-size, 24px);height:var(--mdc-chip-with-avatar-avatar-size, 24px);font-size:var(--mdc-chip-with-avatar-avatar-size, 24px)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-sys-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}@media(forced-colors: active){.mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity, 1)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity, 1)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38))}.mat-mdc-standard-chip{border-radius:var(--mdc-chip-container-shape-radius, 8px);height:var(--mdc-chip-container-height, 32px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-sys-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-flat-disabled-selected-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}@media(forced-colors: active){.mat-mdc-standard-chip{outline:solid 1px}}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius, 24px);width:var(--mdc-chip-with-icon-icon-size, 18px);height:var(--mdc-chip-with-icon-icon-size, 18px);font-size:var(--mdc-chip-with-icon-icon-size, 18px)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-sys-on-surface))}.mat-mdc-chip-highlighted{--mdc-chip-with-icon-icon-color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-sys-on-secondary-container));--mdc-chip-elevated-container-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-sys-secondary-container));--mdc-chip-label-text-color:var(--mdc-chip-selected-label-text-color, var(--mat-sys-on-secondary-container));--mdc-chip-outline-width:var(--mdc-chip-flat-selected-outline-width, 0)}.mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-hover-state-layer-color, var(--mat-sys-on-surface-variant));opacity:var(--mdc-chip-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-hover-state-layer-color, var(--mat-sys-on-secondary-container));opacity:var(--mdc-chip-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-sys-on-surface-variant));opacity:var(--mdc-chip-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-sys-on-secondary-container));opacity:var(--mdc-chip-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mdc-chip-with-avatar-disabled-avatar-opacity, 0.38)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mdc-chip-with-icon-disabled-icon-opacity, 0.38)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity, 1)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-sys-on-surface))}.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity, 1)}.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity, 1)}.mat-mdc-chip-remove::after{background-color:var(--mat-chip-trailing-action-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background-color:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-remove::before{margin:calc(var(--mat-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-remove::after{content:"";display:block;opacity:0;position:absolute;top:-3px;bottom:-3px;left:5px;right:5px;border-radius:50%;box-sizing:border-box;padding:12px;margin:-12px;background-clip:content-box}.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}@media(forced-colors: active){.mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}}.mat-mdc-chip-action:focus .mat-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0})}return c})(),S=(()=>{class c{_elementRef=(0,t.WQX)(t.aKT);_changeDetectorRef=(0,t.WQX)(t.gRc);_dir=(0,t.WQX)(j.dS,{optional:!0});_lastDestroyedFocusedChipIndex=null;_keyManager;_destroyed=new y.B;_defaultRole="presentation";get chipFocusChanges(){return this._getChipStream(i=>i._onFocus)}get chipDestroyedChanges(){return this._getChipStream(i=>i.destroyed)}get chipRemovedChanges(){return this._getChipStream(i=>i.removed)}get disabled(){return this._disabled}set disabled(i){this._disabled=i,this._syncChipsState()}_disabled=!1;get empty(){return!this._chips||0===this._chips.length}get role(){return this._explicitRole?this._explicitRole:this.empty?null:this._defaultRole}tabIndex=0;set role(i){this._explicitRole=i}_explicitRole=null;get focused(){return this._hasFocusedChip()}_chips;_chipActions=new t.rOR;constructor(){}ngAfterViewInit(){this._setUpFocusManagement(),this._trackChipSetChanges(),this._trackDestroyedFocusedChip()}ngOnDestroy(){this._keyManager?.destroy(),this._chipActions.destroy(),this._destroyed.next(),this._destroyed.complete()}_hasFocusedChip(){return this._chips&&this._chips.some(i=>i._hasFocus())}_syncChipsState(){this._chips?.forEach(i=>{i._chipListDisabled=this._disabled,i._changeDetectorRef.markForCheck()})}focus(){}_handleKeydown(i){this._originatesFromChip(i)&&this._keyManager.onKeydown(i)}_isValidIndex(i){return i>=0&&ithis._elementRef.nativeElement.tabIndex=i))}_getChipStream(i){return this._chips.changes.pipe((0,u.Z)(null),(0,K.n)(()=>(0,p.h)(...this._chips.map(i))))}_originatesFromChip(i){let a=i.target;for(;a&&a!==this._elementRef.nativeElement;){if(a.classList.contains("mat-mdc-chip"))return!0;a=a.parentElement}return!1}_setUpFocusManagement(){this._chips.changes.pipe((0,u.Z)(this._chips)).subscribe(i=>{const a=[];i.forEach(e=>e._getActions().forEach(n=>a.push(n))),this._chipActions.reset(a),this._chipActions.notifyOnChanges()}),this._keyManager=new m.Bu(this._chipActions).withVerticalOrientation().withHorizontalOrientation(this._dir?this._dir.value:"ltr").withHomeAndEnd().skipPredicate(i=>this._skipPredicate(i)),this.chipFocusChanges.pipe((0,l.Q)(this._destroyed)).subscribe(({chip:i})=>{const a=i._getSourceAction(document.activeElement);a&&this._keyManager.updateActiveItem(a)}),this._dir?.change.pipe((0,l.Q)(this._destroyed)).subscribe(i=>this._keyManager.withHorizontalOrientation(i))}_skipPredicate(i){return!i.isInteractive||i.disabled}_trackChipSetChanges(){this._chips.changes.pipe((0,u.Z)(null),(0,l.Q)(this._destroyed)).subscribe(()=>{this.disabled&&Promise.resolve().then(()=>this._syncChipsState()),this._redirectDestroyedChipFocus()})}_trackDestroyedFocusedChip(){this.chipDestroyedChanges.pipe((0,l.Q)(this._destroyed)).subscribe(i=>{const e=this._chips.toArray().indexOf(i.chip);this._isValidIndex(e)&&i.chip._hasFocus()&&(this._lastDestroyedFocusedChipIndex=e)})}_redirectDestroyedChipFocus(){if(null!=this._lastDestroyedFocusedChipIndex){if(this._chips.length){const i=Math.min(this._lastDestroyedFocusedChipIndex,this._chips.length-1),a=this._chips.toArray()[i];a.disabled?1===this._chips.length?this.focus():this._keyManager.setPreviousItemActive():a.focus()}else this.focus();this._lastDestroyedFocusedChipIndex=null}}static \u0275fac=function(a){return new(a||c)};static \u0275cmp=t.VBU({type:c,selectors:[["mat-chip-set"]],contentQueries:function(a,e,n){if(1&a&&t.wni(n,g,5),2&a){let o;t.mGM(o=t.lsd())&&(e._chips=o)}},hostAttrs:[1,"mat-mdc-chip-set","mdc-evolution-chip-set"],hostVars:1,hostBindings:function(a,e){1&a&&t.bIt("keydown",function(o){return e._handleKeydown(o)}),2&a&&t.BMQ("role",e.role)},inputs:{disabled:[2,"disabled","disabled",t.L39],role:"role",tabIndex:[2,"tabIndex","tabIndex",i=>null==i?0:(0,t.Udg)(i)]},features:[t.GFd],ngContentSelectors:I,decls:2,vars:0,consts:[["role","presentation",1,"mdc-evolution-chip-set__chips"]],template:function(a,e){1&a&&(t.NAR(),t.j41(0,"div",0),t.SdG(1),t.k0s())},styles:[".mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}"],encapsulation:2,changeDetection:0})}return c})();class si{source;value;constructor(h,i){this.source=h,this.value=i}}let Q=(()=>{class c extends S{ngControl=(0,t.WQX)(f.vO,{optional:!0,self:!0});controlType="mat-chip-grid";_chipInput;_defaultRole="grid";_errorStateTracker;_ariaDescribedbyIds=[];_onTouched=()=>{};_onChange=()=>{};get disabled(){return this.ngControl?!!this.ngControl.disabled:this._disabled}set disabled(i){this._disabled=i,this._syncChipsState(),this.stateChanges.next()}get id(){return this._chipInput.id}get empty(){return(!this._chipInput||this._chipInput.empty)&&(!this._chips||0===this._chips.length)}get placeholder(){return this._chipInput?this._chipInput.placeholder:this._placeholder}set placeholder(i){this._placeholder=i,this.stateChanges.next()}_placeholder;get focused(){return this._chipInput.focused||this._hasFocusedChip()}get required(){return this._required??this.ngControl?.control?.hasValidator(f.k0.required)??!1}set required(i){this._required=i,this.stateChanges.next()}_required;get shouldLabelFloat(){return!this.empty||this.focused}get value(){return this._value}set value(i){this._value=i}_value=[];get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(i){this._errorStateTracker.matcher=i}get chipBlurChanges(){return this._getChipStream(i=>i._onBlur)}change=new t.bkB;valueChange=new t.bkB;_chips=void 0;stateChanges=new y.B;get errorState(){return this._errorStateTracker.errorState}set errorState(i){this._errorStateTracker.errorState=i}constructor(){super();const i=(0,t.WQX)(f.cV,{optional:!0}),a=(0,t.WQX)(f.j4,{optional:!0}),e=(0,t.WQX)(s.es);this.ngControl&&(this.ngControl.valueAccessor=this),this._errorStateTracker=new s.X0(e,this.ngControl,a,i,this.stateChanges)}ngAfterContentInit(){this.chipBlurChanges.pipe((0,l.Q)(this._destroyed)).subscribe(()=>{this._blur(),this.stateChanges.next()}),(0,p.h)(this.chipFocusChanges,this._chips.changes).pipe((0,l.Q)(this._destroyed)).subscribe(()=>this.stateChanges.next())}ngAfterViewInit(){super.ngAfterViewInit()}ngDoCheck(){this.ngControl&&this.updateErrorState()}ngOnDestroy(){super.ngOnDestroy(),this.stateChanges.complete()}registerInput(i){this._chipInput=i,this._chipInput.setDescribedByIds(this._ariaDescribedbyIds)}onContainerClick(i){!this.disabled&&!this._originatesFromChip(i)&&this.focus()}focus(){if(!this.disabled&&!this._chipInput.focused){if(!this._chips.length||this._chips.first.disabled)Promise.resolve().then(()=>this._chipInput.focus());else{const i=this._keyManager.activeItem;i?i.focus():this._keyManager.setFirstItemActive()}this.stateChanges.next()}}setDescribedByIds(i){this._ariaDescribedbyIds=i,this._chipInput?.setDescribedByIds(i)}writeValue(i){this._value=i}registerOnChange(i){this._onChange=i}registerOnTouched(i){this._onTouched=i}setDisabledState(i){this.disabled=i,this.stateChanges.next()}updateErrorState(){this._errorStateTracker.updateErrorState()}_blur(){this.disabled||setTimeout(()=>{this.focused||(this._propagateChanges(),this._markAsTouched())})}_allowFocusEscape(){this._chipInput.focused||super._allowFocusEscape()}_handleKeydown(i){const a=i.keyCode,e=this._keyManager.activeItem;if(a===d.wn)this._chipInput.focused&&(0,d.rp)(i,"shiftKey")&&this._chips.length&&!this._chips.last.disabled?(i.preventDefault(),e?this._keyManager.setActiveItem(e):this._focusLastChip()):super._allowFocusEscape();else if(!this._chipInput.focused)if(a!==d.i7&&a!==d.n6||!e)super._handleKeydown(i);else{const n=this._chipActions.filter(H=>H._isPrimary===e._isPrimary&&!this._skipPredicate(H)),o=n.indexOf(e),V=i.keyCode===d.i7?-1:1;i.preventDefault(),o>-1&&this._isValidIndex(o+V)&&this._keyManager.setActiveItem(n[o+V])}this.stateChanges.next()}_focusLastChip(){this._chips.length&&this._chips.last.focus()}_propagateChanges(){const i=this._chips.length?this._chips.toArray().map(a=>a.value):[];this._value=i,this.change.emit(new si(this,i)),this.valueChange.emit(i),this._onChange(i),this._changeDetectorRef.markForCheck()}_markAsTouched(){this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next()}static \u0275fac=function(a){return new(a||c)};static \u0275cmp=t.VBU({type:c,selectors:[["mat-chip-grid"]],contentQueries:function(a,e,n){if(1&a&&t.wni(n,A,5),2&a){let o;t.mGM(o=t.lsd())&&(e._chips=o)}},hostAttrs:[1,"mat-mdc-chip-set","mat-mdc-chip-grid","mdc-evolution-chip-set"],hostVars:10,hostBindings:function(a,e){1&a&&t.bIt("focus",function(){return e.focus()})("blur",function(){return e._blur()}),2&a&&(t.BMQ("role",e.role)("tabindex",e.disabled||e._chips&&0===e._chips.length?-1:e.tabIndex)("aria-disabled",e.disabled.toString())("aria-invalid",e.errorState),t.AVh("mat-mdc-chip-list-disabled",e.disabled)("mat-mdc-chip-list-invalid",e.errorState)("mat-mdc-chip-list-required",e.required))},inputs:{disabled:[2,"disabled","disabled",t.L39],placeholder:"placeholder",required:[2,"required","required",t.L39],value:"value",errorStateMatcher:"errorStateMatcher"},outputs:{change:"change",valueChange:"valueChange"},features:[t.Jv_([{provide:R.qT,useExisting:c}]),t.GFd,t.Vt3],ngContentSelectors:I,decls:2,vars:0,consts:[["role","presentation",1,"mdc-evolution-chip-set__chips"]],template:function(a,e){1&a&&(t.NAR(),t.j41(0,"div",0),t.SdG(1),t.k0s())},styles:[".mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}"],encapsulation:2,changeDetection:0})}return c})(),W=(()=>{class c{_elementRef=(0,t.WQX)(t.aKT);focused=!1;get chipGrid(){return this._chipGrid}set chipGrid(i){i&&(this._chipGrid=i,this._chipGrid.registerInput(this))}_chipGrid;addOnBlur=!1;separatorKeyCodes;chipEnd=new t.bkB;placeholder="";id=(0,t.WQX)(m.g7).getId("mat-mdc-chip-list-input-");get disabled(){return this._disabled||this._chipGrid&&this._chipGrid.disabled}set disabled(i){this._disabled=i}_disabled=!1;get empty(){return!this.inputElement.value}inputElement;constructor(){const i=(0,t.WQX)(C),a=(0,t.WQX)(R.xb,{optional:!0});this.inputElement=this._elementRef.nativeElement,this.separatorKeyCodes=i.separatorKeyCodes,a&&this.inputElement.classList.add("mat-mdc-form-field-input-control")}ngOnChanges(){this._chipGrid.stateChanges.next()}ngOnDestroy(){this.chipEnd.complete()}_keydown(i){this.empty&&i.keyCode===d.G_?(i.repeat||this._chipGrid._focusLastChip(),i.preventDefault()):this._emitChipEnd(i)}_blur(){this.addOnBlur&&this._emitChipEnd(),this.focused=!1,this._chipGrid.focused||this._chipGrid._blur(),this._chipGrid.stateChanges.next()}_focus(){this.focused=!0,this._chipGrid.stateChanges.next()}_emitChipEnd(i){(!i||this._isSeparatorKey(i)&&!i.repeat)&&(this.chipEnd.emit({input:this.inputElement,value:this.inputElement.value,chipInput:this}),i?.preventDefault())}_onInput(){this._chipGrid.stateChanges.next()}focus(){this.inputElement.focus()}clear(){this.inputElement.value=""}setDescribedByIds(i){const a=this._elementRef.nativeElement;i.length?a.setAttribute("aria-describedby",i.join(" ")):a.removeAttribute("aria-describedby")}_isSeparatorKey(i){return!(0,d.rp)(i)&&new Set(this.separatorKeyCodes).has(i.keyCode)}static \u0275fac=function(a){return new(a||c)};static \u0275dir=t.FsC({type:c,selectors:[["input","matChipInputFor",""]],hostAttrs:[1,"mat-mdc-chip-input","mat-mdc-input-element","mdc-text-field__input","mat-input-element"],hostVars:6,hostBindings:function(a,e){1&a&&t.bIt("keydown",function(o){return e._keydown(o)})("blur",function(){return e._blur()})("focus",function(){return e._focus()})("input",function(){return e._onInput()}),2&a&&(t.Mr5("id",e.id),t.BMQ("disabled",e.disabled||null)("placeholder",e.placeholder||null)("aria-invalid",e._chipGrid&&e._chipGrid.ngControl?e._chipGrid.ngControl.invalid:null)("aria-required",e._chipGrid&&e._chipGrid.required||null)("required",e._chipGrid&&e._chipGrid.required||null))},inputs:{chipGrid:[0,"matChipInputFor","chipGrid"],addOnBlur:[2,"matChipInputAddOnBlur","addOnBlur",t.L39],separatorKeyCodes:[0,"matChipInputSeparatorKeyCodes","separatorKeyCodes"],placeholder:"placeholder",id:"id",disabled:[2,"disabled","disabled",t.L39]},outputs:{chipEnd:"matChipInputTokenEnd"},exportAs:["matChipInput","matChipInputFor"],features:[t.GFd,t.OA$]})}return c})(),li=(()=>{class c{static \u0275fac=function(a){return new(a||c)};static \u0275mod=t.$C({type:c});static \u0275inj=t.G2t({providers:[s.es,{provide:C,useValue:{separatorKeyCodes:[d.Fm]}}],imports:[s.yE,s.pZ,s.yE]})}return c})()},1997:(z,k,r)=>{r.d(k,{q:()=>b,w:()=>t});var m=r(4438),d=r(4085),_=r(3);let b=(()=>{class s{get vertical(){return this._vertical}set vertical(p){this._vertical=(0,d.he)(p)}_vertical=!1;get inset(){return this._inset}set inset(p){this._inset=(0,d.he)(p)}_inset=!1;static \u0275fac=function(l){return new(l||s)};static \u0275cmp=m.VBU({type:s,selectors:[["mat-divider"]],hostAttrs:["role","separator",1,"mat-divider"],hostVars:7,hostBindings:function(l,u){2&l&&(m.BMQ("aria-orientation",u.vertical?"vertical":"horizontal"),m.AVh("mat-divider-vertical",u.vertical)("mat-divider-horizontal",!u.vertical)("mat-divider-inset",u.inset))},inputs:{vertical:"vertical",inset:"inset"},decls:0,vars:0,template:function(l,u){},styles:[".mat-divider{display:block;margin:0;border-top-style:solid;border-top-color:var(--mat-divider-color, var(--mat-sys-outline));border-top-width:var(--mat-divider-width, 1px)}.mat-divider.mat-divider-vertical{border-top:0;border-right-style:solid;border-right-color:var(--mat-divider-color, var(--mat-sys-outline));border-right-width:var(--mat-divider-width, 1px)}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}"],encapsulation:2,changeDetection:0})}return s})(),t=(()=>{class s{static \u0275fac=function(l){return new(l||s)};static \u0275mod=m.$C({type:s});static \u0275inj=m.G2t({imports:[_.yE,_.yE]})}return s})()}}]); \ No newline at end of file diff --git a/web/607.10a7fc25555cb96d.js b/web/607.10a7fc25555cb96d.js new file mode 100644 index 0000000000000000000000000000000000000000..3b397f4d8f920add655a42ee835f8c0014f55906 --- /dev/null +++ b/web/607.10a7fc25555cb96d.js @@ -0,0 +1 @@ +(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[607],{607:(pe,le,D)=>{"use strict";D.r(le),D.d(le,{ImageViewerPageComponent:()=>d1});var q=D(177),Q=D(1997),K=D(9213),te=D(5935),oe=D(2771),H=D(4572),ae=D(3294),re=D(8141),he=D(6977),m=D(4438);let we=(()=>{class t{transform(i,o){return i.get(o.id)}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275pipe=m.EJ8({name:"GetSlideInfoPipe",type:t,pure:!0})}}return t})();var fe=D(2194),ge=D(7336),Te=D(9417),A=D(2628),V=D(8834),R=D(6471),M=D(5351),I=D(9454),X=D(2408),T=D(9631),O=D(2798),F=D(4823),k=D(9200),ce=D(3213),Y=D(6558),J=D(5493),L=D(9179),Ie=D(4378),Pe=D(7910),Fe=D(7133);class lt extends L.Ay{constructor(n,i,o){super(),void 0!==o&&void 0===i?this.setFlatCoordinates(o,n):this.setCenterAndRadius(n,i=i||0,o)}clone(){const n=new lt(this.flatCoordinates.slice(),void 0,this.layout);return n.applyProperties(this),n}closestPointXY(n,i,o,s){const d=this.flatCoordinates,u=n-d[0],p=i-d[1],h=u*u+p*p;if(h=o[0]||n[1]<=o[1]&&n[3]>=o[1]||(0,Ie.sB)(n,this.intersectsCoordinate.bind(this))}return!1}setCenter(n){const i=this.stride,o=this.flatCoordinates[i]-this.flatCoordinates[0],s=n.slice();s[i]=s[0]+o;for(let d=1;dn.clone())}const _t=st;var ir=D(8222),ur=D(8066),it=D(2234),St=D(6522),Me=D(6022),Ze=D(9609),gt=D(822),dt=D(3578),yt=D(8183);class Rt extends L.Ay{constructor(n,i,o){if(super(),this.ends_=[],this.maxDelta_=-1,this.maxDeltaRevision_=-1,Array.isArray(n[0]))this.setCoordinates(n,i);else if(void 0!==i&&o)this.setFlatCoordinates(i,n),this.ends_=o;else{const s=n,d=[],u=[];for(let h=0,v=s.length;h=i?t[n-i]:t[n]}function ee(t,n,i){let o,s;nu)return be(Ot(t,o),Ot(t,s));let p=0;o=i?o-=i:o<0&&(o+=i);let d=o+1;d>=i&&(d-=i);const u=t[o],p=u[0],h=u[1],v=t[d];return[p+(v[0]-p)*s,h+(v[1]-h)*s]}function qr(){const t=(0,G.mY)();return function(n,i){return t[n.getGeometry().getType()]}}const Qr=class fn extends nt.A{constructor(n){const i=n;i.stopDown||(i.stopDown=C.W8),super(i),this.shouldHandle_=!1,this.downPx_=null,this.freehand_=!1,this.source_=n.source?n.source:null,this.features_=n.features?n.features:null,this.snapTolerance_=n.snapTolerance?n.snapTolerance:12,this.type_=n.type,this.mode_=function gn(t){switch(t){case"Point":case"MultiPoint":return"Point";case"LineString":case"MultiLineString":return"LineString";case"Polygon":case"MultiPolygon":return"Polygon";case"Circle":return"Circle";default:throw new Error("Invalid type: "+t)}}(this.type_),this.stopClick_=!!n.stopClick,this.minPoints_=n.minPoints?n.minPoints:"Polygon"===this.mode_?3:2,this.maxPoints_="Circle"===this.mode_?2:n.maxPoints?n.maxPoints:1/0,this.finishCondition_=n.finishCondition?n.finishCondition:C.rT,this.geometryLayout_=n.geometryLayout?n.geometryLayout:"XY";let o=n.geometryFunction;if(!o){const s=this.mode_;if("Circle"===s)o=function(d,u,p){const h=u||new ze([NaN,NaN]),v=(0,j.Ad)(d[0],p),f=(0,$.hG)(v,(0,j.Ad)(d[d.length-1],p));h.setCenterAndRadius(v,Math.sqrt(f),this.geometryLayout_);const y=(0,j.Tf)();return y&&h.transform(p,y),h};else{let d;"Point"===s?d=It.A:"LineString"===s?d=Y.A:"Polygon"===s&&(d=ce.Ay),o=function(u,p,h){return p?p.setCoordinates("Polygon"===s?u[0].length?[u[0].concat([u[0][0]])]:[]:u,this.geometryLayout_):p=new d(u,this.geometryLayout_),p}}}this.geometryFunction_=o,this.dragVertexDelay_=void 0!==n.dragVertexDelay?n.dragVertexDelay:500,this.finishCoordinate_=null,this.sketchFeature_=null,this.sketchPoint_=null,this.sketchCoords_=null,this.sketchLine_=null,this.sketchLineCoords_=null,this.squaredClickTolerance_=n.clickTolerance?n.clickTolerance*n.clickTolerance:36,this.overlay_=new oi.A({source:new me.A({useSpatialIndex:!1,wrapX:!!n.wrapX&&n.wrapX}),style:n.style?n.style:qr(),updateWhileInteracting:!0}),this.geometryName_=n.geometryName,this.condition_=n.condition?n.condition:P.TS,this.freehandCondition_=n.freehand?P.Gk:n.freehandCondition?n.freehandCondition:P.Kg,this.setTrace(n.trace||!1),this.traceState_={active:!1},this.traceSource_=n.traceSource||n.source||null,this.addChangeListener(ir.A.ACTIVE,this.updateState_)}setTrace(n){let i;i=n?!0===n?P.Gk:n:P.Zm,this.traceCondition_=i}setMap(n){super.setMap(n),this.updateState_()}getOverlay(){return this.overlay_}handleEvent(n){n.originalEvent.type===Oe.A.CONTEXTMENU&&n.originalEvent.preventDefault(),this.freehand_="Point"!==this.mode_&&this.freehandCondition_(n);let i=n.type===it.A.POINTERMOVE,o=!0;return!this.freehand_&&this.lastDragTime_&&n.type===it.A.POINTERDRAG&&(Date.now()-this.lastDragTime_>=this.dragVertexDelay_?(this.downPx_=n.pixel,this.shouldHandle_=!this.freehand_,i=!0):this.lastDragTime_=void 0,this.shouldHandle_&&void 0!==this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0)),this.freehand_&&n.type===it.A.POINTERDRAG&&null!==this.sketchFeature_?(this.addToDrawing_(n.coordinate),o=!1):this.freehand_&&n.type===it.A.POINTERDOWN?o=!1:i&&this.getPointerCount()<2?(o=n.type===it.A.POINTERMOVE,o&&this.freehand_?(this.handlePointerMove_(n),this.shouldHandle_&&n.originalEvent.preventDefault()):("mouse"===n.originalEvent.pointerType||n.type===it.A.POINTERDRAG&&void 0===this.downTimeout_)&&this.handlePointerMove_(n)):n.type===it.A.DBLCLICK&&(o=!1),super.handleEvent(n)&&o}handleDownEvent(n){return this.shouldHandle_=!this.freehand_,this.freehand_?(this.downPx_=n.pixel,this.finishCoordinate_||this.startDrawing_(n.coordinate),!0):this.condition_(n)?(this.lastDragTime_=Date.now(),this.downTimeout_=setTimeout(()=>{this.handlePointerMove_(new ur.A(it.A.POINTERMOVE,n.map,n.originalEvent,!1,n.frameState))},this.dragVertexDelay_),this.downPx_=n.pixel,!0):(this.lastDragTime_=void 0,!1)}deactivateTrace_(){this.traceState_={active:!1}}toggleTraceState_(n){if(!this.traceSource_||!this.traceCondition_(n))return;if(this.traceState_.active)return void this.deactivateTrace_();const i=this.getMap(),o=i.getCoordinateFromPixel([n.pixel[0]-this.snapTolerance_,n.pixel[1]+this.snapTolerance_]),s=i.getCoordinateFromPixel([n.pixel[0]+this.snapTolerance_,n.pixel[1]-this.snapTolerance_]),d=(0,Ie.Tr)([o,s]),u=this.traceSource_.getFeaturesInExtent(d);if(0===u.length)return;const p=function De(t,n){const i=[];for(let o=0;on.endIndex||!o&&in.endIndex)&&this.removeTracedCoordinates_(i,n.endIndex):(this.removeTracedCoordinates_(n.startIndex,n.endIndex),this.addTracedCoordinates_(n,n.startIndex,i))}removeTracedCoordinates_(n,i){if(n===i)return;let o=0;if(n0&&this.removeLastPoints_(o)}addTracedCoordinates_(n,i,o){if(i===o)return;const s=[];if(i=u;--p)s.push(Ge(n.coordinates,p))}s.length&&this.appendCoordinates(s)}updateTrace_(n){const i=this.traceState_;if(!i.active||-1===i.targetIndex&&(0,$.Io)(i.startPx,n.pixel)S.startIndex?ES.startIndex&&(E-=w.length)),h=E,p=y)}const v=n.targets[p];let f=v.ring;if(n.targetIndex===p&&f){const y=Ot(v.coordinates,h),S=i.getPixelFromCoordinate(y);(0,$.Io)(S,n.startPx)>o&&(f=!1)}if(f){const y=v.coordinates,S=y.length,w=v.startIndex,U=h;if(wthis.squaredClickTolerance_:u<=this.squaredClickTolerance_,!this.shouldHandle_)return}this.finishCoordinate_?(this.updateTrace_(n),this.modifyDrawing_(n.coordinate)):this.createOrUpdateSketchPoint_(n.coordinate.slice())}atFinish_(n,i){let o=!1;if(this.sketchFeature_){let s=!1,d=[this.finishCoordinate_];const u=this.mode_;if("Point"===u)o=!0;else if("Circle"===u)o=2===this.sketchCoords_.length;else if("LineString"===u)s=!i&&this.sketchCoords_.length>this.minPoints_;else if("Polygon"===u){const p=this.sketchCoords_;s=p[0].length>this.minPoints_,d=[p[0][0],p[0][p[0].length-2]],d=i?[p[0][0]]:[p[0][0],p[0][p[0].length-2]]}if(s){const p=this.getMap();for(let h=0,v=d.length;h=this.maxPoints_&&(this.freehand_?d.pop():s=!0),d.push(n.slice()),this.geometryFunction_(d,i,o)):"Polygon"===u&&(d=this.sketchCoords_[0],d.length>=this.maxPoints_&&(this.freehand_?d.pop():s=!0),d.push(n.slice()),s&&(this.finishCoordinate_=d[0]),this.geometryFunction_(this.sketchCoords_,i,o)),this.createOrUpdateSketchPoint_(n.slice()),this.updateSketchFeatures_(),s?this.finishDrawing():this.sketchFeature_}removeLastPoints_(n){if(!this.sketchFeature_)return;const i=this.sketchFeature_.getGeometry(),o=this.getMap().getView().getProjection(),s=this.mode_;for(let d=0;d=2){this.finishCoordinate_=u[u.length-2].slice();const p=this.finishCoordinate_.slice();u[u.length-1]=p,this.createOrUpdateSketchPoint_(p)}this.geometryFunction_(u,i,o),"Polygon"===i.getType()&&this.sketchLine_&&this.createOrUpdateCustomSketchLine_(i)}else if("Polygon"===s){u=this.sketchCoords_[0],u.splice(-2,1);const p=this.sketchLine_.getGeometry();if(u.length>=2){const h=u[u.length-2].slice();u[u.length-1]=h,this.createOrUpdateSketchPoint_(h)}p.setCoordinates(u),this.geometryFunction_(this.sketchCoords_,i,o)}if(1===u.length){this.abortDrawing();break}}this.updateSketchFeatures_()}removeLastPoint(){this.removeLastPoints_(1)}finishDrawing(){const n=this.abortDrawing_();if(!n)return null;let i=this.sketchCoords_;const o=n.getGeometry(),s=this.getMap().getView().getProjection();return"LineString"===this.mode_?(i.pop(),this.geometryFunction_(i,o,s)):"Polygon"===this.mode_&&(i[0].pop(),this.geometryFunction_(i,o,s),i=o.getCoordinates()),"MultiPoint"===this.type_?n.setGeometry(new At([i])):"MultiLineString"===this.type_?n.setGeometry(new or([i])):"MultiPolygon"===this.type_&&n.setGeometry(new yi([i])),this.dispatchEvent(new Se("drawend",n)),this.features_&&this.features_.push(n),this.source_&&this.source_.addFeature(n),n}abortDrawing_(){this.finishCoordinate_=null;const n=this.sketchFeature_;return this.sketchFeature_=null,this.sketchPoint_=null,this.sketchLine_=null,this.overlay_.getSource().clear(!0),this.deactivateTrace_(),n}abortDrawing(){const n=this.abortDrawing_();n&&this.dispatchEvent(new Se("drawabort",n))}appendCoordinates(n){const i=this.mode_,o=!this.sketchFeature_;let s;if(o&&this.startDrawing_(n[0]),"LineString"===i||"Circle"===i)s=this.sketchCoords_;else{if("Polygon"!==i)return;s=this.sketchCoords_&&this.sketchCoords_.length?this.sketchCoords_[0]:[]}o&&s.shift(),s.pop();for(let u=0;uh||U>v||E>f)return p=y,h=o,v=U,f=E,void(d=0);var ne=Ti([p,y],i.properties);if(!1===n(ne,o,s,E,d))return!1;d++,p=y}))return!1}}})}function fo(t){var n=[1/0,1/0,-1/0,-1/0];return ho(t,function(i){n[0]>i[0]&&(n[0]=i[0]),n[1]>i[1]&&(n[1]=i[1]),n[2]=2&&!Array.isArray(t[0])&&!Array.isArray(t[1]))return t;throw new Error("coord must be GeoJSON Point or an Array of numbers")}function Vn(t){if(Array.isArray(t))return t;if("Feature"===t.type){if(null!==t.geometry)return t.geometry.coordinates}else if(t.coordinates)return t.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function Sr(t){return"Feature"===t.type?t.geometry:t}function io(t,n,i){if(void 0===i&&(i={}),!t)throw new Error("point is required");if(!n)throw new Error("polygon is required");var o=Wr(t),s=Sr(n),d=s.type,u=n.bbox,p=s.coordinates;if(u&&!1===function Ja(t,n){return n[0]<=t[0]&&n[1]<=t[1]&&n[2]>=t[0]&&n[3]>=t[1]}(o,u))return!1;"Polygon"===d&&(p=[p]);for(var h=!1,v=0;vt[1]!=v>t[1]&&t[0]<(h-u)*(t[1]-p)/(v-p)+u&&(o=!o)}return o}D(5931),D(2103);const Cr=function Wi(t,n,i){void 0===i&&(i={});var o=Wr(t),s=Wr(n),d=Ri(s[1]-o[1]),u=Ri(s[0]-o[0]),p=Ri(o[1]),h=Ri(s[1]),v=Math.pow(Math.sin(d/2),2)+Math.pow(Math.sin(u/2),2)*Math.cos(p)*Math.cos(h);return function Ca(t,n){void 0===n&&(n="kilometers");var i=Tn[n];if(!i)throw new Error(n+" units is invalid");return t*i}(2*Math.atan2(Math.sqrt(v),Math.sqrt(1-v)),i.units)};var Tt=new ArrayBuffer(16);new Float64Array(Tt),new Uint32Array(Tt),D(560),function(){function t(n){this.points=n.points||[],this.duration=n.duration||1e4,this.sharpness=n.sharpness||.85,this.centers=[],this.controls=[],this.stepLength=n.stepLength||60,this.length=this.points.length,this.delay=0;for(var i=0;in&&(i.push(s),o=d)}return i},t.prototype.vector=function(n){var i=this.pos(n+10),o=this.pos(n-10);return{angle:180*Math.atan2(i.y-o.y,i.x-o.x)/3.14,speed:Math.sqrt((o.x-i.x)*(o.x-i.x)+(o.y-i.y)*(o.y-i.y)+(o.z-i.z)*(o.z-i.z))}},t.prototype.pos=function(n){var i=n-this.delay;i<0&&(i=0),i>this.duration&&(i=this.duration-1);var o=i/this.duration;if(o>=1)return this.points[this.length-1];var s=Math.floor((this.points.length-1)*o);return function Bo(t,n,i,o,s){var d=function rn(t){var n=t*t;return[n*t,3*n*(1-t),3*t*(1-t)*(1-t),(1-t)*(1-t)*(1-t)]}(t);return{x:s.x*d[0]+o.x*d[1]+i.x*d[2]+n.x*d[3],y:s.y*d[0]+o.y*d[1]+i.y*d[2]+n.y*d[3],z:s.z*d[0]+o.z*d[1]+i.z*d[2]+n.z*d[3]}}((this.length-1)*o-s,this.points[s],this.controls[s][1],this.controls[s+1][0],this.points[s+1])}}();function ti(t,n,i,o){void 0===o&&(o={});var s=Wr(t),d=Ri(s[0]),u=Ri(s[1]),p=Ri(i),h=function Kn(t,n){void 0===n&&(n="kilometers");var i=Tn[n];if(!i)throw new Error(n+" units is invalid");return t/i}(n,o.units),v=Math.asin(Math.sin(u)*Math.cos(h)+Math.cos(u)*Math.sin(h)*Math.cos(p));return un([da(d+Math.atan2(Math.sin(p)*Math.sin(h)*Math.cos(u),Math.cos(h)-Math.sin(u)*Math.sin(v))),da(v)],o.properties)}function mi(t,n,i){if(void 0===i&&(i={}),!0===i.final)return function Uo(t,n){var i=mi(n,t);return i=(i+180)%360}(t,n);var o=Wr(t),s=Wr(n),d=Ri(o[0]),u=Ri(s[0]),p=Ri(o[1]),h=Ri(s[1]),v=Math.sin(u-d)*Math.cos(h),f=Math.cos(p)*Math.sin(h)-Math.sin(p)*Math.cos(h)*Math.cos(u-d);return da(Math.atan2(v,f))}D(2381);const vi=function Ms(t){if(!t)throw new Error("geojson is required");var n=[];return Yo(t,function(i){!function va(t,n){var i=[],o=t.geometry;if(null!==o){switch(o.type){case"Polygon":i=Vn(o);break;case"LineString":i=[Vn(o)]}i.forEach(function(s){var d=function E0(t,n){var i=[];return t.reduce(function(o,s){var d=Ti([o,s],n);return d.bbox=function M0(t,n){var i=t[0],o=t[1],s=n[0],d=n[1];return[is?i:s,o>d?o:d]}(o,s),i.push(d),s}),i}(s,t.properties);d.forEach(function(u){u.id=n.length,n.push(u)})})}}(i,n)}),yr(n)};var Go=D(2374);function Ea(t,n){var i=Vn(t),o=Vn(n);if(2!==i.length)throw new Error(" line1 must only contain 2 coordinates");if(2!==o.length)throw new Error(" line2 must only contain 2 coordinates");var s=i[0][0],d=i[0][1],u=i[1][0],p=i[1][1],h=o[0][0],v=o[0][1],f=o[1][0],y=o[1][1],S=(y-v)*(u-s)-(f-h)*(p-d);if(0===S)return null;var E=((f-h)*(d-v)-(y-v)*(s-h))/S,ne=((u-s)*(d-v)-(p-d)*(s-h))/S;return E>=0&&E<=1&&ne>=0&&ne<=1?un([s+E*(u-s),d+E*(p-d)]):null}const Qo=function ia(t,n){var i={},o=[];if("LineString"===t.type&&(t=Bn(t)),"LineString"===n.type&&(n=Bn(n)),"Feature"===t.type&&"Feature"===n.type&&null!==t.geometry&&null!==n.geometry&&"LineString"===t.geometry.type&&"LineString"===n.geometry.type&&2===t.geometry.coordinates.length&&2===n.geometry.coordinates.length){var s=Ea(t,n);return s&&o.push(s),yr(o)}var d=Go();return d.load(vi(n)),$r(vi(t),function(u){$r(d.search(u),function(p){var h=Ea(u,p);if(h){var v=Vn(h).join(",");i[v]||(i[v]=!0,o.push(h))}})}),yr(o)},Do=function _o(t,n,i){void 0===i&&(i={});var o=un([1/0,1/0],{dist:1/0}),s=0;return Yo(t,function(d){for(var u=Vn(d),p=0;p0&&((ne=E.features[0]).properties.dist=Cr(n,ne,i),ne.properties.location=s+Cr(h,ne,i)),h.properties.dists)return!1}else if(0!==E)return!1;return o?"start"===o?Math.abs(w)>=Math.abs(U)?w>0?p0?h=Math.abs(U)?w>0?p<=d&&d0?h<=u&&u=Math.abs(U)?w>0?p0?h=Math.abs(U)?w>0?p<=d&&d<=v:v<=d&&d<=p:U>0?h<=u&&u<=f:f<=u&&u<=h}const aa=function Ui(t,n,i){void 0===i&&(i={});for(var o=Wr(t),s=Vn(n),d=0;d"u"?null:i.epsilon))return!0}return!1};var Yc=Math.PI/180,jc=180/Math.PI,os=function(t,n){this.lon=t,this.lat=n,this.x=Yc*t,this.y=Yc*n};os.prototype.view=function(){return String(this.lon).slice(0,4)+","+String(this.lat).slice(0,4)},os.prototype.antipode=function(){return new os(this.lon<0?180+this.lon:-1*(180-this.lon),-1*this.lat)};var $c=function(){this.coords=[],this.length=0};$c.prototype.move_to=function(t){this.length++,this.coords.push(t)};var F0=function(t){this.properties=t||{},this.geometries=[]};F0.prototype.json=function(){if(this.geometries.length<=0)return{geometry:{type:"LineString",coordinates:null},type:"Feature",properties:this.properties};if(1===this.geometries.length)return{geometry:{type:"LineString",coordinates:this.geometries[0].coords},type:"Feature",properties:this.properties};for(var t=[],n=0;nS&&(E>f&&Uf&&Eh&&(h=ne)}var W=[];if(p&&h0&&Math.abs(ue-i[z-1][0])>S){var de=parseFloat(i[z-1][0]),ye=parseFloat(i[z-1][1]),ve=parseFloat(i[z][0]),Ce=parseFloat(i[z][1]);if(de>-180&&de-180&&i[z-1][0]f&&de<180&&-180===ve&&z+1f&&i[z-1][0]<180){N.push([180,i[z][1]]),z++,N.push([i[z][0],i[z][1]]);continue}if(def){var Z=de;de=ve,ve=Z;var ut=ye;ye=Ce,Ce=ut}if(de>f&&ve=180&&def?180:-180,wt]),(N=[]).push([i[z-1][0]>f?-180:180,wt]),W.push(N)}else W.push(N=[]);N.push([ue,i[z][1]])}else N.push([i[z][0],i[z][1]])}}else{var Ct=[];W.push(Ct);for(var Ue=0;Ue0)-(t<0)||+t}((n[0]-t[0])*(i[1]-n[1])-(i[0]-n[0])*(n[1]-t[1]))}function md(t,n){return n.geometry.coordinates[0].every(function(i){return io(un(i),t)})}Xe[1]=Xe[169]=G0,Xe[4]=Xe[166]=Q0,Xe[16]=Xe[154]=z0,Xe[64]=Xe[106]=X0,Xe[168]=Xe[2]=H0,Xe[162]=Xe[8]=W0,Xe[138]=Xe[32]=Y0,Xe[42]=Xe[128]=j0,Xe[5]=Xe[165]=function(t){return[[0,0],[0,t.leftbottom],[1,t.rightbottom],[1,0]]},Xe[20]=Xe[150]=function(t){return[[1,0],[t.bottomright,0],[t.topright,1],[1,1]]},Xe[80]=Xe[90]=function(t){return[[1,1],[1,t.righttop],[0,t.lefttop],[0,1]]},Xe[65]=Xe[105]=function(t){return[[t.bottomleft,0],[0,0],[0,1],[t.topleft,1]]},Xe[160]=Xe[10]=function(t){return[[1,t.righttop],[1,t.rightbottom],[0,t.leftbottom],[0,t.lefttop]]},Xe[130]=Xe[40]=function(t){return[[t.topleft,1],[t.topright,1],[t.bottomright,0],[t.bottomleft,0]]},Xe[85]=function(){return[[0,0],[0,1],[1,1],[1,0]]},Xe[101]=Xe[69]=function(t){return[[1,t.rightbottom],[1,0],[0,0],[0,1],[t.topleft,1]]},Xe[149]=Xe[21]=function(t){return[[t.topright,1],[1,1],[1,0],[0,0],[0,t.leftbottom]]},Xe[86]=Xe[84]=function(t){return[[1,0],[t.bottomright,0],[0,t.lefttop],[0,1],[1,1]]},Xe[89]=Xe[81]=function(t){return[[1,1],[1,t.righttop],[t.bottomleft,0],[0,0],[0,1]]},Xe[96]=Xe[74]=function(t){return[[1,t.righttop],[1,t.rightbottom],[0,t.lefttop],[0,1],[t.topleft,1]]},Xe[24]=Xe[146]=function(t){return[[1,1],[1,t.righttop],[t.bottomright,0],[t.bottomleft,0],[t.topright,1]]},Xe[6]=Xe[164]=function(t){return[[1,t.rightbottom],[1,0],[t.bottomright,0],[0,t.leftbottom],[0,t.lefttop]]},Xe[129]=Xe[41]=function(t){return[[t.topright,1],[t.bottomleft,0],[0,0],[0,t.leftbottom],[t.topleft,1]]},Xe[66]=Xe[104]=function(t){return[[t.bottomright,0],[t.bottomleft,0],[0,t.lefttop],[0,1],[t.topleft,1]]},Xe[144]=Xe[26]=function(t){return[[1,1],[1,t.righttop],[0,t.leftbottom],[0,t.lefttop],[t.topright,1]]},Xe[36]=Xe[134]=function(t){return[[1,t.rightbottom],[1,0],[t.bottomright,0],[t.topleft,1],[t.topright,1]]},Xe[9]=Xe[161]=function(t){return[[1,t.righttop],[1,t.rightbottom],[t.bottomleft,0],[0,0],[0,t.leftbottom]]},Xe[37]=Xe[133]=function(t){return[[1,t.rightbottom],[1,0],[0,0],[0,t.leftbottom],[t.topleft,1],[t.topright,1]]},Xe[148]=Xe[22]=function(t){return[[1,1],[1,0],[t.bottomright,0],[0,t.leftbottom],[0,t.lefttop],[t.topright,1]]},Xe[82]=Xe[88]=function(t){return[[1,1],[1,t.righttop],[t.bottomright,0],[t.bottomleft,0],[0,t.lefttop],[0,1]]},Xe[73]=Xe[97]=function(t){return[[1,t.righttop],[1,t.rightbottom],[t.bottomleft,0],[0,0],[0,1],[t.topleft,1]]},Xe[145]=Xe[25]=function(t){return[[1,1],[1,t.righttop],[t.bottomleft,0],[0,0],[0,t.leftbottom],[t.topright,1]]},Xe[70]=Xe[100]=function(t){return[[1,t.rightbottom],[1,0],[t.bottomright,0],[0,t.lefttop],[0,1],[t.topleft,1]]},Xe[34]=function(t){return[j0(t),W0(t)]},Xe[35]=function(t){return[[1,t.righttop],[1,t.rightbottom],[t.bottomright,0],[t.bottomleft,0],[0,t.leftbottom],[0,t.lefttop],[t.topleft,1],[t.topright,1]]},Xe[136]=function(t){return[Y0(t),H0(t)]},Xe[153]=function(t){return[z0(t),G0(t)]},Xe[102]=function(t){return[Q0(t),X0(t)]},Xe[155]=function(t){return[[1,1],[1,t.righttop],[t.bottomleft,0],[0,0],[0,t.leftbottom],[t.topright,1]]},Xe[103]=function(t){return[[1,t.rightbottom],[1,0],[t.bottomright,0],[0,t.lefttop],[0,1],[t.topleft,1]]},Xe[152]=function(t){return[z0(t),H0(t)]},Xe[156]=function(t){return[[1,1],[1,t.righttop],[t.bottomright,0],[t.bottomleft,0],[0,t.leftbottom],[0,t.lefttop],[t.topright,1]]},Xe[137]=function(t){return[Y0(t),G0(t)]},Xe[139]=function(t){return[[1,t.righttop],[1,t.rightbottom],[t.bottomleft,0],[0,0],[0,t.leftbottom],[t.topleft,1],[t.topright,1]]},Xe[98]=function(t){return[W0(t),X0(t)]},Xe[99]=function(t){return[[1,t.righttop],[1,t.rightbottom],[t.bottomright,0],[t.bottomleft,0],[0,t.lefttop],[0,1],[t.topleft,1]]},Xe[38]=function(t){return[Q0(t),j0(t)]},Xe[39]=function(t){return[[1,t.rightbottom],[1,0],[t.bottomright,0],[0,t.leftbottom],[0,t.lefttop],[t.topleft,1],[t.topright,1]]};const vd=function(){function t(n){this.id=t.buildId(n),this.coordinates=n,this.innerEdges=[],this.outerEdges=[],this.outerEdgesSorted=!1}return t.buildId=function(n){return n.join(",")},t.prototype.removeInnerEdge=function(n){this.innerEdges=this.innerEdges.filter(function(i){return i.from.id!==n.from.id})},t.prototype.removeOuterEdge=function(n){this.outerEdges=this.outerEdges.filter(function(i){return i.to.id!==n.to.id})},t.prototype.addOuterEdge=function(n){this.outerEdges.push(n),this.outerEdgesSorted=!1},t.prototype.sortOuterEdges=function(){var n=this;this.outerEdgesSorted||(this.outerEdges.sort(function(i,o){var s=i.to,d=o.to;if(s.coordinates[0]-n.coordinates[0]>=0&&d.coordinates[0]-n.coordinates[0]<0)return 1;if(s.coordinates[0]-n.coordinates[0]<0&&d.coordinates[0]-n.coordinates[0]>=0)return-1;if(s.coordinates[0]-n.coordinates[0]==0&&d.coordinates[0]-n.coordinates[0]==0)return s.coordinates[1]-n.coordinates[1]>=0||d.coordinates[1]-n.coordinates[1]>=0?s.coordinates[1]-d.coordinates[1]:d.coordinates[1]-s.coordinates[1];var u=J0(n.coordinates,s.coordinates,d.coordinates);return u<0?1:u>0?-1:Math.pow(s.coordinates[0]-n.coordinates[0],2)+Math.pow(s.coordinates[1]-n.coordinates[1],2)-(Math.pow(d.coordinates[0]-n.coordinates[0],2)+Math.pow(d.coordinates[1]-n.coordinates[1],2))}),this.outerEdgesSorted=!0)},t.prototype.getOuterEdges=function(){return this.sortOuterEdges(),this.outerEdges},t.prototype.getOuterEdge=function(n){return this.sortOuterEdges(),this.outerEdges[n]},t.prototype.addInnerEdge=function(n){this.innerEdges.push(n)},t}(),Nm=function(){function t(n,i){this.from=n,this.to=i,this.next=void 0,this.label=void 0,this.symetric=void 0,this.ring=void 0,this.from.addOuterEdge(this),this.to.addInnerEdge(this)}return t.prototype.getSymetric=function(){return this.symetric||(this.symetric=new t(this.to,this.from),this.symetric.symetric=this),this.symetric},t.prototype.deleteEdge=function(){this.from.removeOuterEdge(this),this.to.removeInnerEdge(this)},t.prototype.isEqual=function(n){return this.from.id===n.from.id&&this.to.id===n.to.id},t.prototype.toString=function(){return"Edge { "+this.from.id+" -> "+this.to.id+" }"},t.prototype.toLineString=function(){return Ti([this.from.coordinates,this.to.coordinates])},t.prototype.compareTo=function(n){return J0(n.from.coordinates,n.to.coordinates,this.to.coordinates)},t}(),Vm=function(){function t(){this.edges=[],this.polygon=void 0,this.envelope=void 0}return t.prototype.push=function(n){this.edges.push(n),this.polygon=this.envelope=void 0},t.prototype.get=function(n){return this.edges[n]},Object.defineProperty(t.prototype,"length",{get:function(){return this.edges.length},enumerable:!0,configurable:!0}),t.prototype.forEach=function(n){this.edges.forEach(n)},t.prototype.map=function(n){return this.edges.map(n)},t.prototype.some=function(n){return this.edges.some(n)},t.prototype.isValid=function(){return!0},t.prototype.isHole=function(){var n=this,i=this.edges.reduce(function(u,p,h){return p.from.coordinates[1]>n.edges[u].from.coordinates[1]&&(u=h),u},0),o=(0===i?this.length:i)-1,s=(i+1)%this.length,d=J0(this.edges[o].from.coordinates,this.edges[i].from.coordinates,this.edges[s].from.coordinates);return 0===d?this.edges[o].from.coordinates[0]>this.edges[s].from.coordinates[0]:d>0},t.prototype.toMultiPoint=function(){return function Si(t,n,i){return void 0===i&&(i={}),Bn({type:"MultiPoint",coordinates:t},n,i)}(this.edges.map(function(n){return n.from.coordinates}))},t.prototype.toPolygon=function(){if(this.polygon)return this.polygon;var n=this.edges.map(function(i){return i.from.coordinates});return n.push(this.edges[0].from.coordinates),this.polygon=yn([n])},t.prototype.getEnvelope=function(){return this.envelope?this.envelope:this.envelope=function nn(t){return function ts(t,n){void 0===n&&(n={});var i=Number(t[0]),o=Number(t[1]),s=Number(t[2]),d=Number(t[3]);if(6===t.length)throw new Error("@turf/bbox-polygon does not support BBox with 6 positions");var u=[i,o];return yn([[u,[s,o],[s,d],[i,d],u]],n.properties,{bbox:t,id:n.id})}(Tr(t))}(this.toPolygon())},t.findEdgeRingContaining=function(n,i){var s,d,o=n.getEnvelope();return i.forEach(function(u){var p=u.getEnvelope();if(d&&(s=d.getEnvelope()),!function Mm(t,n){var i=t.geometry.coordinates[0].map(function(u){return u[0]}),o=t.geometry.coordinates[0].map(function(u){return u[1]}),s=n.geometry.coordinates[0].map(function(u){return u[0]}),d=n.geometry.coordinates[0].map(function(u){return u[1]});return Math.max.apply(null,i)===Math.max.apply(null,s)&&Math.max.apply(null,o)===Math.max.apply(null,d)&&Math.min.apply(null,i)===Math.min.apply(null,s)&&Math.min.apply(null,o)===Math.min.apply(null,d)}(p,o)&&md(p,o)){for(var h=n.map(function(U){return U.from.coordinates}),v=void 0,f=function(U){u.some(function(E){return function Lm(t,n){return t[0]===n[0]&&t[1]===n[1]}(U,E.from.coordinates)})||(v=U)},y=0,S=h;y"u"?Object.keys(this.nodes).forEach(function(o){return i._computeNextCWEdges(i.nodes[o])}):n.getOuterEdges().forEach(function(o,s){n.getOuterEdge((0===s?n.getOuterEdges().length:s)-1).symetric.next=o})},t.prototype._computeNextCCWEdges=function(n,i){for(var s,d,o=n.getOuterEdges(),u=o.length-1;u>=0;--u){var p=o[u],h=p.symetric,v=void 0,f=void 0;p.label===i&&(v=p),h.label===i&&(f=h),v&&f&&(f&&(d=f),v&&(d&&(d.next=v,d=void 0),s||(s=v)))}d&&(d.next=s)},t.prototype._findLabeledEdgeRings=function(){var n=[],i=0;return this.edges.forEach(function(o){if(!(o.label>=0)){n.push(o);var s=o;do{s.label=i,s=s.next}while(!o.isEqual(s));i++}}),n},t.prototype.getEdgeRings=function(){var n=this;this._computeNextCWEdges(),this.edges.forEach(function(o){o.label=void 0}),this._findLabeledEdgeRings().forEach(function(o){n._findIntersectionNodes(o).forEach(function(s){n._computeNextCCWEdges(s,o.label)})});var i=[];return this.edges.forEach(function(o){o.ring||i.push(n._findEdgeRing(o))}),i},t.prototype._findIntersectionNodes=function(n){var i=[],o=n,s=function(){var d=0;o.from.getOuterEdges().forEach(function(u){u.label===n.label&&++d}),d>1&&i.push(o.from),o=o.next};do{s()}while(!n.isEqual(o));return i},t.prototype._findEdgeRing=function(n){var i=n,o=new Vm;do{o.push(i),i.ring=o,i=i.next}while(!n.isEqual(i));return o},t.prototype.removeNode=function(n){var i=this;n.getOuterEdges().forEach(function(o){return i.removeEdge(o)}),n.innerEdges.forEach(function(o){return i.removeEdge(o)}),delete this.nodes[n.id]},t.prototype.removeEdge=function(n){this.edges=this.edges.filter(function(i){return!i.isEqual(n)}),n.deleteEdge()}}();var rv=D(9906);function Cd(t){for(var n=t,i=[];n.parent;)i.unshift(n),n=n.parent;return i}D(7249),D(3357);var Ns={search:function(t,n,i,o){t.cleanDirty();var s=(o=o||{}).heuristic||Ns.heuristics.manhattan,d=o.closest||!1,u=function ov(){return new kd(function(t){return t.f})}(),p=n;for(n.h=s(n,i),u.push(n);u.size()>0;){var h=u.pop();if(h===i)return Cd(h);h.closed=!0;for(var v=t.neighbors(h),f=0,y=v.length;f0&&(this.content[0]=n,this.bubbleUp(0)),t},remove:function(t){var n=this.content.indexOf(t),i=this.content.pop();n!==this.content.length-1&&(this.content[n]=i,this.scoreFunction(i)0;){var i=(t+1>>1)-1,o=this.content[i];if(!(this.scoreFunction(n)0)){if(E/=w,w<0){if(E0){if(E>S)return;E>y&&(y=E)}if(E=o-p,w||!(E<0)){if(E/=w,w<0){if(E>S)return;E>y&&(y=E)}else if(w>0){if(E0)){if(E/=U,U<0){if(E0){if(E>S)return;E>y&&(y=E)}if(E=s-h,U||!(E<0)){if(E/=U,U<0){if(E>S)return;E>y&&(y=E)}else if(U>0){if(E0)&&!(S<1)||(y>0&&(t[0]=[p+y*w,h+y*U]),S<1&&(t[1]=[p+S*w,h+S*U])),!0}}}}}function cv(t,n,i,o,s){var d=t[1];if(d)return!0;var E,ne,u=t[0],p=t.left,h=t.right,v=p[0],f=p[1],y=h[0],S=h[1],w=(v+y)/2;if(S===f){if(w=o)return;if(v>y){if(u){if(u[1]>=s)return}else u=[w,i];d=[w,s]}else{if(u){if(u[1]1)if(v>y){if(u){if(u[1]>=s)return}else u=[(i-ne)/E,i];d=[(s-ne)/E,s]}else{if(u){if(u[1]=o)return}else u=[n,E*n+ne];d=[o,E*o+ne]}else{if(u){if(u[0]=-xv)){var w=h*h+v*v,U=f*f+y*y,E=(y*w-v*U)/S,ne=(h*U-f*w)/S,W=bd.pop()||new hv;W.arc=t,W.site=s,W.x=E+u,W.y=(W.cy=ne+p)+Math.sqrt(E*E+ne*ne),t.circle=W;for(var N=null,z=ms._;z;)if(W.yYr)p=p.L;else{if(!((u=n-Sv(p,i))>Yr)){d>-Yr?(o=p.P,s=p):u>-Yr?(o=p,s=p.N):o=s=p;break}if(!p.R){o=p;break}p=p.R}!function uv(t){Gi[t.index]={site:t,halfedges:[]}}(t);var h=Td(t);if(Ba.insert(o,h),o||s){if(o===s)return Na(o),s=Td(o.site),Ba.insert(h,s),h.edge=s.edge=us(o.site,h.site),Fa(o),void Fa(s);if(!s)return void(h.edge=us(o.site,h.site));Na(o),Na(s);var v=o.site,f=v[0],y=v[1],S=t[0]-f,w=t[1]-y,U=s.site,E=U[0]-f,ne=U[1]-y,W=2*(S*ne-w*E),N=S*S+w*w,z=E*E+ne*ne,ue=[(ne*N-w*z)/W+f,(S*z-E*N)/W+y];Us(s.edge,v,U,ue),h.edge=us(v,t,null,ue),s.edge=us(t,U,null,ue),Fa(o),Fa(s)}}function Rd(t,n){var i=t.site,o=i[0],s=i[1],d=s-n;if(!d)return o;var u=t.P;if(!u)return-1/0;var p=(i=u.site)[0],h=i[1],v=h-n;if(!v)return p;var f=p-o,y=1/d-1/v,S=f/v;return y?(-S+Math.sqrt(S*S-2*y*(f*f/(-2*v)-h+v/2+s-d/2)))/y+o:(o+p)/2}function Sv(t,n){var i=t.N;if(i)return Rd(i,n);var o=t.site;return o[1]===n?o[0]:1/0}var Ba,Gi,ms,ni,Yr=1e-6,xv=1e-12;function wv(t,n,i){return(t[0]-i[0])*(n[1]-t[1])-(t[0]-n[0])*(i[1]-t[1])}function Cv(t,n){return n[1]-t[1]||n[0]-t[0]}function Ad(t,n){var o,s,d,i=t.sort(Cv).pop();for(ni=[],Gi=new Array(t.length),Ba=new Dd,ms=new Dd;;)if(d=tc,i&&(!d||i[1]Yr||Math.abs(d[0][1]-d[1][1])>Yr)||delete ni[s]})(u,p,h,v),function pv(t,n,i,o){var d,u,p,h,v,f,y,S,w,U,E,ne,s=Gi.length,W=!0;for(d=0;dYr||Math.abs(ne-w)>Yr)&&(v.splice(h,0,ni.push(ls(p,U,Math.abs(E-t)Yr?[t,Math.abs(S-t)Yr?[Math.abs(w-o)Yr?[i,Math.abs(S-i)Yr?[Math.abs(w-n)=u)return null;var h=t-p.site[0],v=n-p.site[1],f=h*h+v*v;do{p=o.cells[s=d],d=null,p.halfedges.forEach(function(y){var S=o.edges[y],w=S.left;if(w!==p.site&&w||(w=S.right)){var U=t-w[0],E=n-w[1],ne=U*U+E*E;ne1?Di:t<-1?-Di:Math.asin(t)}function gc(t,n){return[t>Jr?t-Va:t<-Jr?t+Va:t,n]}function hu(t,n){return tn?1:t>=n?0:NaN}sa(),sa(),sa(),gc.invert=gc,function rp(t){1===t.length&&(t=function np(t){return function(n,i){return hu(t(n),i)}}(t))}(hu),Math.sqrt(50),Math.sqrt(10),Math.sqrt(2);sa();function qc(){}function Uu(t){return function(n,i){var o=xr(n),s=xr(i),d=t(o*s);return[d*s*dr(n),d*dr(i)]}}function ks(t){return function(n,i){var o=zo(n*n+i*i),s=t(o),d=dr(s),u=xr(s);return[Ua(n*d,o*u),Ga(o&&i*d/o)]}}function Nc(t,n){return[t,n]}sa(),sa(),sa(),sa(),function Nu(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}(4.5),qc.prototype={constructor:qc,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},xr(30*Hr),function Bu(t){return function(n){var i=new qc;for(var o in t)i[o]=t[o];return i.stream=n,i}}({point:function(t,n){this.stream.point(t*Hr,n*Hr)}}),Uu(function(t){return zo(2/(1+t))}).invert=ks(function(t){return 2*Ga(t/2)}),Uu(function(t){return(t=function Nv(t){return t>1?0:t<-1?Jr:Math.acos(t)}(t))&&t/dr(t)}).invert=ks(function(t){return t}),Nc.invert=Nc,ks(vs),ks(Ga),ks(function(t){return 2*vs(t)});function th(t,n,i){if(!i)return!1;const o=t.getGeometry(),s=n.getGeometry();return o instanceof L.Ay&&s instanceof L.Ay&&function nv(t,n){var i=Sr(t),o=Sr(n),s=i.type,d=o.type;if("MultiPoint"===s&&"MultiPoint"!==d||("LineString"===s||"MultiLineString"===s)&&"LineString"!==d&&"MultiLineString"!==d||("Polygon"===s||"MultiPolygon"===s)&&"Polygon"!==d&&"MultiPolygon"!==d)throw new Error("features must be of the same type");if("Point"===s)throw new Error("Point geometry not supported");if(new rv({precision:6}).compare(t,n))return!1;var p=0;switch(s){case"MultiPoint":for(var h=0;h0}(yn(o.getCoordinates()??[]),yn(s.getCoordinates()??[]))}function eo(t){return JSON.parse(t.getId())}var nh=D(6979),h0=D(4506);const ih_dicom_tags_main={"0x00000000":{keyword:"CommandGroupLength",vr:"UL",vm:"1",name:"Command Group Length The even number of bytes from the end of the value field to the beginning of the next group.",retired:""},"0x00000001":{keyword:"CommandLengthToEnd",vr:"UL",vm:"1",name:"Command Length to End",retired:"Retired"},"0x00000002":{keyword:"AffectedSOPClassUID",vr:"UI",vm:"1",name:"Affected SOP Class UID The affected SOP Class UID associated with the operation.",retired:""},"0x00000003":{keyword:"RequestedSOPClassUID",vr:"UI",vm:"1",name:"Requested SOP Class UID The requested SOP Class UID associated with the operation.",retired:""},"0x00000010":{keyword:"CommandRecognitionCode",vr:"SH",vm:"1",name:"Command Recognition Code",retired:"Retired"},"0x00000100":{keyword:"CommandField",vr:"US",vm:"1",name:"Command Field This field distinguishes the DIMSE operation conveyed by this Message. This field shall be set to one of the following values:0001H C-STORE-RQ8001H C-STORE-RSP0010H C-GET-RQ8010H C-GET-RSP0020H C-FIND-RQ8020H C-FIND-RSP0021HC-MOVE-RQ8021H C-MOVE-RSP0030H C-ECHO-RQ8030H C-ECHO-RSP0100H N-EVENT-REPORT-RQ8100H N-EVENT-REPORT-RSP0110H N-GET-RQ8110H N-GET-RSP0120H N-SET-RQ8120H N-SET-RSP0130H N-ACTION-RQ8130H N-ACTION-RSP0140H N-CREATE-RQ8140H N-CREATE-RSP0150H N-DELETE-RQ8150H N-DELETE-RSP0FFFH C-CANCEL-RQ",retired:""},"0x00000110":{keyword:"MessageID",vr:"US",vm:"1",name:"Message ID Implementation-specific value that distinguishes this Message from other Messages.",retired:""},"0x00000120":{keyword:"MessageIDBeingRespondedTo",vr:"US",vm:"1",name:"Message ID Being Responded To Shall be set to the value of the Message ID (0000,0110) field used in associated request Message.",retired:""},"0x00000200":{keyword:"Initiator",vr:"AE",vm:"1",name:"Initiator",retired:"Retired"},"0x00000300":{keyword:"Receiver",vr:"AE",vm:"1",name:"Receiver",retired:"Retired"},"0x00000400":{keyword:"FindLocation",vr:"AE",vm:"1",name:"Find Location",retired:"Retired"},"0x00000600":{keyword:"MoveDestination",vr:"AE",vm:"1",name:"Move Destination Shall be set to the DICOM AE Title of the destination DICOM AE to which the C-STORE sub-operations are being performed.",retired:""},"0x00000700":{keyword:"Priority",vr:"US",vm:"1",name:"Priority The priority shall be set to one of the following values:LOW = 0002HMEDIUM = 0000HHIGH = 0001H",retired:""},"0x00000800":{keyword:"CommandDataSetType",vr:"US",vm:"1",name:"Command Data Set Type This field indicates if a Data Set is present in the Message. This field shall be set to the value of 0101H if no Data Set is present; any other value indicates a Data Set is included in the Message.",retired:""},"0x00000850":{keyword:"NumberOfMatches",vr:"US",vm:"1",name:"Number of Matches",retired:"Retired"},"0x00000860":{keyword:"ResponseSequenceNumber",vr:"US",vm:"1",name:"Response Sequence Number",retired:"Retired"},"0x00000900":{keyword:"Status",vr:"US",vm:"1",name:"Status chapter_C",retired:""},"0x00000901":{keyword:"OffendingElement",vr:"AT",vm:"1-n",name:"Offending Element If status is Cxxx, then this field contains a list of the elements in which the error was detected.",retired:""},"0x00000902":{keyword:"ErrorComment",vr:"LO",vm:"1",name:"Error Comment This field contains an application-specific text description of the error detected.",retired:""},"0x00000903":{keyword:"ErrorID",vr:"US",vm:"1",name:"Error ID This field shall optionally contain an application-specific error code.",retired:""},"0x00001000":{keyword:"AffectedSOPInstanceUID",vr:"UI",vm:"1",name:"Affected SOP Instance UID Contains the UID of the SOP Instance for which this operation occurred.",retired:""},"0x00001001":{keyword:"RequestedSOPInstanceUID",vr:"UI",vm:"1",name:"Requested SOP Instance UID Contains the UID of the SOP Instance for which this operation occurred.",retired:""},"0x00001002":{keyword:"EventTypeID",vr:"US",vm:"1",name:"Event Type ID Values for this field are application-specific.",retired:""},"0x00001005":{keyword:"AttributeIdentifierList",vr:"AT",vm:"1-n",name:"Attribute Identifier List This field contains an Attribute Tag for each of the n Attributes applicable.",retired:""},"0x00001008":{keyword:"ActionTypeID",vr:"US",vm:"1",name:"Action Type ID Values for this field are application-specific.",retired:""},"0x00001020":{keyword:"NumberOfRemainingSuboperations",vr:"US",vm:"1",name:"Number of Remaining Sub-operations The number of remaining C-STORE sub-operations to be invoked for the operation.",retired:""},"0x00001021":{keyword:"NumberOfCompletedSuboperations",vr:"US",vm:"1",name:"Number of Completed Sub-operations The number of C-STORE sub-operations associated with this operation that have completed successfully.",retired:""},"0x00001022":{keyword:"NumberOfFailedSuboperations",vr:"US",vm:"1",name:"Number of Failed Sub-operations The number of C-STORE sub-operations associated with this operation that have failed.",retired:""},"0x00001023":{keyword:"NumberOfWarningSuboperations",vr:"US",vm:"1",name:"Number of Warning Sub-operations The number of C-STORE sub-operations associated with this operation that generated warning responses.",retired:""},"0x00001030":{keyword:"MoveOriginatorApplicationEntityTitle",vr:"AE",vm:"1",name:"Move Originator Application Entity Title Contains the DICOM AE Title of the DICOM AE that invoked the C-MOVE operation from which this C-STORE sub-operation is being performed.",retired:""},"0x00001031":{keyword:"MoveOriginatorMessageID",vr:"US",vm:"1",name:"Move Originator Message ID Contains the Message ID (0000,0110) of the C-MOVE-RQ Message from which this C-STORE sub-operation is being performed.",retired:""},"0x00004000":{keyword:"DialogReceiver",vr:"LT",vm:"1",name:"Dialog Receiver",retired:"Retired"},"0x00004010":{keyword:"TerminalType",vr:"LT",vm:"1",name:"Terminal Type",retired:"Retired"},"0x00005010":{keyword:"MessageSetID",vr:"SH",vm:"1",name:"Message Set ID",retired:"Retired"},"0x00005020":{keyword:"EndMessageID",vr:"SH",vm:"1",name:"End Message ID",retired:"Retired"},"0x00005110":{keyword:"DisplayFormat",vr:"LT",vm:"1",name:"Display Format",retired:"Retired"},"0x00005120":{keyword:"PagePositionID",vr:"LT",vm:"1",name:"Page Position ID",retired:"Retired"},"0x00005130":{keyword:"TextFormatID",vr:"CS",vm:"1",name:"Text Format ID",retired:"Retired"},"0x00005140":{keyword:"NormalReverse",vr:"CS",vm:"1",name:"Normal/Reverse",retired:"Retired"},"0x00005150":{keyword:"AddGrayScale",vr:"CS",vm:"1",name:"Add Gray Scale",retired:"Retired"},"0x00005160":{keyword:"Borders",vr:"CS",vm:"1",name:"Borders",retired:"Retired"},"0x00005170":{keyword:"Copies",vr:"IS",vm:"1",name:"Copies",retired:"Retired"},"0x00005180":{keyword:"CommandMagnificationType",vr:"CS",vm:"1",name:"Command Magnification Type",retired:"Retired"},"0x00005190":{keyword:"Erase",vr:"CS",vm:"1",name:"Erase",retired:"Retired"},"0x000051A0":{keyword:"Print",vr:"CS",vm:"1",name:"Print",retired:"Retired"},"0x000051B0":{keyword:"Overlays",vr:"US",vm:"1-n",name:"Overlays",retired:"Retired"},"0x00020000":{keyword:"FileMetaInformationGroupLength",vr:"UL",vm:"1",name:"File Meta Information Group Length",retired:""},"0x00020001":{keyword:"FileMetaInformationVersion",vr:"OB",vm:"1",name:"File Meta Information Version",retired:""},"0x00020002":{keyword:"MediaStorageSOPClassUID",vr:"UI",vm:"1",name:"Media Storage SOP Class UID",retired:""},"0x00020003":{keyword:"MediaStorageSOPInstanceUID",vr:"UI",vm:"1",name:"Media Storage SOP Instance UID",retired:""},"0x00020010":{keyword:"TransferSyntaxUID",vr:"UI",vm:"1",name:"Transfer Syntax UID",retired:""},"0x00020012":{keyword:"ImplementationClassUID",vr:"UI",vm:"1",name:"Implementation Class UID",retired:""},"0x00020013":{keyword:"ImplementationVersionName",vr:"SH",vm:"1",name:"Implementation Version Name",retired:""},"0x00020016":{keyword:"SourceApplicationEntityTitle",vr:"AE",vm:"1",name:"Source Application Entity Title",retired:""},"0x00020017":{keyword:"SendingApplicationEntityTitle",vr:"AE",vm:"1",name:"Sending Application Entity Title",retired:""},"0x00020018":{keyword:"ReceivingApplicationEntityTitle",vr:"AE",vm:"1",name:"Receiving Application Entity Title",retired:""},"0x00020026":{keyword:"SourcePresentationAddress",vr:"UR",vm:"1",name:"Source Presentation Address",retired:""},"0x00020027":{keyword:"SendingPresentationAddress",vr:"UR",vm:"1",name:"Sending Presentation Address",retired:""},"0x00020028":{keyword:"ReceivingPresentationAddress",vr:"UR",vm:"1",name:"Receiving Presentation Address",retired:""},"0x00020031":{keyword:"RTVMetaInformationVersion",vr:"OB",vm:"1",name:"RTV Meta Information Version",retired:""},"0x00020032":{keyword:"RTVCommunicationSOPClassUID",vr:"UI",vm:"1",name:"RTV Communication SOP Class UID",retired:""},"0x00020033":{keyword:"RTVCommunicationSOPInstanceUID",vr:"UI",vm:"1",name:"RTV Communication SOP Instance UID",retired:""},"0x00020035":{keyword:"RTVSourceIdentifier",vr:"OB",vm:"1",name:"RTV Source Identifier",retired:""},"0x00020036":{keyword:"RTVFlowIdentifier",vr:"OB",vm:"1",name:"RTV Flow Identifier",retired:""},"0x00020037":{keyword:"RTVFlowRTPSamplingRate",vr:"UL",vm:"1",name:"RTV Flow RTP Sampling Rate",retired:""},"0x00020038":{keyword:"RTVFlowActualFrameDuration",vr:"FD",vm:"1",name:"RTV Flow Actual Frame Duration",retired:""},"0x00020100":{keyword:"PrivateInformationCreatorUID",vr:"UI",vm:"1",name:"Private Information Creator UID",retired:""},"0x00020102":{keyword:"PrivateInformation",vr:"OB",vm:"1",name:"Private Information",retired:""},"0x00041130":{keyword:"FileSetID",vr:"CS",vm:"1",name:"File-set ID",retired:""},"0x00041141":{keyword:"FileSetDescriptorFileID",vr:"CS",vm:"1-8",name:"File-set Descriptor File ID",retired:""},"0x00041142":{keyword:"SpecificCharacterSetOfFileSetDescriptorFile",vr:"CS",vm:"1",name:"Specific Character Set of File-set Descriptor File",retired:""},"0x00041200":{keyword:"OffsetOfTheFirstDirectoryRecordOfTheRootDirectoryEntity",vr:"UL",vm:"1",name:"Offset of the First Directory Record of the Root Directory Entity",retired:""},"0x00041202":{keyword:"OffsetOfTheLastDirectoryRecordOfTheRootDirectoryEntity",vr:"UL",vm:"1",name:"Offset of the Last Directory Record of the Root Directory Entity",retired:""},"0x00041212":{keyword:"FileSetConsistencyFlag",vr:"US",vm:"1",name:"File-set Consistency Flag",retired:""},"0x00041220":{keyword:"DirectoryRecordSequence",vr:"SQ",vm:"1",name:"Directory Record Sequence",retired:""},"0x00041400":{keyword:"OffsetOfTheNextDirectoryRecord",vr:"UL",vm:"1",name:"Offset of the Next Directory Record",retired:""},"0x00041410":{keyword:"RecordInUseFlag",vr:"US",vm:"1",name:"Record In-use Flag",retired:""},"0x00041420":{keyword:"OffsetOfReferencedLowerLevelDirectoryEntity",vr:"UL",vm:"1",name:"Offset of Referenced Lower-Level Directory Entity",retired:""},"0x00041430":{keyword:"DirectoryRecordType",vr:"CS",vm:"1",name:"Directory Record Type",retired:""},"0x00041432":{keyword:"PrivateRecordUID",vr:"UI",vm:"1",name:"Private Record UID",retired:""},"0x00041500":{keyword:"ReferencedFileID",vr:"CS",vm:"1-8",name:"Referenced File ID",retired:""},"0x00041504":{keyword:"MRDRDirectoryRecordOffset",vr:"UL",vm:"1",name:"MRDR Directory Record Offset",retired:"Retired"},"0x00041510":{keyword:"ReferencedSOPClassUIDInFile",vr:"UI",vm:"1",name:"Referenced SOP Class UID in File",retired:""},"0x00041511":{keyword:"ReferencedSOPInstanceUIDInFile",vr:"UI",vm:"1",name:"Referenced SOP Instance UID in File",retired:""},"0x00041512":{keyword:"ReferencedTransferSyntaxUIDInFile",vr:"UI",vm:"1",name:"Referenced Transfer Syntax UID in File",retired:""},"0x0004151A":{keyword:"ReferencedRelatedGeneralSOPClassUIDInFile",vr:"UI",vm:"1-n",name:"Referenced Related General SOP Class UID in File",retired:""},"0x00041600":{keyword:"NumberOfReferences",vr:"UL",vm:"1",name:"Number of References",retired:"Retired"},"0x00060001":{keyword:"CurrentFrameFunctionalGroupsSequence",vr:"SQ",vm:"1",name:"Current Frame Functional Groups Sequence",retired:""},"0x00080001":{keyword:"LengthToEnd",vr:"UL",vm:"1",name:"Length to End",retired:"Retired"},"0x00080005":{keyword:"SpecificCharacterSet",vr:"CS",vm:"1-n",name:"Specific Character Set",retired:""},"0x00080006":{keyword:"LanguageCodeSequence",vr:"SQ",vm:"1",name:"Language Code Sequence",retired:""},"0x00080008":{keyword:"ImageType",vr:"CS",vm:"2-n",name:"Image Type",retired:""},"0x00080010":{keyword:"RecognitionCode",vr:"SH",vm:"1",name:"Recognition Code",retired:"Retired"},"0x00080012":{keyword:"InstanceCreationDate",vr:"DA",vm:"1",name:"Instance Creation Date",retired:""},"0x00080013":{keyword:"InstanceCreationTime",vr:"TM",vm:"1",name:"Instance Creation Time",retired:""},"0x00080014":{keyword:"InstanceCreatorUID",vr:"UI",vm:"1",name:"Instance Creator UID",retired:""},"0x00080015":{keyword:"InstanceCoercionDateTime",vr:"DT",vm:"1",name:"Instance Coercion DateTime",retired:""},"0x00080016":{keyword:"SOPClassUID",vr:"UI",vm:"1",name:"SOP Class UID",retired:""},"0x00080017":{keyword:"AcquisitionUID",vr:"UI",vm:"1",name:"Acquisition UID",retired:""},"0x00080018":{keyword:"SOPInstanceUID",vr:"UI",vm:"1",name:"SOP Instance UID",retired:""},"0x00080019":{keyword:"PyramidUID",vr:"UI",vm:"1",name:"Pyramid UID",retired:""},"0x0008001A":{keyword:"RelatedGeneralSOPClassUID",vr:"UI",vm:"1-n",name:"Related General SOP Class UID",retired:""},"0x0008001B":{keyword:"OriginalSpecializedSOPClassUID",vr:"UI",vm:"1",name:"Original Specialized SOP Class UID",retired:""},"0x00080020":{keyword:"StudyDate",vr:"DA",vm:"1",name:"Study Date",retired:""},"0x00080021":{keyword:"SeriesDate",vr:"DA",vm:"1",name:"Series Date",retired:""},"0x00080022":{keyword:"AcquisitionDate",vr:"DA",vm:"1",name:"Acquisition Date",retired:""},"0x00080023":{keyword:"ContentDate",vr:"DA",vm:"1",name:"Content Date",retired:""},"0x00080024":{keyword:"OverlayDate",vr:"DA",vm:"1",name:"Overlay Date",retired:"Retired"},"0x00080025":{keyword:"CurveDate",vr:"DA",vm:"1",name:"Curve Date",retired:"Retired"},"0x0008002A":{keyword:"AcquisitionDateTime",vr:"DT",vm:"1",name:"Acquisition DateTime",retired:""},"0x00080030":{keyword:"StudyTime",vr:"TM",vm:"1",name:"Study Time",retired:""},"0x00080031":{keyword:"SeriesTime",vr:"TM",vm:"1",name:"Series Time",retired:""},"0x00080032":{keyword:"AcquisitionTime",vr:"TM",vm:"1",name:"Acquisition Time",retired:""},"0x00080033":{keyword:"ContentTime",vr:"TM",vm:"1",name:"Content Time",retired:""},"0x00080034":{keyword:"OverlayTime",vr:"TM",vm:"1",name:"Overlay Time",retired:"Retired"},"0x00080035":{keyword:"CurveTime",vr:"TM",vm:"1",name:"Curve Time",retired:"Retired"},"0x00080040":{keyword:"DataSetType",vr:"US",vm:"1",name:"Data Set Type",retired:"Retired"},"0x00080041":{keyword:"DataSetSubtype",vr:"LO",vm:"1",name:"Data Set Subtype",retired:"Retired"},"0x00080042":{keyword:"NuclearMedicineSeriesType",vr:"CS",vm:"1",name:"Nuclear Medicine Series Type",retired:"Retired"},"0x00080050":{keyword:"AccessionNumber",vr:"SH",vm:"1",name:"Accession Number",retired:""},"0x00080051":{keyword:"IssuerOfAccessionNumberSequence",vr:"SQ",vm:"1",name:"Issuer of Accession Number Sequence",retired:""},"0x00080052":{keyword:"QueryRetrieveLevel",vr:"CS",vm:"1",name:"Query/Retrieve Level",retired:""},"0x00080053":{keyword:"QueryRetrieveView",vr:"CS",vm:"1",name:"Query/Retrieve View",retired:""},"0x00080054":{keyword:"RetrieveAETitle",vr:"AE",vm:"1-n",name:"Retrieve AE Title",retired:""},"0x00080055":{keyword:"StationAETitle",vr:"AE",vm:"1",name:"Station AE Title",retired:""},"0x00080056":{keyword:"InstanceAvailability",vr:"CS",vm:"1",name:"Instance Availability",retired:""},"0x00080058":{keyword:"FailedSOPInstanceUIDList",vr:"UI",vm:"1-n",name:"Failed SOP Instance UID List",retired:""},"0x00080060":{keyword:"Modality",vr:"CS",vm:"1",name:"Modality",retired:""},"0x00080061":{keyword:"ModalitiesInStudy",vr:"CS",vm:"1-n",name:"Modalities in Study",retired:""},"0x00080062":{keyword:"SOPClassesInStudy",vr:"UI",vm:"1-n",name:"SOP Classes in Study",retired:""},"0x00080063":{keyword:"AnatomicRegionsInStudyCodeSequence",vr:"SQ",vm:"1",name:"Anatomic Regions in Study Code Sequence",retired:""},"0x00080064":{keyword:"ConversionType",vr:"CS",vm:"1",name:"Conversion Type",retired:""},"0x00080068":{keyword:"PresentationIntentType",vr:"CS",vm:"1",name:"Presentation Intent Type",retired:""},"0x00080070":{keyword:"Manufacturer",vr:"LO",vm:"1",name:"Manufacturer",retired:""},"0x00080080":{keyword:"InstitutionName",vr:"LO",vm:"1",name:"Institution Name",retired:""},"0x00080081":{keyword:"InstitutionAddress",vr:"ST",vm:"1",name:"Institution Address",retired:""},"0x00080082":{keyword:"InstitutionCodeSequence",vr:"SQ",vm:"1",name:"Institution Code Sequence",retired:""},"0x00080090":{keyword:"ReferringPhysicianName",vr:"PN",vm:"1",name:"Referring Physician's Name",retired:""},"0x00080092":{keyword:"ReferringPhysicianAddress",vr:"ST",vm:"1",name:"Referring Physician's Address",retired:""},"0x00080094":{keyword:"ReferringPhysicianTelephoneNumbers",vr:"SH",vm:"1-n",name:"Referring Physician's Telephone Numbers",retired:""},"0x00080096":{keyword:"ReferringPhysicianIdentificationSequence",vr:"SQ",vm:"1",name:"Referring Physician Identification Sequence",retired:""},"0x0008009C":{keyword:"ConsultingPhysicianName",vr:"PN",vm:"1-n",name:"Consulting Physician's Name",retired:""},"0x0008009D":{keyword:"ConsultingPhysicianIdentificationSequence",vr:"SQ",vm:"1",name:"Consulting Physician Identification Sequence",retired:""},"0x00080100":{keyword:"CodeValue",vr:"SH",vm:"1",name:"Code Value",retired:""},"0x00080101":{keyword:"ExtendedCodeValue",vr:"LO",vm:"1",name:"Extended Code Value",retired:""},"0x00080102":{keyword:"CodingSchemeDesignator",vr:"SH",vm:"1",name:"Coding Scheme Designator",retired:""},"0x00080103":{keyword:"CodingSchemeVersion",vr:"SH",vm:"1",name:"Coding Scheme Version",retired:""},"0x00080104":{keyword:"CodeMeaning",vr:"LO",vm:"1",name:"Code Meaning",retired:""},"0x00080105":{keyword:"MappingResource",vr:"CS",vm:"1",name:"Mapping Resource",retired:""},"0x00080106":{keyword:"ContextGroupVersion",vr:"DT",vm:"1",name:"Context Group Version",retired:""},"0x00080107":{keyword:"ContextGroupLocalVersion",vr:"DT",vm:"1",name:"Context Group Local Version",retired:""},"0x00080108":{keyword:"ExtendedCodeMeaning",vr:"LT",vm:"1",name:"Extended Code Meaning",retired:""},"0x00080109":{keyword:"CodingSchemeResourcesSequence",vr:"SQ",vm:"1",name:"Coding Scheme Resources Sequence",retired:""},"0x0008010A":{keyword:"CodingSchemeURLType",vr:"CS",vm:"1",name:"Coding Scheme URL Type",retired:""},"0x0008010B":{keyword:"ContextGroupExtensionFlag",vr:"CS",vm:"1",name:"Context Group Extension Flag",retired:""},"0x0008010C":{keyword:"CodingSchemeUID",vr:"UI",vm:"1",name:"Coding Scheme UID",retired:""},"0x0008010D":{keyword:"ContextGroupExtensionCreatorUID",vr:"UI",vm:"1",name:"Context Group Extension Creator UID",retired:""},"0x0008010E":{keyword:"CodingSchemeURL",vr:"UR",vm:"1",name:"Coding Scheme URL",retired:""},"0x0008010F":{keyword:"ContextIdentifier",vr:"CS",vm:"1",name:"Context Identifier",retired:""},"0x00080110":{keyword:"CodingSchemeIdentificationSequence",vr:"SQ",vm:"1",name:"Coding Scheme Identification Sequence",retired:""},"0x00080112":{keyword:"CodingSchemeRegistry",vr:"LO",vm:"1",name:"Coding Scheme Registry",retired:""},"0x00080114":{keyword:"CodingSchemeExternalID",vr:"ST",vm:"1",name:"Coding Scheme External ID",retired:""},"0x00080115":{keyword:"CodingSchemeName",vr:"ST",vm:"1",name:"Coding Scheme Name",retired:""},"0x00080116":{keyword:"CodingSchemeResponsibleOrganization",vr:"ST",vm:"1",name:"Coding Scheme Responsible Organization",retired:""},"0x00080117":{keyword:"ContextUID",vr:"UI",vm:"1",name:"Context UID",retired:""},"0x00080118":{keyword:"MappingResourceUID",vr:"UI",vm:"1",name:"Mapping Resource UID",retired:""},"0x00080119":{keyword:"LongCodeValue",vr:"UC",vm:"1",name:"Long Code Value",retired:""},"0x00080120":{keyword:"URNCodeValue",vr:"UR",vm:"1",name:"URN Code Value",retired:""},"0x00080121":{keyword:"EquivalentCodeSequence",vr:"SQ",vm:"1",name:"Equivalent Code Sequence",retired:""},"0x00080122":{keyword:"MappingResourceName",vr:"LO",vm:"1",name:"Mapping Resource Name",retired:""},"0x00080123":{keyword:"ContextGroupIdentificationSequence",vr:"SQ",vm:"1",name:"Context Group Identification Sequence",retired:""},"0x00080124":{keyword:"MappingResourceIdentificationSequence",vr:"SQ",vm:"1",name:"Mapping Resource Identification Sequence",retired:""},"0x00080201":{keyword:"TimezoneOffsetFromUTC",vr:"SH",vm:"1",name:"Timezone Offset From UTC",retired:""},"0x00080202":{keyword:"",vr:"OB",vm:"1",name:"Retired-blank",retired:"Retired"},"0x00080220":{keyword:"ResponsibleGroupCodeSequence",vr:"SQ",vm:"1",name:"Responsible Group Code Sequence",retired:""},"0x00080221":{keyword:"EquipmentModality",vr:"CS",vm:"1",name:"Equipment Modality",retired:""},"0x00080222":{keyword:"ManufacturerRelatedModelGroup",vr:"LO",vm:"1",name:"Manufacturer's Related Model Group",retired:""},"0x00080300":{keyword:"PrivateDataElementCharacteristicsSequence",vr:"SQ",vm:"1",name:"Private Data Element Characteristics Sequence",retired:""},"0x00080301":{keyword:"PrivateGroupReference",vr:"US",vm:"1",name:"Private Group Reference",retired:""},"0x00080302":{keyword:"PrivateCreatorReference",vr:"LO",vm:"1",name:"Private Creator Reference",retired:""},"0x00080303":{keyword:"BlockIdentifyingInformationStatus",vr:"CS",vm:"1",name:"Block Identifying Information Status",retired:""},"0x00080304":{keyword:"NonidentifyingPrivateElements",vr:"US",vm:"1-n",name:"Nonidentifying Private Elements",retired:""},"0x00080305":{keyword:"DeidentificationActionSequence",vr:"SQ",vm:"1",name:"Deidentification Action Sequence",retired:""},"0x00080306":{keyword:"IdentifyingPrivateElements",vr:"US",vm:"1-n",name:"Identifying Private Elements",retired:""},"0x00080307":{keyword:"DeidentificationAction",vr:"CS",vm:"1",name:"Deidentification Action",retired:""},"0x00080308":{keyword:"PrivateDataElement",vr:"US",vm:"1",name:"Private Data Element",retired:""},"0x00080309":{keyword:"PrivateDataElementValueMultiplicity",vr:"UL",vm:"1-3",name:"Private Data Element Value Multiplicity",retired:""},"0x0008030A":{keyword:"PrivateDataElementValueRepresentation",vr:"CS",vm:"1",name:"Private Data Element Value Representation",retired:""},"0x0008030B":{keyword:"PrivateDataElementNumberOfItems",vr:"UL",vm:"1-2",name:"Private Data Element Number of Items",retired:""},"0x0008030C":{keyword:"PrivateDataElementName",vr:"UC",vm:"1",name:"Private Data Element Name",retired:""},"0x0008030D":{keyword:"PrivateDataElementKeyword",vr:"UC",vm:"1",name:"Private Data Element Keyword",retired:""},"0x0008030E":{keyword:"PrivateDataElementDescription",vr:"UT",vm:"1",name:"Private Data Element Description",retired:""},"0x0008030F":{keyword:"PrivateDataElementEncoding",vr:"UT",vm:"1",name:"Private Data Element Encoding",retired:""},"0x00080310":{keyword:"PrivateDataElementDefinitionSequence",vr:"SQ",vm:"1",name:"Private Data Element Definition Sequence",retired:""},"0x00080400":{keyword:"ScopeOfInventorySequence",vr:"SQ",vm:"1",name:"Scope of Inventory Sequence",retired:""},"0x00080401":{keyword:"InventoryPurpose",vr:"LT",vm:"1",name:"Inventory Purpose",retired:""},"0x00080402":{keyword:"InventoryInstanceDescription",vr:"LT",vm:"1",name:"Inventory Instance Description",retired:""},"0x00080403":{keyword:"InventoryLevel",vr:"CS",vm:"1",name:"Inventory Level",retired:""},"0x00080404":{keyword:"ItemInventoryDateTime",vr:"DT",vm:"1",name:"Item Inventory DateTime",retired:""},"0x00080405":{keyword:"RemovedFromOperationalUse",vr:"CS",vm:"1",name:"Removed from Operational Use",retired:""},"0x00080406":{keyword:"ReasonForRemovalCodeSequence",vr:"SQ",vm:"1",name:"Reason for Removal Code Sequence",retired:""},"0x00080407":{keyword:"StoredInstanceBaseURI",vr:"UR",vm:"1",name:"Stored Instance Base URI",retired:""},"0x00080408":{keyword:"FolderAccessURI",vr:"UR",vm:"1",name:"Folder Access URI",retired:""},"0x00080409":{keyword:"FileAccessURI",vr:"UR",vm:"1",name:"File Access URI",retired:""},"0x0008040A":{keyword:"ContainerFileType",vr:"CS",vm:"1",name:"Container File Type",retired:""},"0x0008040B":{keyword:"FilenameInContainer",vr:"UR",vm:"1",name:"Filename in Container",retired:""},"0x0008040C":{keyword:"FileOffsetInContainer",vr:"UV",vm:"1",name:"File Offset in Container",retired:""},"0x0008040D":{keyword:"FileLengthInContainer",vr:"UV",vm:"1",name:"File Length in Container",retired:""},"0x0008040E":{keyword:"StoredInstanceTransferSyntaxUID",vr:"UI",vm:"1",name:"Stored Instance Transfer Syntax UID",retired:""},"0x0008040F":{keyword:"ExtendedMatchingMechanisms",vr:"CS",vm:"1-n",name:"Extended Matching Mechanisms",retired:""},"0x00080410":{keyword:"RangeMatchingSequence",vr:"SQ",vm:"1",name:"Range Matching Sequence",retired:""},"0x00080411":{keyword:"ListOfUIDMatchingSequence",vr:"SQ",vm:"1",name:"List of UID Matching Sequence",retired:""},"0x00080412":{keyword:"EmptyValueMatchingSequence",vr:"SQ",vm:"1",name:"Empty Value Matching Sequence",retired:""},"0x00080413":{keyword:"GeneralMatchingSequence",vr:"SQ",vm:"1",name:"General Matching Sequence",retired:""},"0x00080414":{keyword:"RequestedStatusInterval",vr:"US",vm:"1",name:"Requested Status Interval",retired:""},"0x00080415":{keyword:"RetainInstances",vr:"CS",vm:"1",name:"Retain Instances",retired:""},"0x00080416":{keyword:"ExpirationDateTime",vr:"DT",vm:"1",name:"Expiration DateTime",retired:""},"0x00080417":{keyword:"TransactionStatus",vr:"CS",vm:"1",name:"Transaction Status",retired:""},"0x00080418":{keyword:"TransactionStatusComment",vr:"LT",vm:"1",name:"Transaction Status Comment",retired:""},"0x00080419":{keyword:"FileSetAccessSequence",vr:"SQ",vm:"1",name:"File Set Access Sequence",retired:""},"0x0008041A":{keyword:"FileAccessSequence",vr:"SQ",vm:"1",name:"File Access Sequence",retired:""},"0x0008041B":{keyword:"RecordKey",vr:"OB",vm:"1",name:"Record Key",retired:""},"0x0008041C":{keyword:"PriorRecordKey",vr:"OB",vm:"1",name:"Prior Record Key",retired:""},"0x0008041D":{keyword:"MetadataSequence",vr:"SQ",vm:"1",name:"Metadata Sequence",retired:""},"0x0008041E":{keyword:"UpdatedMetadataSequence",vr:"SQ",vm:"1",name:"Updated Metadata Sequence",retired:""},"0x0008041F":{keyword:"StudyUpdateDateTime",vr:"DT",vm:"1",name:"Study Update DateTime",retired:""},"0x00080420":{keyword:"InventoryAccessEndPointsSequence",vr:"SQ",vm:"1",name:"Inventory Access End Points Sequence",retired:""},"0x00080421":{keyword:"StudyAccessEndPointsSequence",vr:"SQ",vm:"1",name:"Study Access End Points Sequence",retired:""},"0x00080422":{keyword:"IncorporatedInventoryInstanceSequence",vr:"SQ",vm:"1",name:"Incorporated Inventory Instance Sequence",retired:""},"0x00080423":{keyword:"InventoriedStudiesSequence",vr:"SQ",vm:"1",name:"Inventoried Studies Sequence",retired:""},"0x00080424":{keyword:"InventoriedSeriesSequence",vr:"SQ",vm:"1",name:"Inventoried Series Sequence",retired:""},"0x00080425":{keyword:"InventoriedInstancesSequence",vr:"SQ",vm:"1",name:"Inventoried Instances Sequence",retired:""},"0x00080426":{keyword:"InventoryCompletionStatus",vr:"CS",vm:"1",name:"Inventory Completion Status",retired:""},"0x00080427":{keyword:"NumberOfStudyRecordsInInstance",vr:"UL",vm:"1",name:"Number of Study Records in Instance",retired:""},"0x00080428":{keyword:"TotalNumberOfStudyRecords",vr:"UV",vm:"1",name:"Total Number of Study Records",retired:""},"0x00080429":{keyword:"MaximumNumberOfRecords",vr:"UV",vm:"1",name:"Maximum Number of Records",retired:""},"0x00081000":{keyword:"NetworkID",vr:"AE",vm:"1",name:"Network ID",retired:"Retired"},"0x00081010":{keyword:"StationName",vr:"SH",vm:"1",name:"Station Name",retired:""},"0x00081030":{keyword:"StudyDescription",vr:"LO",vm:"1",name:"Study Description",retired:""},"0x00081032":{keyword:"ProcedureCodeSequence",vr:"SQ",vm:"1",name:"Procedure Code Sequence",retired:""},"0x0008103E":{keyword:"SeriesDescription",vr:"LO",vm:"1",name:"Series Description",retired:""},"0x0008103F":{keyword:"SeriesDescriptionCodeSequence",vr:"SQ",vm:"1",name:"Series Description Code Sequence",retired:""},"0x00081040":{keyword:"InstitutionalDepartmentName",vr:"LO",vm:"1",name:"Institutional Department Name",retired:""},"0x00081041":{keyword:"InstitutionalDepartmentTypeCodeSequence",vr:"SQ",vm:"1",name:"Institutional Department Type Code Sequence",retired:""},"0x00081048":{keyword:"PhysiciansOfRecord",vr:"PN",vm:"1-n",name:"Physician(s) of Record",retired:""},"0x00081049":{keyword:"PhysiciansOfRecordIdentificationSequence",vr:"SQ",vm:"1",name:"Physician(s) of Record Identification Sequence",retired:""},"0x00081050":{keyword:"PerformingPhysicianName",vr:"PN",vm:"1-n",name:"Performing Physician's Name",retired:""},"0x00081052":{keyword:"PerformingPhysicianIdentificationSequence",vr:"SQ",vm:"1",name:"Performing Physician Identification Sequence",retired:""},"0x00081060":{keyword:"NameOfPhysiciansReadingStudy",vr:"PN",vm:"1-n",name:"Name of Physician(s) Reading Study",retired:""},"0x00081062":{keyword:"PhysiciansReadingStudyIdentificationSequence",vr:"SQ",vm:"1",name:"Physician(s) Reading Study Identification Sequence",retired:""},"0x00081070":{keyword:"OperatorsName",vr:"PN",vm:"1-n",name:"Operators' Name",retired:""},"0x00081072":{keyword:"OperatorIdentificationSequence",vr:"SQ",vm:"1",name:"Operator Identification Sequence",retired:""},"0x00081080":{keyword:"AdmittingDiagnosesDescription",vr:"LO",vm:"1-n",name:"Admitting Diagnoses Description",retired:""},"0x00081084":{keyword:"AdmittingDiagnosesCodeSequence",vr:"SQ",vm:"1",name:"Admitting Diagnoses Code Sequence",retired:""},"0x00081088":{keyword:"PyramidDescription",vr:"LO",vm:"1",name:"Pyramid Description",retired:""},"0x00081090":{keyword:"ManufacturerModelName",vr:"LO",vm:"1",name:"Manufacturer's Model Name",retired:""},"0x00081100":{keyword:"ReferencedResultsSequence",vr:"SQ",vm:"1",name:"Referenced Results Sequence",retired:"Retired"},"0x00081110":{keyword:"ReferencedStudySequence",vr:"SQ",vm:"1",name:"Referenced Study Sequence",retired:""},"0x00081111":{keyword:"ReferencedPerformedProcedureStepSequence",vr:"SQ",vm:"1",name:"Referenced Performed Procedure Step Sequence",retired:""},"0x00081115":{keyword:"ReferencedSeriesSequence",vr:"SQ",vm:"1",name:"Referenced Series Sequence",retired:""},"0x00081120":{keyword:"ReferencedPatientSequence",vr:"SQ",vm:"1",name:"Referenced Patient Sequence",retired:""},"0x00081125":{keyword:"ReferencedVisitSequence",vr:"SQ",vm:"1",name:"Referenced Visit Sequence",retired:""},"0x00081130":{keyword:"ReferencedOverlaySequence",vr:"SQ",vm:"1",name:"Referenced Overlay Sequence",retired:"Retired"},"0x00081134":{keyword:"ReferencedStereometricInstanceSequence",vr:"SQ",vm:"1",name:"Referenced Stereometric Instance Sequence",retired:""},"0x0008113A":{keyword:"ReferencedWaveformSequence",vr:"SQ",vm:"1",name:"Referenced Waveform Sequence",retired:""},"0x00081140":{keyword:"ReferencedImageSequence",vr:"SQ",vm:"1",name:"Referenced Image Sequence",retired:""},"0x00081145":{keyword:"ReferencedCurveSequence",vr:"SQ",vm:"1",name:"Referenced Curve Sequence",retired:"Retired"},"0x0008114A":{keyword:"ReferencedInstanceSequence",vr:"SQ",vm:"1",name:"Referenced Instance Sequence",retired:""},"0x0008114B":{keyword:"ReferencedRealWorldValueMappingInstanceSequence",vr:"SQ",vm:"1",name:"Referenced Real World Value Mapping Instance Sequence",retired:""},"0x00081150":{keyword:"ReferencedSOPClassUID",vr:"UI",vm:"1",name:"Referenced SOP Class UID",retired:""},"0x00081155":{keyword:"ReferencedSOPInstanceUID",vr:"UI",vm:"1",name:"Referenced SOP Instance UID",retired:""},"0x00081156":{keyword:"DefinitionSourceSequence",vr:"SQ",vm:"1",name:"Definition Source Sequence",retired:""},"0x0008115A":{keyword:"SOPClassesSupported",vr:"UI",vm:"1-n",name:"SOP Classes Supported",retired:""},"0x00081160":{keyword:"ReferencedFrameNumber",vr:"IS",vm:"1-n",name:"Referenced Frame Number",retired:""},"0x00081161":{keyword:"SimpleFrameList",vr:"UL",vm:"1-n",name:"Simple Frame List",retired:""},"0x00081162":{keyword:"CalculatedFrameList",vr:"UL",vm:"3-3n",name:"Calculated Frame List",retired:""},"0x00081163":{keyword:"TimeRange",vr:"FD",vm:"2",name:"Time Range",retired:""},"0x00081164":{keyword:"FrameExtractionSequence",vr:"SQ",vm:"1",name:"Frame Extraction Sequence",retired:""},"0x00081167":{keyword:"MultiFrameSourceSOPInstanceUID",vr:"UI",vm:"1",name:"Multi-frame Source SOP Instance UID",retired:""},"0x00081190":{keyword:"RetrieveURL",vr:"UR",vm:"1",name:"Retrieve URL",retired:""},"0x00081195":{keyword:"TransactionUID",vr:"UI",vm:"1",name:"Transaction UID",retired:""},"0x00081196":{keyword:"WarningReason",vr:"US",vm:"1",name:"Warning Reason",retired:""},"0x00081197":{keyword:"FailureReason",vr:"US",vm:"1",name:"Failure Reason",retired:""},"0x00081198":{keyword:"FailedSOPSequence",vr:"SQ",vm:"1",name:"Failed SOP Sequence",retired:""},"0x00081199":{keyword:"ReferencedSOPSequence",vr:"SQ",vm:"1",name:"Referenced SOP Sequence",retired:""},"0x0008119A":{keyword:"OtherFailuresSequence",vr:"SQ",vm:"1",name:"Other Failures Sequence",retired:""},"0x00081200":{keyword:"StudiesContainingOtherReferencedInstancesSequence",vr:"SQ",vm:"1",name:"Studies Containing Other Referenced Instances Sequence",retired:""},"0x00081250":{keyword:"RelatedSeriesSequence",vr:"SQ",vm:"1",name:"Related Series Sequence",retired:""},"0x00082110":{keyword:"LossyImageCompressionRetired",vr:"CS",vm:"1",name:"Lossy Image Compression (Retired)",retired:"Retired"},"0x00082111":{keyword:"DerivationDescription",vr:"ST",vm:"1",name:"Derivation Description",retired:""},"0x00082112":{keyword:"SourceImageSequence",vr:"SQ",vm:"1",name:"Source Image Sequence",retired:""},"0x00082120":{keyword:"StageName",vr:"SH",vm:"1",name:"Stage Name",retired:""},"0x00082122":{keyword:"StageNumber",vr:"IS",vm:"1",name:"Stage Number",retired:""},"0x00082124":{keyword:"NumberOfStages",vr:"IS",vm:"1",name:"Number of Stages",retired:""},"0x00082127":{keyword:"ViewName",vr:"SH",vm:"1",name:"View Name",retired:""},"0x00082128":{keyword:"ViewNumber",vr:"IS",vm:"1",name:"View Number",retired:""},"0x00082129":{keyword:"NumberOfEventTimers",vr:"IS",vm:"1",name:"Number of Event Timers",retired:""},"0x0008212A":{keyword:"NumberOfViewsInStage",vr:"IS",vm:"1",name:"Number of Views in Stage",retired:""},"0x00082130":{keyword:"EventElapsedTimes",vr:"DS",vm:"1-n",name:"Event Elapsed Time(s)",retired:""},"0x00082132":{keyword:"EventTimerNames",vr:"LO",vm:"1-n",name:"Event Timer Name(s)",retired:""},"0x00082133":{keyword:"EventTimerSequence",vr:"SQ",vm:"1",name:"Event Timer Sequence",retired:""},"0x00082134":{keyword:"EventTimeOffset",vr:"FD",vm:"1",name:"Event Time Offset",retired:""},"0x00082135":{keyword:"EventCodeSequence",vr:"SQ",vm:"1",name:"Event Code Sequence",retired:""},"0x00082142":{keyword:"StartTrim",vr:"IS",vm:"1",name:"Start Trim",retired:""},"0x00082143":{keyword:"StopTrim",vr:"IS",vm:"1",name:"Stop Trim",retired:""},"0x00082144":{keyword:"RecommendedDisplayFrameRate",vr:"IS",vm:"1",name:"Recommended Display Frame Rate",retired:""},"0x00082200":{keyword:"TransducerPosition",vr:"CS",vm:"1",name:"Transducer Position",retired:"Retired"},"0x00082204":{keyword:"TransducerOrientation",vr:"CS",vm:"1",name:"Transducer Orientation",retired:"Retired"},"0x00082208":{keyword:"AnatomicStructure",vr:"CS",vm:"1",name:"Anatomic Structure",retired:"Retired"},"0x00082218":{keyword:"AnatomicRegionSequence",vr:"SQ",vm:"1",name:"Anatomic Region Sequence",retired:""},"0x00082220":{keyword:"AnatomicRegionModifierSequence",vr:"SQ",vm:"1",name:"Anatomic Region Modifier Sequence",retired:""},"0x00082228":{keyword:"PrimaryAnatomicStructureSequence",vr:"SQ",vm:"1",name:"Primary Anatomic Structure Sequence",retired:""},"0x00082229":{keyword:"AnatomicStructureSpaceOrRegionSequence",vr:"SQ",vm:"1",name:"Anatomic Structure, Space or Region Sequence",retired:"Retired"},"0x00082230":{keyword:"PrimaryAnatomicStructureModifierSequence",vr:"SQ",vm:"1",name:"Primary Anatomic Structure Modifier Sequence",retired:""},"0x00082240":{keyword:"TransducerPositionSequence",vr:"SQ",vm:"1",name:"Transducer Position Sequence",retired:"Retired"},"0x00082242":{keyword:"TransducerPositionModifierSequence",vr:"SQ",vm:"1",name:"Transducer Position Modifier Sequence",retired:"Retired"},"0x00082244":{keyword:"TransducerOrientationSequence",vr:"SQ",vm:"1",name:"Transducer Orientation Sequence",retired:"Retired"},"0x00082246":{keyword:"TransducerOrientationModifierSequence",vr:"SQ",vm:"1",name:"Transducer Orientation Modifier Sequence",retired:"Retired"},"0x00082251":{keyword:"AnatomicStructureSpaceOrRegionCodeSequenceTrial",vr:"SQ",vm:"1",name:"Anatomic Structure Space Or Region Code Sequence (Trial)",retired:"Retired"},"0x00082253":{keyword:"AnatomicPortalOfEntranceCodeSequenceTrial",vr:"SQ",vm:"1",name:"Anatomic Portal Of Entrance Code Sequence (Trial)",retired:"Retired"},"0x00082255":{keyword:"AnatomicApproachDirectionCodeSequenceTrial",vr:"SQ",vm:"1",name:"Anatomic Approach Direction Code Sequence (Trial)",retired:"Retired"},"0x00082256":{keyword:"AnatomicPerspectiveDescriptionTrial",vr:"ST",vm:"1",name:"Anatomic Perspective Description (Trial)",retired:"Retired"},"0x00082257":{keyword:"AnatomicPerspectiveCodeSequenceTrial",vr:"SQ",vm:"1",name:"Anatomic Perspective Code Sequence (Trial)",retired:"Retired"},"0x00082258":{keyword:"AnatomicLocationOfExaminingInstrumentDescriptionTrial",vr:"ST",vm:"1",name:"Anatomic Location Of Examining Instrument Description (Trial)",retired:"Retired"},"0x00082259":{keyword:"AnatomicLocationOfExaminingInstrumentCodeSequenceTrial",vr:"SQ",vm:"1",name:"Anatomic Location Of Examining Instrument Code Sequence (Trial)",retired:"Retired"},"0x0008225A":{keyword:"AnatomicStructureSpaceOrRegionModifierCodeSequenceTrial",vr:"SQ",vm:"1",name:"Anatomic Structure Space Or Region Modifier Code Sequence (Trial)",retired:"Retired"},"0x0008225C":{keyword:"OnAxisBackgroundAnatomicStructureCodeSequenceTrial",vr:"SQ",vm:"1",name:"On Axis Background Anatomic Structure Code Sequence (Trial)",retired:"Retired"},"0x00083001":{keyword:"AlternateRepresentationSequence",vr:"SQ",vm:"1",name:"Alternate Representation Sequence",retired:""},"0x00083002":{keyword:"AvailableTransferSyntaxUID",vr:"UI",vm:"1-n",name:"Available Transfer Syntax UID",retired:""},"0x00083010":{keyword:"IrradiationEventUID",vr:"UI",vm:"1-n",name:"Irradiation Event UID",retired:""},"0x00083011":{keyword:"SourceIrradiationEventSequence",vr:"SQ",vm:"1",name:"Source Irradiation Event Sequence",retired:""},"0x00083012":{keyword:"RadiopharmaceuticalAdministrationEventUID",vr:"UI",vm:"1",name:"Radiopharmaceutical Administration Event UID",retired:""},"0x00084000":{keyword:"IdentifyingComments",vr:"LT",vm:"1",name:"Identifying Comments",retired:"Retired"},"0x00089007":{keyword:"FrameType",vr:"CS",vm:"4-5",name:"Frame Type",retired:""},"0x00089092":{keyword:"ReferencedImageEvidenceSequence",vr:"SQ",vm:"1",name:"Referenced Image Evidence Sequence",retired:""},"0x00089121":{keyword:"ReferencedRawDataSequence",vr:"SQ",vm:"1",name:"Referenced Raw Data Sequence",retired:""},"0x00089123":{keyword:"CreatorVersionUID",vr:"UI",vm:"1",name:"Creator-Version UID",retired:""},"0x00089124":{keyword:"DerivationImageSequence",vr:"SQ",vm:"1",name:"Derivation Image Sequence",retired:""},"0x00089154":{keyword:"SourceImageEvidenceSequence",vr:"SQ",vm:"1",name:"Source Image Evidence Sequence",retired:""},"0x00089205":{keyword:"PixelPresentation",vr:"CS",vm:"1",name:"Pixel Presentation",retired:""},"0x00089206":{keyword:"VolumetricProperties",vr:"CS",vm:"1",name:"Volumetric Properties",retired:""},"0x00089207":{keyword:"VolumeBasedCalculationTechnique",vr:"CS",vm:"1",name:"Volume Based Calculation Technique",retired:""},"0x00089208":{keyword:"ComplexImageComponent",vr:"CS",vm:"1",name:"Complex Image Component",retired:""},"0x00089209":{keyword:"AcquisitionContrast",vr:"CS",vm:"1",name:"Acquisition Contrast",retired:""},"0x00089215":{keyword:"DerivationCodeSequence",vr:"SQ",vm:"1",name:"Derivation Code Sequence",retired:""},"0x00089237":{keyword:"ReferencedPresentationStateSequence",vr:"SQ",vm:"1",name:"Referenced Presentation State Sequence",retired:""},"0x00089410":{keyword:"ReferencedOtherPlaneSequence",vr:"SQ",vm:"1",name:"Referenced Other Plane Sequence",retired:""},"0x00089458":{keyword:"FrameDisplaySequence",vr:"SQ",vm:"1",name:"Frame Display Sequence",retired:""},"0x00089459":{keyword:"RecommendedDisplayFrameRateInFloat",vr:"FL",vm:"1",name:"Recommended Display Frame Rate in Float",retired:""},"0x00089460":{keyword:"SkipFrameRangeFlag",vr:"CS",vm:"1",name:"Skip Frame Range Flag",retired:""},"0x00100010":{keyword:"PatientName",vr:"PN",vm:"1",name:"Patient's Name",retired:""},"0x00100020":{keyword:"PatientID",vr:"LO",vm:"1",name:"Patient ID",retired:""},"0x00100021":{keyword:"IssuerOfPatientID",vr:"LO",vm:"1",name:"Issuer of Patient ID",retired:""},"0x00100022":{keyword:"TypeOfPatientID",vr:"CS",vm:"1",name:"Type of Patient ID",retired:""},"0x00100024":{keyword:"IssuerOfPatientIDQualifiersSequence",vr:"SQ",vm:"1",name:"Issuer of Patient ID Qualifiers Sequence",retired:""},"0x00100026":{keyword:"SourcePatientGroupIdentificationSequence",vr:"SQ",vm:"1",name:"Source Patient Group Identification Sequence",retired:""},"0x00100027":{keyword:"GroupOfPatientsIdentificationSequence",vr:"SQ",vm:"1",name:"Group of Patients Identification Sequence",retired:""},"0x00100028":{keyword:"SubjectRelativePositionInImage",vr:"US",vm:"3",name:"Subject Relative Position in Image",retired:""},"0x00100030":{keyword:"PatientBirthDate",vr:"DA",vm:"1",name:"Patient's Birth Date",retired:""},"0x00100032":{keyword:"PatientBirthTime",vr:"TM",vm:"1",name:"Patient's Birth Time",retired:""},"0x00100033":{keyword:"PatientBirthDateInAlternativeCalendar",vr:"LO",vm:"1",name:"Patient's Birth Date in Alternative Calendar",retired:""},"0x00100034":{keyword:"PatientDeathDateInAlternativeCalendar",vr:"LO",vm:"1",name:"Patient's Death Date in Alternative Calendar",retired:""},"0x00100035":{keyword:"PatientAlternativeCalendar",vr:"CS",vm:"1",name:"Patient's Alternative Calendar",retired:""},"0x00100040":{keyword:"PatientSex",vr:"CS",vm:"1",name:"Patient's Sex",retired:""},"0x00100050":{keyword:"PatientInsurancePlanCodeSequence",vr:"SQ",vm:"1",name:"Patient's Insurance Plan Code Sequence",retired:""},"0x00100101":{keyword:"PatientPrimaryLanguageCodeSequence",vr:"SQ",vm:"1",name:"Patient's Primary Language Code Sequence",retired:""},"0x00100102":{keyword:"PatientPrimaryLanguageModifierCodeSequence",vr:"SQ",vm:"1",name:"Patient's Primary Language Modifier Code Sequence",retired:""},"0x00100200":{keyword:"QualityControlSubject",vr:"CS",vm:"1",name:"Quality Control Subject",retired:""},"0x00100201":{keyword:"QualityControlSubjectTypeCodeSequence",vr:"SQ",vm:"1",name:"Quality Control Subject Type Code Sequence",retired:""},"0x00100212":{keyword:"StrainDescription",vr:"UC",vm:"1",name:"Strain Description",retired:""},"0x00100213":{keyword:"StrainNomenclature",vr:"LO",vm:"1",name:"Strain Nomenclature",retired:""},"0x00100214":{keyword:"StrainStockNumber",vr:"LO",vm:"1",name:"Strain Stock Number",retired:""},"0x00100215":{keyword:"StrainSourceRegistryCodeSequence",vr:"SQ",vm:"1",name:"Strain Source Registry Code Sequence",retired:""},"0x00100216":{keyword:"StrainStockSequence",vr:"SQ",vm:"1",name:"Strain Stock Sequence",retired:""},"0x00100217":{keyword:"StrainSource",vr:"LO",vm:"1",name:"Strain Source",retired:""},"0x00100218":{keyword:"StrainAdditionalInformation",vr:"UT",vm:"1",name:"Strain Additional Information",retired:""},"0x00100219":{keyword:"StrainCodeSequence",vr:"SQ",vm:"1",name:"Strain Code Sequence",retired:""},"0x00100221":{keyword:"GeneticModificationsSequence",vr:"SQ",vm:"1",name:"Genetic Modifications Sequence",retired:""},"0x00100222":{keyword:"GeneticModificationsDescription",vr:"UC",vm:"1",name:"Genetic Modifications Description",retired:""},"0x00100223":{keyword:"GeneticModificationsNomenclature",vr:"LO",vm:"1",name:"Genetic Modifications Nomenclature",retired:""},"0x00100229":{keyword:"GeneticModificationsCodeSequence",vr:"SQ",vm:"1",name:"Genetic Modifications Code Sequence",retired:""},"0x00101000":{keyword:"OtherPatientIDs",vr:"LO",vm:"1-n",name:"Other Patient IDs",retired:"Retired"},"0x00101001":{keyword:"OtherPatientNames",vr:"PN",vm:"1-n",name:"Other Patient Names",retired:""},"0x00101002":{keyword:"OtherPatientIDsSequence",vr:"SQ",vm:"1",name:"Other Patient IDs Sequence",retired:""},"0x00101005":{keyword:"PatientBirthName",vr:"PN",vm:"1",name:"Patient's Birth Name",retired:""},"0x00101010":{keyword:"PatientAge",vr:"AS",vm:"1",name:"Patient's Age",retired:""},"0x00101020":{keyword:"PatientSize",vr:"DS",vm:"1",name:"Patient's Size",retired:""},"0x00101021":{keyword:"PatientSizeCodeSequence",vr:"SQ",vm:"1",name:"Patient's Size Code Sequence",retired:""},"0x00101022":{keyword:"PatientBodyMassIndex",vr:"DS",vm:"1",name:"Patient's Body Mass Index",retired:""},"0x00101023":{keyword:"MeasuredAPDimension",vr:"DS",vm:"1",name:"Measured AP Dimension",retired:""},"0x00101024":{keyword:"MeasuredLateralDimension",vr:"DS",vm:"1",name:"Measured Lateral Dimension",retired:""},"0x00101030":{keyword:"PatientWeight",vr:"DS",vm:"1",name:"Patient's Weight",retired:""},"0x00101040":{keyword:"PatientAddress",vr:"LO",vm:"1",name:"Patient's Address",retired:""},"0x00101050":{keyword:"InsurancePlanIdentification",vr:"LO",vm:"1-n",name:"Insurance Plan Identification",retired:"Retired"},"0x00101060":{keyword:"PatientMotherBirthName",vr:"PN",vm:"1",name:"Patient's Mother's Birth Name",retired:""},"0x00101080":{keyword:"MilitaryRank",vr:"LO",vm:"1",name:"Military Rank",retired:""},"0x00101081":{keyword:"BranchOfService",vr:"LO",vm:"1",name:"Branch of Service",retired:""},"0x00101090":{keyword:"MedicalRecordLocator",vr:"LO",vm:"1",name:"Medical Record Locator",retired:"Retired"},"0x00101100":{keyword:"ReferencedPatientPhotoSequence",vr:"SQ",vm:"1",name:"Referenced Patient Photo Sequence",retired:""},"0x00102000":{keyword:"MedicalAlerts",vr:"LO",vm:"1-n",name:"Medical Alerts",retired:""},"0x00102110":{keyword:"Allergies",vr:"LO",vm:"1-n",name:"Allergies",retired:""},"0x00102150":{keyword:"CountryOfResidence",vr:"LO",vm:"1",name:"Country of Residence",retired:""},"0x00102152":{keyword:"RegionOfResidence",vr:"LO",vm:"1",name:"Region of Residence",retired:""},"0x00102154":{keyword:"PatientTelephoneNumbers",vr:"SH",vm:"1-n",name:"Patient's Telephone Numbers",retired:""},"0x00102155":{keyword:"PatientTelecomInformation",vr:"LT",vm:"1",name:"Patient's Telecom Information",retired:""},"0x00102160":{keyword:"EthnicGroup",vr:"SH",vm:"1",name:"Ethnic Group",retired:""},"0x00102180":{keyword:"Occupation",vr:"SH",vm:"1",name:"Occupation",retired:""},"0x001021A0":{keyword:"SmokingStatus",vr:"CS",vm:"1",name:"Smoking Status",retired:""},"0x001021B0":{keyword:"AdditionalPatientHistory",vr:"LT",vm:"1",name:"Additional Patient History",retired:""},"0x001021C0":{keyword:"PregnancyStatus",vr:"US",vm:"1",name:"Pregnancy Status",retired:""},"0x001021D0":{keyword:"LastMenstrualDate",vr:"DA",vm:"1",name:"Last Menstrual Date",retired:""},"0x001021F0":{keyword:"PatientReligiousPreference",vr:"LO",vm:"1",name:"Patient's Religious Preference",retired:""},"0x00102201":{keyword:"PatientSpeciesDescription",vr:"LO",vm:"1",name:"Patient Species Description",retired:""},"0x00102202":{keyword:"PatientSpeciesCodeSequence",vr:"SQ",vm:"1",name:"Patient Species Code Sequence",retired:""},"0x00102203":{keyword:"PatientSexNeutered",vr:"CS",vm:"1",name:"Patient's Sex Neutered",retired:""},"0x00102210":{keyword:"AnatomicalOrientationType",vr:"CS",vm:"1",name:"Anatomical Orientation Type",retired:""},"0x00102292":{keyword:"PatientBreedDescription",vr:"LO",vm:"1",name:"Patient Breed Description",retired:""},"0x00102293":{keyword:"PatientBreedCodeSequence",vr:"SQ",vm:"1",name:"Patient Breed Code Sequence",retired:""},"0x00102294":{keyword:"BreedRegistrationSequence",vr:"SQ",vm:"1",name:"Breed Registration Sequence",retired:""},"0x00102295":{keyword:"BreedRegistrationNumber",vr:"LO",vm:"1",name:"Breed Registration Number",retired:""},"0x00102296":{keyword:"BreedRegistryCodeSequence",vr:"SQ",vm:"1",name:"Breed Registry Code Sequence",retired:""},"0x00102297":{keyword:"ResponsiblePerson",vr:"PN",vm:"1",name:"Responsible Person",retired:""},"0x00102298":{keyword:"ResponsiblePersonRole",vr:"CS",vm:"1",name:"Responsible Person Role",retired:""},"0x00102299":{keyword:"ResponsibleOrganization",vr:"LO",vm:"1",name:"Responsible Organization",retired:""},"0x00104000":{keyword:"PatientComments",vr:"LT",vm:"1",name:"Patient Comments",retired:""},"0x00109431":{keyword:"ExaminedBodyThickness",vr:"FL",vm:"1",name:"Examined Body Thickness",retired:""},"0x00120010":{keyword:"ClinicalTrialSponsorName",vr:"LO",vm:"1",name:"Clinical Trial Sponsor Name",retired:""},"0x00120020":{keyword:"ClinicalTrialProtocolID",vr:"LO",vm:"1",name:"Clinical Trial Protocol ID",retired:""},"0x00120021":{keyword:"ClinicalTrialProtocolName",vr:"LO",vm:"1",name:"Clinical Trial Protocol Name",retired:""},"0x00120030":{keyword:"ClinicalTrialSiteID",vr:"LO",vm:"1",name:"Clinical Trial Site ID",retired:""},"0x00120031":{keyword:"ClinicalTrialSiteName",vr:"LO",vm:"1",name:"Clinical Trial Site Name",retired:""},"0x00120040":{keyword:"ClinicalTrialSubjectID",vr:"LO",vm:"1",name:"Clinical Trial Subject ID",retired:""},"0x00120042":{keyword:"ClinicalTrialSubjectReadingID",vr:"LO",vm:"1",name:"Clinical Trial Subject Reading ID",retired:""},"0x00120050":{keyword:"ClinicalTrialTimePointID",vr:"LO",vm:"1",name:"Clinical Trial Time Point ID",retired:""},"0x00120051":{keyword:"ClinicalTrialTimePointDescription",vr:"ST",vm:"1",name:"Clinical Trial Time Point Description",retired:""},"0x00120052":{keyword:"LongitudinalTemporalOffsetFromEvent",vr:"FD",vm:"1",name:"Longitudinal Temporal Offset from Event",retired:""},"0x00120053":{keyword:"LongitudinalTemporalEventType",vr:"CS",vm:"1",name:"Longitudinal Temporal Event Type",retired:""},"0x00120054":{keyword:"ClinicalTrialTimePointTypeCodeSequence",vr:"SQ",vm:"1",name:"Clinical Trial Time Point Type Code Sequence",retired:""},"0x00120060":{keyword:"ClinicalTrialCoordinatingCenterName",vr:"LO",vm:"1",name:"Clinical Trial Coordinating Center Name",retired:""},"0x00120062":{keyword:"PatientIdentityRemoved",vr:"CS",vm:"1",name:"Patient Identity Removed",retired:""},"0x00120063":{keyword:"DeidentificationMethod",vr:"LO",vm:"1-n",name:"De-identification Method",retired:""},"0x00120064":{keyword:"DeidentificationMethodCodeSequence",vr:"SQ",vm:"1",name:"De-identification Method Code Sequence",retired:""},"0x00120071":{keyword:"ClinicalTrialSeriesID",vr:"LO",vm:"1",name:"Clinical Trial Series ID",retired:""},"0x00120072":{keyword:"ClinicalTrialSeriesDescription",vr:"LO",vm:"1",name:"Clinical Trial Series Description",retired:""},"0x00120081":{keyword:"ClinicalTrialProtocolEthicsCommitteeName",vr:"LO",vm:"1",name:"Clinical Trial Protocol Ethics Committee Name",retired:""},"0x00120082":{keyword:"ClinicalTrialProtocolEthicsCommitteeApprovalNumber",vr:"LO",vm:"1",name:"Clinical Trial Protocol Ethics Committee Approval Number",retired:""},"0x00120083":{keyword:"ConsentForClinicalTrialUseSequence",vr:"SQ",vm:"1",name:"Consent for Clinical Trial Use Sequence",retired:""},"0x00120084":{keyword:"DistributionType",vr:"CS",vm:"1",name:"Distribution Type",retired:""},"0x00120085":{keyword:"ConsentForDistributionFlag",vr:"CS",vm:"1",name:"Consent for Distribution Flag",retired:""},"0x00120086":{keyword:"EthicsCommitteeApprovalEffectivenessStartDate",vr:"DA",vm:"1",name:"Ethics Committee Approval Effectiveness Start Date",retired:""},"0x00120087":{keyword:"EthicsCommitteeApprovalEffectivenessEndDate",vr:"DA",vm:"1",name:"Ethics Committee Approval Effectiveness End Date",retired:""},"0x00140023":{keyword:"CADFileFormat",vr:"ST",vm:"1",name:"CAD File Format",retired:"Retired"},"0x00140024":{keyword:"ComponentReferenceSystem",vr:"ST",vm:"1",name:"Component Reference System",retired:"Retired"},"0x00140025":{keyword:"ComponentManufacturingProcedure",vr:"ST",vm:"1",name:"Component Manufacturing Procedure",retired:""},"0x00140028":{keyword:"ComponentManufacturer",vr:"ST",vm:"1",name:"Component Manufacturer",retired:""},"0x00140030":{keyword:"MaterialThickness",vr:"DS",vm:"1-n",name:"Material Thickness",retired:""},"0x00140032":{keyword:"MaterialPipeDiameter",vr:"DS",vm:"1-n",name:"Material Pipe Diameter",retired:""},"0x00140034":{keyword:"MaterialIsolationDiameter",vr:"DS",vm:"1-n",name:"Material Isolation Diameter",retired:""},"0x00140042":{keyword:"MaterialGrade",vr:"ST",vm:"1",name:"Material Grade",retired:""},"0x00140044":{keyword:"MaterialPropertiesDescription",vr:"ST",vm:"1",name:"Material Properties Description",retired:""},"0x00140045":{keyword:"MaterialPropertiesFileFormatRetired",vr:"ST",vm:"1",name:"Material Properties File Format (Retired)",retired:"Retired"},"0x00140046":{keyword:"MaterialNotes",vr:"LT",vm:"1",name:"Material Notes",retired:""},"0x00140050":{keyword:"ComponentShape",vr:"CS",vm:"1",name:"Component Shape",retired:""},"0x00140052":{keyword:"CurvatureType",vr:"CS",vm:"1",name:"Curvature Type",retired:""},"0x00140054":{keyword:"OuterDiameter",vr:"DS",vm:"1",name:"Outer Diameter",retired:""},"0x00140056":{keyword:"InnerDiameter",vr:"DS",vm:"1",name:"Inner Diameter",retired:""},"0x00140100":{keyword:"ComponentWelderIDs",vr:"LO",vm:"1-n",name:"Component Welder IDs",retired:""},"0x00140101":{keyword:"SecondaryApprovalStatus",vr:"CS",vm:"1",name:"Secondary Approval Status",retired:""},"0x00140102":{keyword:"SecondaryReviewDate",vr:"DA",vm:"1",name:"Secondary Review Date",retired:""},"0x00140103":{keyword:"SecondaryReviewTime",vr:"TM",vm:"1",name:"Secondary Review Time",retired:""},"0x00140104":{keyword:"SecondaryReviewerName",vr:"PN",vm:"1",name:"Secondary Reviewer Name",retired:""},"0x00140105":{keyword:"RepairID",vr:"ST",vm:"1",name:"Repair ID",retired:""},"0x00140106":{keyword:"MultipleComponentApprovalSequence",vr:"SQ",vm:"1",name:"Multiple Component Approval Sequence",retired:""},"0x00140107":{keyword:"OtherApprovalStatus",vr:"CS",vm:"1-n",name:"Other Approval Status",retired:""},"0x00140108":{keyword:"OtherSecondaryApprovalStatus",vr:"CS",vm:"1-n",name:"Other Secondary Approval Status",retired:""},"0x00140200":{keyword:"DataElementLabelSequence",vr:"SQ",vm:"1",name:"Data Element Label Sequence",retired:""},"0x00140201":{keyword:"DataElementLabelItemSequence",vr:"SQ",vm:"1",name:"Data Element Label Item Sequence",retired:""},"0x00140202":{keyword:"DataElement",vr:"AT",vm:"1",name:"Data Element",retired:""},"0x00140203":{keyword:"DataElementName",vr:"LO",vm:"1",name:"Data Element Name",retired:""},"0x00140204":{keyword:"DataElementDescription",vr:"LO",vm:"1",name:"Data Element Description",retired:""},"0x00140205":{keyword:"DataElementConditionality",vr:"CS",vm:"1",name:"Data Element Conditionality",retired:""},"0x00140206":{keyword:"DataElementMinimumCharacters",vr:"IS",vm:"1",name:"Data Element Minimum Characters",retired:""},"0x00140207":{keyword:"DataElementMaximumCharacters",vr:"IS",vm:"1",name:"Data Element Maximum Characters",retired:""},"0x00141010":{keyword:"ActualEnvironmentalConditions",vr:"ST",vm:"1",name:"Actual Environmental Conditions",retired:""},"0x00141020":{keyword:"ExpiryDate",vr:"DA",vm:"1",name:"Expiry Date",retired:""},"0x00141040":{keyword:"EnvironmentalConditions",vr:"ST",vm:"1",name:"Environmental Conditions",retired:""},"0x00142002":{keyword:"EvaluatorSequence",vr:"SQ",vm:"1",name:"Evaluator Sequence",retired:""},"0x00142004":{keyword:"EvaluatorNumber",vr:"IS",vm:"1",name:"Evaluator Number",retired:""},"0x00142006":{keyword:"EvaluatorName",vr:"PN",vm:"1",name:"Evaluator Name",retired:""},"0x00142008":{keyword:"EvaluationAttempt",vr:"IS",vm:"1",name:"Evaluation Attempt",retired:""},"0x00142012":{keyword:"IndicationSequence",vr:"SQ",vm:"1",name:"Indication Sequence",retired:""},"0x00142014":{keyword:"IndicationNumber",vr:"IS",vm:"1",name:"Indication Number",retired:""},"0x00142016":{keyword:"IndicationLabel",vr:"SH",vm:"1",name:"Indication Label",retired:""},"0x00142018":{keyword:"IndicationDescription",vr:"ST",vm:"1",name:"Indication Description",retired:""},"0x0014201A":{keyword:"IndicationType",vr:"CS",vm:"1-n",name:"Indication Type",retired:""},"0x0014201C":{keyword:"IndicationDisposition",vr:"CS",vm:"1",name:"Indication Disposition",retired:""},"0x0014201E":{keyword:"IndicationROISequence",vr:"SQ",vm:"1",name:"Indication ROI Sequence",retired:""},"0x00142030":{keyword:"IndicationPhysicalPropertySequence",vr:"SQ",vm:"1",name:"Indication Physical Property Sequence",retired:""},"0x00142032":{keyword:"PropertyLabel",vr:"SH",vm:"1",name:"Property Label",retired:""},"0x00142202":{keyword:"CoordinateSystemNumberOfAxes",vr:"IS",vm:"1",name:"Coordinate System Number of Axes",retired:""},"0x00142204":{keyword:"CoordinateSystemAxesSequence",vr:"SQ",vm:"1",name:"Coordinate System Axes Sequence",retired:""},"0x00142206":{keyword:"CoordinateSystemAxisDescription",vr:"ST",vm:"1",name:"Coordinate System Axis Description",retired:""},"0x00142208":{keyword:"CoordinateSystemDataSetMapping",vr:"CS",vm:"1",name:"Coordinate System Data Set Mapping",retired:""},"0x0014220A":{keyword:"CoordinateSystemAxisNumber",vr:"IS",vm:"1",name:"Coordinate System Axis Number",retired:""},"0x0014220C":{keyword:"CoordinateSystemAxisType",vr:"CS",vm:"1",name:"Coordinate System Axis Type",retired:""},"0x0014220E":{keyword:"CoordinateSystemAxisUnits",vr:"CS",vm:"1",name:"Coordinate System Axis Units",retired:""},"0x00142210":{keyword:"CoordinateSystemAxisValues",vr:"OB",vm:"1",name:"Coordinate System Axis Values",retired:""},"0x00142220":{keyword:"CoordinateSystemTransformSequence",vr:"SQ",vm:"1",name:"Coordinate System Transform Sequence",retired:""},"0x00142222":{keyword:"TransformDescription",vr:"ST",vm:"1",name:"Transform Description",retired:""},"0x00142224":{keyword:"TransformNumberOfAxes",vr:"IS",vm:"1",name:"Transform Number of Axes",retired:""},"0x00142226":{keyword:"TransformOrderOfAxes",vr:"IS",vm:"1-n",name:"Transform Order of Axes",retired:""},"0x00142228":{keyword:"TransformedAxisUnits",vr:"CS",vm:"1",name:"Transformed Axis Units",retired:""},"0x0014222A":{keyword:"CoordinateSystemTransformRotationAndScaleMatrix",vr:"DS",vm:"1-n",name:"Coordinate System Transform Rotation and Scale Matrix",retired:""},"0x0014222C":{keyword:"CoordinateSystemTransformTranslationMatrix",vr:"DS",vm:"1-n",name:"Coordinate System Transform Translation Matrix",retired:""},"0x00143011":{keyword:"InternalDetectorFrameTime",vr:"DS",vm:"1",name:"Internal Detector Frame Time",retired:""},"0x00143012":{keyword:"NumberOfFramesIntegrated",vr:"DS",vm:"1",name:"Number of Frames Integrated",retired:""},"0x00143020":{keyword:"DetectorTemperatureSequence",vr:"SQ",vm:"1",name:"Detector Temperature Sequence",retired:""},"0x00143022":{keyword:"SensorName",vr:"ST",vm:"1",name:"Sensor Name",retired:""},"0x00143024":{keyword:"HorizontalOffsetOfSensor",vr:"DS",vm:"1",name:"Horizontal Offset of Sensor",retired:""},"0x00143026":{keyword:"VerticalOffsetOfSensor",vr:"DS",vm:"1",name:"Vertical Offset of Sensor",retired:""},"0x00143028":{keyword:"SensorTemperature",vr:"DS",vm:"1",name:"Sensor Temperature",retired:""},"0x00143040":{keyword:"DarkCurrentSequence",vr:"SQ",vm:"1",name:"Dark Current Sequence",retired:""},"0x00143050":{keyword:"DarkCurrentCounts",vr:"OB or OW",vm:"1",name:"Dark Current Counts",retired:""},"0x00143060":{keyword:"GainCorrectionReferenceSequence",vr:"SQ",vm:"1",name:"Gain Correction Reference Sequence",retired:""},"0x00143070":{keyword:"AirCounts",vr:"OB or OW",vm:"1",name:"Air Counts",retired:""},"0x00143071":{keyword:"KVUsedInGainCalibration",vr:"DS",vm:"1",name:"KV Used in Gain Calibration",retired:""},"0x00143072":{keyword:"MAUsedInGainCalibration",vr:"DS",vm:"1",name:"MA Used in Gain Calibration",retired:""},"0x00143073":{keyword:"NumberOfFramesUsedForIntegration",vr:"DS",vm:"1",name:"Number of Frames Used for Integration",retired:""},"0x00143074":{keyword:"FilterMaterialUsedInGainCalibration",vr:"LO",vm:"1",name:"Filter Material Used in Gain Calibration",retired:""},"0x00143075":{keyword:"FilterThicknessUsedInGainCalibration",vr:"DS",vm:"1",name:"Filter Thickness Used in Gain Calibration",retired:""},"0x00143076":{keyword:"DateOfGainCalibration",vr:"DA",vm:"1",name:"Date of Gain Calibration",retired:""},"0x00143077":{keyword:"TimeOfGainCalibration",vr:"TM",vm:"1",name:"Time of Gain Calibration",retired:""},"0x00143080":{keyword:"BadPixelImage",vr:"OB",vm:"1",name:"Bad Pixel Image",retired:""},"0x00143099":{keyword:"CalibrationNotes",vr:"LT",vm:"1",name:"Calibration Notes",retired:""},"0x00143100":{keyword:"LinearityCorrectionTechnique",vr:"LT",vm:"1",name:"Linearity Correction Technique",retired:""},"0x00143101":{keyword:"BeamHardeningCorrectionTechnique",vr:"LT",vm:"1",name:"Beam Hardening Correction Technique",retired:""},"0x00144002":{keyword:"PulserEquipmentSequence",vr:"SQ",vm:"1",name:"Pulser Equipment Sequence",retired:""},"0x00144004":{keyword:"PulserType",vr:"CS",vm:"1",name:"Pulser Type",retired:""},"0x00144006":{keyword:"PulserNotes",vr:"LT",vm:"1",name:"Pulser Notes",retired:""},"0x00144008":{keyword:"ReceiverEquipmentSequence",vr:"SQ",vm:"1",name:"Receiver Equipment Sequence",retired:""},"0x0014400A":{keyword:"AmplifierType",vr:"CS",vm:"1",name:"Amplifier Type",retired:""},"0x0014400C":{keyword:"ReceiverNotes",vr:"LT",vm:"1",name:"Receiver Notes",retired:""},"0x0014400E":{keyword:"PreAmplifierEquipmentSequence",vr:"SQ",vm:"1",name:"Pre-Amplifier Equipment Sequence",retired:""},"0x0014400F":{keyword:"PreAmplifierNotes",vr:"LT",vm:"1",name:"Pre-Amplifier Notes",retired:""},"0x00144010":{keyword:"TransmitTransducerSequence",vr:"SQ",vm:"1",name:"Transmit Transducer Sequence",retired:""},"0x00144011":{keyword:"ReceiveTransducerSequence",vr:"SQ",vm:"1",name:"Receive Transducer Sequence",retired:""},"0x00144012":{keyword:"NumberOfElements",vr:"US",vm:"1",name:"Number of Elements",retired:""},"0x00144013":{keyword:"ElementShape",vr:"CS",vm:"1",name:"Element Shape",retired:""},"0x00144014":{keyword:"ElementDimensionA",vr:"DS",vm:"1",name:"Element Dimension A",retired:""},"0x00144015":{keyword:"ElementDimensionB",vr:"DS",vm:"1",name:"Element Dimension B",retired:""},"0x00144016":{keyword:"ElementPitchA",vr:"DS",vm:"1",name:"Element Pitch A",retired:""},"0x00144017":{keyword:"MeasuredBeamDimensionA",vr:"DS",vm:"1",name:"Measured Beam Dimension A",retired:""},"0x00144018":{keyword:"MeasuredBeamDimensionB",vr:"DS",vm:"1",name:"Measured Beam Dimension B",retired:""},"0x00144019":{keyword:"LocationOfMeasuredBeamDiameter",vr:"DS",vm:"1",name:"Location of Measured Beam Diameter",retired:""},"0x0014401A":{keyword:"NominalFrequency",vr:"DS",vm:"1",name:"Nominal Frequency",retired:""},"0x0014401B":{keyword:"MeasuredCenterFrequency",vr:"DS",vm:"1",name:"Measured Center Frequency",retired:""},"0x0014401C":{keyword:"MeasuredBandwidth",vr:"DS",vm:"1",name:"Measured Bandwidth",retired:""},"0x0014401D":{keyword:"ElementPitchB",vr:"DS",vm:"1",name:"Element Pitch B",retired:""},"0x00144020":{keyword:"PulserSettingsSequence",vr:"SQ",vm:"1",name:"Pulser Settings Sequence",retired:""},"0x00144022":{keyword:"PulseWidth",vr:"DS",vm:"1",name:"Pulse Width",retired:""},"0x00144024":{keyword:"ExcitationFrequency",vr:"DS",vm:"1",name:"Excitation Frequency",retired:""},"0x00144026":{keyword:"ModulationType",vr:"CS",vm:"1",name:"Modulation Type",retired:""},"0x00144028":{keyword:"Damping",vr:"DS",vm:"1",name:"Damping",retired:""},"0x00144030":{keyword:"ReceiverSettingsSequence",vr:"SQ",vm:"1",name:"Receiver Settings Sequence",retired:""},"0x00144031":{keyword:"AcquiredSoundpathLength",vr:"DS",vm:"1",name:"Acquired Soundpath Length",retired:""},"0x00144032":{keyword:"AcquisitionCompressionType",vr:"CS",vm:"1",name:"Acquisition Compression Type",retired:""},"0x00144033":{keyword:"AcquisitionSampleSize",vr:"IS",vm:"1",name:"Acquisition Sample Size",retired:""},"0x00144034":{keyword:"RectifierSmoothing",vr:"DS",vm:"1",name:"Rectifier Smoothing",retired:""},"0x00144035":{keyword:"DACSequence",vr:"SQ",vm:"1",name:"DAC Sequence",retired:""},"0x00144036":{keyword:"DACType",vr:"CS",vm:"1",name:"DAC Type",retired:""},"0x00144038":{keyword:"DACGainPoints",vr:"DS",vm:"1-n",name:"DAC Gain Points",retired:""},"0x0014403A":{keyword:"DACTimePoints",vr:"DS",vm:"1-n",name:"DAC Time Points",retired:""},"0x0014403C":{keyword:"DACAmplitude",vr:"DS",vm:"1-n",name:"DAC Amplitude",retired:""},"0x00144040":{keyword:"PreAmplifierSettingsSequence",vr:"SQ",vm:"1",name:"Pre-Amplifier Settings Sequence",retired:""},"0x00144050":{keyword:"TransmitTransducerSettingsSequence",vr:"SQ",vm:"1",name:"Transmit Transducer Settings Sequence",retired:""},"0x00144051":{keyword:"ReceiveTransducerSettingsSequence",vr:"SQ",vm:"1",name:"Receive Transducer Settings Sequence",retired:""},"0x00144052":{keyword:"IncidentAngle",vr:"DS",vm:"1",name:"Incident Angle",retired:""},"0x00144054":{keyword:"CouplingTechnique",vr:"ST",vm:"1",name:"Coupling Technique",retired:""},"0x00144056":{keyword:"CouplingMedium",vr:"ST",vm:"1",name:"Coupling Medium",retired:""},"0x00144057":{keyword:"CouplingVelocity",vr:"DS",vm:"1",name:"Coupling Velocity",retired:""},"0x00144058":{keyword:"ProbeCenterLocationX",vr:"DS",vm:"1",name:"Probe Center Location X",retired:""},"0x00144059":{keyword:"ProbeCenterLocationZ",vr:"DS",vm:"1",name:"Probe Center Location Z",retired:""},"0x0014405A":{keyword:"SoundPathLength",vr:"DS",vm:"1",name:"Sound Path Length",retired:""},"0x0014405C":{keyword:"DelayLawIdentifier",vr:"ST",vm:"1",name:"Delay Law Identifier",retired:""},"0x00144060":{keyword:"GateSettingsSequence",vr:"SQ",vm:"1",name:"Gate Settings Sequence",retired:""},"0x00144062":{keyword:"GateThreshold",vr:"DS",vm:"1",name:"Gate Threshold",retired:""},"0x00144064":{keyword:"VelocityOfSound",vr:"DS",vm:"1",name:"Velocity of Sound",retired:""},"0x00144070":{keyword:"CalibrationSettingsSequence",vr:"SQ",vm:"1",name:"Calibration Settings Sequence",retired:""},"0x00144072":{keyword:"CalibrationProcedure",vr:"ST",vm:"1",name:"Calibration Procedure",retired:""},"0x00144074":{keyword:"ProcedureVersion",vr:"SH",vm:"1",name:"Procedure Version",retired:""},"0x00144076":{keyword:"ProcedureCreationDate",vr:"DA",vm:"1",name:"Procedure Creation Date",retired:""},"0x00144078":{keyword:"ProcedureExpirationDate",vr:"DA",vm:"1",name:"Procedure Expiration Date",retired:""},"0x0014407A":{keyword:"ProcedureLastModifiedDate",vr:"DA",vm:"1",name:"Procedure Last Modified Date",retired:""},"0x0014407C":{keyword:"CalibrationTime",vr:"TM",vm:"1-n",name:"Calibration Time",retired:""},"0x0014407E":{keyword:"CalibrationDate",vr:"DA",vm:"1-n",name:"Calibration Date",retired:""},"0x00144080":{keyword:"ProbeDriveEquipmentSequence",vr:"SQ",vm:"1",name:"Probe Drive Equipment Sequence",retired:""},"0x00144081":{keyword:"DriveType",vr:"CS",vm:"1",name:"Drive Type",retired:""},"0x00144082":{keyword:"ProbeDriveNotes",vr:"LT",vm:"1",name:"Probe Drive Notes",retired:""},"0x00144083":{keyword:"DriveProbeSequence",vr:"SQ",vm:"1",name:"Drive Probe Sequence",retired:""},"0x00144084":{keyword:"ProbeInductance",vr:"DS",vm:"1",name:"Probe Inductance",retired:""},"0x00144085":{keyword:"ProbeResistance",vr:"DS",vm:"1",name:"Probe Resistance",retired:""},"0x00144086":{keyword:"ReceiveProbeSequence",vr:"SQ",vm:"1",name:"Receive Probe Sequence",retired:""},"0x00144087":{keyword:"ProbeDriveSettingsSequence",vr:"SQ",vm:"1",name:"Probe Drive Settings Sequence",retired:""},"0x00144088":{keyword:"BridgeResistors",vr:"DS",vm:"1",name:"Bridge Resistors",retired:""},"0x00144089":{keyword:"ProbeOrientationAngle",vr:"DS",vm:"1",name:"Probe Orientation Angle",retired:""},"0x0014408B":{keyword:"UserSelectedGainY",vr:"DS",vm:"1",name:"User Selected Gain Y",retired:""},"0x0014408C":{keyword:"UserSelectedPhase",vr:"DS",vm:"1",name:"User Selected Phase",retired:""},"0x0014408D":{keyword:"UserSelectedOffsetX",vr:"DS",vm:"1",name:"User Selected Offset X",retired:""},"0x0014408E":{keyword:"UserSelectedOffsetY",vr:"DS",vm:"1",name:"User Selected Offset Y",retired:""},"0x00144091":{keyword:"ChannelSettingsSequence",vr:"SQ",vm:"1",name:"Channel Settings Sequence",retired:""},"0x00144092":{keyword:"ChannelThreshold",vr:"DS",vm:"1",name:"Channel Threshold",retired:""},"0x0014409A":{keyword:"ScannerSettingsSequence",vr:"SQ",vm:"1",name:"Scanner Settings Sequence",retired:""},"0x0014409B":{keyword:"ScanProcedure",vr:"ST",vm:"1",name:"Scan Procedure",retired:""},"0x0014409C":{keyword:"TranslationRateX",vr:"DS",vm:"1",name:"Translation Rate X",retired:""},"0x0014409D":{keyword:"TranslationRateY",vr:"DS",vm:"1",name:"Translation Rate Y",retired:""},"0x0014409F":{keyword:"ChannelOverlap",vr:"DS",vm:"1",name:"Channel Overlap",retired:""},"0x001440A0":{keyword:"ImageQualityIndicatorType",vr:"LO",vm:"1-n",name:"Image Quality Indicator Type",retired:""},"0x001440A1":{keyword:"ImageQualityIndicatorMaterial",vr:"LO",vm:"1-n",name:"Image Quality Indicator Material",retired:""},"0x001440A2":{keyword:"ImageQualityIndicatorSize",vr:"LO",vm:"1-n",name:"Image Quality Indicator Size",retired:""},"0x00145002":{keyword:"LINACEnergy",vr:"IS",vm:"1",name:"LINAC Energy",retired:""},"0x00145004":{keyword:"LINACOutput",vr:"IS",vm:"1",name:"LINAC Output",retired:""},"0x00145100":{keyword:"ActiveAperture",vr:"US",vm:"1",name:"Active Aperture",retired:""},"0x00145101":{keyword:"TotalAperture",vr:"DS",vm:"1",name:"Total Aperture",retired:""},"0x00145102":{keyword:"ApertureElevation",vr:"DS",vm:"1",name:"Aperture Elevation",retired:""},"0x00145103":{keyword:"MainLobeAngle",vr:"DS",vm:"1",name:"Main Lobe Angle",retired:""},"0x00145104":{keyword:"MainRoofAngle",vr:"DS",vm:"1",name:"Main Roof Angle",retired:""},"0x00145105":{keyword:"ConnectorType",vr:"CS",vm:"1",name:"Connector Type",retired:""},"0x00145106":{keyword:"WedgeModelNumber",vr:"SH",vm:"1",name:"Wedge Model Number",retired:""},"0x00145107":{keyword:"WedgeAngleFloat",vr:"DS",vm:"1",name:"Wedge Angle Float",retired:""},"0x00145108":{keyword:"WedgeRoofAngle",vr:"DS",vm:"1",name:"Wedge Roof Angle",retired:""},"0x00145109":{keyword:"WedgeElement1Position",vr:"CS",vm:"1",name:"Wedge Element 1 Position",retired:""},"0x0014510A":{keyword:"WedgeMaterialVelocity",vr:"DS",vm:"1",name:"Wedge Material Velocity",retired:""},"0x0014510B":{keyword:"WedgeMaterial",vr:"SH",vm:"1",name:"Wedge Material",retired:""},"0x0014510C":{keyword:"WedgeOffsetZ",vr:"DS",vm:"1",name:"Wedge Offset Z",retired:""},"0x0014510D":{keyword:"WedgeOriginOffsetX",vr:"DS",vm:"1",name:"Wedge Origin Offset X",retired:""},"0x0014510E":{keyword:"WedgeTimeDelay",vr:"DS",vm:"1",name:"Wedge Time Delay",retired:""},"0x0014510F":{keyword:"WedgeName",vr:"SH",vm:"1",name:"Wedge Name",retired:""},"0x00145110":{keyword:"WedgeManufacturerName",vr:"SH",vm:"1",name:"Wedge Manufacturer Name",retired:""},"0x00145111":{keyword:"WedgeDescription",vr:"LO",vm:"1",name:"Wedge Description",retired:""},"0x00145112":{keyword:"NominalBeamAngle",vr:"DS",vm:"1",name:"Nominal Beam Angle",retired:""},"0x00145113":{keyword:"WedgeOffsetX",vr:"DS",vm:"1",name:"Wedge Offset X",retired:""},"0x00145114":{keyword:"WedgeOffsetY",vr:"DS",vm:"1",name:"Wedge Offset Y",retired:""},"0x00145115":{keyword:"WedgeTotalLength",vr:"DS",vm:"1",name:"Wedge Total Length",retired:""},"0x00145116":{keyword:"WedgeInContactLength",vr:"DS",vm:"1",name:"Wedge In Contact Length",retired:""},"0x00145117":{keyword:"WedgeFrontGap",vr:"DS",vm:"1",name:"Wedge Front Gap",retired:""},"0x00145118":{keyword:"WedgeTotalHeight",vr:"DS",vm:"1",name:"Wedge Total Height",retired:""},"0x00145119":{keyword:"WedgeFrontHeight",vr:"DS",vm:"1",name:"Wedge Front Height",retired:""},"0x0014511A":{keyword:"WedgeRearHeight",vr:"DS",vm:"1",name:"Wedge Rear Height",retired:""},"0x0014511B":{keyword:"WedgeTotalWidth",vr:"DS",vm:"1",name:"Wedge Total Width",retired:""},"0x0014511C":{keyword:"WedgeInContactWidth",vr:"DS",vm:"1",name:"Wedge In Contact Width",retired:""},"0x0014511D":{keyword:"WedgeChamferHeight",vr:"DS",vm:"1",name:"Wedge Chamfer Height",retired:""},"0x0014511E":{keyword:"WedgeCurve",vr:"CS",vm:"1",name:"Wedge Curve",retired:""},"0x0014511F":{keyword:"RadiusAlongWedge",vr:"DS",vm:"1",name:"Radius Along the Wedge",retired:""},"0x00160001":{keyword:"WhitePoint",vr:"DS",vm:"1",name:"White Point",retired:""},"0x00160002":{keyword:"PrimaryChromaticities",vr:"DS",vm:"3",name:"Primary Chromaticities",retired:""},"0x00160003":{keyword:"BatteryLevel",vr:"UT",vm:"1",name:"Battery Level",retired:""},"0x00160004":{keyword:"ExposureTimeInSeconds",vr:"DS",vm:"1",name:"Exposure Time in Seconds",retired:""},"0x00160005":{keyword:"FNumber",vr:"DS",vm:"1",name:"F-Number",retired:""},"0x00160006":{keyword:"OECFRows",vr:"IS",vm:"1",name:"OECF Rows",retired:""},"0x00160007":{keyword:"OECFColumns",vr:"IS",vm:"1",name:"OECF Columns",retired:""},"0x00160008":{keyword:"OECFColumnNames",vr:"UC",vm:"1-n",name:"OECF Column Names",retired:""},"0x00160009":{keyword:"OECFValues",vr:"DS",vm:"1-n",name:"OECF Values",retired:""},"0x0016000A":{keyword:"SpatialFrequencyResponseRows",vr:"IS",vm:"1",name:"Spatial Frequency Response Rows",retired:""},"0x0016000B":{keyword:"SpatialFrequencyResponseColumns",vr:"IS",vm:"1",name:"Spatial Frequency Response Columns",retired:""},"0x0016000C":{keyword:"SpatialFrequencyResponseColumnNames",vr:"UC",vm:"1-n",name:"Spatial Frequency Response Column Names",retired:""},"0x0016000D":{keyword:"SpatialFrequencyResponseValues",vr:"DS",vm:"1-n",name:"Spatial Frequency Response Values",retired:""},"0x0016000E":{keyword:"ColorFilterArrayPatternRows",vr:"IS",vm:"1",name:"Color Filter Array Pattern Rows",retired:""},"0x0016000F":{keyword:"ColorFilterArrayPatternColumns",vr:"IS",vm:"1",name:"Color Filter Array Pattern Columns",retired:""},"0x00160010":{keyword:"ColorFilterArrayPatternValues",vr:"DS",vm:"1-n",name:"Color Filter Array Pattern Values",retired:""},"0x00160011":{keyword:"FlashFiringStatus",vr:"US",vm:"1",name:"Flash Firing Status",retired:""},"0x00160012":{keyword:"FlashReturnStatus",vr:"US",vm:"1",name:"Flash Return Status",retired:""},"0x00160013":{keyword:"FlashMode",vr:"US",vm:"1",name:"Flash Mode",retired:""},"0x00160014":{keyword:"FlashFunctionPresent",vr:"US",vm:"1",name:"Flash Function Present",retired:""},"0x00160015":{keyword:"FlashRedEyeMode",vr:"US",vm:"1",name:"Flash Red Eye Mode",retired:""},"0x00160016":{keyword:"ExposureProgram",vr:"US",vm:"1",name:"Exposure Program",retired:""},"0x00160017":{keyword:"SpectralSensitivity",vr:"UT",vm:"1",name:"Spectral Sensitivity",retired:""},"0x00160018":{keyword:"PhotographicSensitivity",vr:"IS",vm:"1",name:"Photographic Sensitivity",retired:""},"0x00160019":{keyword:"SelfTimerMode",vr:"IS",vm:"1",name:"Self Timer Mode",retired:""},"0x0016001A":{keyword:"SensitivityType",vr:"US",vm:"1",name:"Sensitivity Type",retired:""},"0x0016001B":{keyword:"StandardOutputSensitivity",vr:"IS",vm:"1",name:"Standard Output Sensitivity",retired:""},"0x0016001C":{keyword:"RecommendedExposureIndex",vr:"IS",vm:"1",name:"Recommended Exposure Index",retired:""},"0x0016001D":{keyword:"ISOSpeed",vr:"IS",vm:"1",name:"ISO Speed",retired:""},"0x0016001E":{keyword:"ISOSpeedLatitudeyyy",vr:"IS",vm:"1",name:"ISO Speed Latitude yyy",retired:""},"0x0016001F":{keyword:"ISOSpeedLatitudezzz",vr:"IS",vm:"1",name:"ISO Speed Latitude zzz",retired:""},"0x00160020":{keyword:"EXIFVersion",vr:"UT",vm:"1",name:"EXIF Version",retired:""},"0x00160021":{keyword:"ShutterSpeedValue",vr:"DS",vm:"1",name:"Shutter Speed Value",retired:""},"0x00160022":{keyword:"ApertureValue",vr:"DS",vm:"1",name:"Aperture Value",retired:""},"0x00160023":{keyword:"BrightnessValue",vr:"DS",vm:"1",name:"Brightness Value",retired:""},"0x00160024":{keyword:"ExposureBiasValue",vr:"DS",vm:"1",name:"Exposure Bias Value",retired:""},"0x00160025":{keyword:"MaxApertureValue",vr:"DS",vm:"1",name:"Max Aperture Value",retired:""},"0x00160026":{keyword:"SubjectDistance",vr:"DS",vm:"1",name:"Subject Distance",retired:""},"0x00160027":{keyword:"MeteringMode",vr:"US",vm:"1",name:"Metering Mode",retired:""},"0x00160028":{keyword:"LightSource",vr:"US",vm:"1",name:"Light Source",retired:""},"0x00160029":{keyword:"FocalLength",vr:"DS",vm:"1",name:"Focal Length",retired:""},"0x0016002A":{keyword:"SubjectArea",vr:"IS",vm:"2-4",name:"Subject Area",retired:""},"0x0016002B":{keyword:"MakerNote",vr:"OB",vm:"1",name:"Maker Note",retired:""},"0x00160030":{keyword:"Temperature",vr:"DS",vm:"1",name:"Temperature",retired:""},"0x00160031":{keyword:"Humidity",vr:"DS",vm:"1",name:"Humidity",retired:""},"0x00160032":{keyword:"Pressure",vr:"DS",vm:"1",name:"Pressure",retired:""},"0x00160033":{keyword:"WaterDepth",vr:"DS",vm:"1",name:"Water Depth",retired:""},"0x00160034":{keyword:"Acceleration",vr:"DS",vm:"1",name:"Acceleration",retired:""},"0x00160035":{keyword:"CameraElevationAngle",vr:"DS",vm:"1",name:"Camera Elevation Angle",retired:""},"0x00160036":{keyword:"FlashEnergy",vr:"DS",vm:"1-2",name:"Flash Energy",retired:""},"0x00160037":{keyword:"SubjectLocation",vr:"IS",vm:"2",name:"Subject Location",retired:""},"0x00160038":{keyword:"PhotographicExposureIndex",vr:"DS",vm:"1",name:"Photographic Exposure Index",retired:""},"0x00160039":{keyword:"SensingMethod",vr:"US",vm:"1",name:"Sensing Method",retired:""},"0x0016003A":{keyword:"FileSource",vr:"US",vm:"1",name:"File Source",retired:""},"0x0016003B":{keyword:"SceneType",vr:"US",vm:"1",name:"Scene Type",retired:""},"0x00160041":{keyword:"CustomRendered",vr:"US",vm:"1",name:"Custom Rendered",retired:""},"0x00160042":{keyword:"ExposureMode",vr:"US",vm:"1",name:"Exposure Mode",retired:""},"0x00160043":{keyword:"WhiteBalance",vr:"US",vm:"1",name:"White Balance",retired:""},"0x00160044":{keyword:"DigitalZoomRatio",vr:"DS",vm:"1",name:"Digital Zoom Ratio",retired:""},"0x00160045":{keyword:"FocalLengthIn35mmFilm",vr:"IS",vm:"1",name:"Focal Length In 35mm Film",retired:""},"0x00160046":{keyword:"SceneCaptureType",vr:"US",vm:"1",name:"Scene Capture Type",retired:""},"0x00160047":{keyword:"GainControl",vr:"US",vm:"1",name:"Gain Control",retired:""},"0x00160048":{keyword:"Contrast",vr:"US",vm:"1",name:"Contrast",retired:""},"0x00160049":{keyword:"Saturation",vr:"US",vm:"1",name:"Saturation",retired:""},"0x0016004A":{keyword:"Sharpness",vr:"US",vm:"1",name:"Sharpness",retired:""},"0x0016004B":{keyword:"DeviceSettingDescription",vr:"OB",vm:"1",name:"Device Setting Description",retired:""},"0x0016004C":{keyword:"SubjectDistanceRange",vr:"US",vm:"1",name:"Subject Distance Range",retired:""},"0x0016004D":{keyword:"CameraOwnerName",vr:"UT",vm:"1",name:"Camera Owner Name",retired:""},"0x0016004E":{keyword:"LensSpecification",vr:"DS",vm:"4",name:"Lens Specification",retired:""},"0x0016004F":{keyword:"LensMake",vr:"UT",vm:"1",name:"Lens Make",retired:""},"0x00160050":{keyword:"LensModel",vr:"UT",vm:"1",name:"Lens Model",retired:""},"0x00160051":{keyword:"LensSerialNumber",vr:"UT",vm:"1",name:"Lens Serial Number",retired:""},"0x00160061":{keyword:"InteroperabilityIndex",vr:"CS",vm:"1",name:"Interoperability Index",retired:""},"0x00160062":{keyword:"InteroperabilityVersion",vr:"OB",vm:"1",name:"Interoperability Version",retired:""},"0x00160070":{keyword:"GPSVersionID",vr:"OB",vm:"1",name:"GPS Version ID",retired:""},"0x00160071":{keyword:"GPSLatitudeRef",vr:"CS",vm:"1",name:"GPS Latitude Ref",retired:""},"0x00160072":{keyword:"GPSLatitude",vr:"DS",vm:"3",name:"GPS Latitude",retired:""},"0x00160073":{keyword:"GPSLongitudeRef",vr:"CS",vm:"1",name:"GPS Longitude Ref",retired:""},"0x00160074":{keyword:"GPSLongitude",vr:"DS",vm:"3",name:"GPS Longitude",retired:""},"0x00160075":{keyword:"GPSAltitudeRef",vr:"US",vm:"1",name:"GPS Altitude Ref",retired:""},"0x00160076":{keyword:"GPSAltitude",vr:"DS",vm:"1",name:"GPS Altitude",retired:""},"0x00160077":{keyword:"GPSTimeStamp",vr:"DT",vm:"1",name:"GPS Time Stamp",retired:""},"0x00160078":{keyword:"GPSSatellites",vr:"UT",vm:"1",name:"GPS Satellites",retired:""},"0x00160079":{keyword:"GPSStatus",vr:"CS",vm:"1",name:"GPS Status",retired:""},"0x0016007A":{keyword:"GPSMeasureMode",vr:"CS",vm:"1",name:"GPS Measure Mode",retired:""},"0x0016007B":{keyword:"GPSDOP",vr:"DS",vm:"1",name:"GPS DOP",retired:""},"0x0016007C":{keyword:"GPSSpeedRef",vr:"CS",vm:"1",name:"GPS Speed Ref",retired:""},"0x0016007D":{keyword:"GPSSpeed",vr:"DS",vm:"1",name:"GPS Speed",retired:""},"0x0016007E":{keyword:"GPSTrackRef",vr:"CS",vm:"1",name:"GPS Track Ref",retired:""},"0x0016007F":{keyword:"GPSTrack",vr:"DS",vm:"1",name:"GPS Track",retired:""},"0x00160080":{keyword:"GPSImgDirectionRef",vr:"CS",vm:"1",name:"GPS Img Direction Ref",retired:""},"0x00160081":{keyword:"GPSImgDirection",vr:"DS",vm:"1",name:"GPS Img Direction",retired:""},"0x00160082":{keyword:"GPSMapDatum",vr:"UT",vm:"1",name:"GPS Map Datum",retired:""},"0x00160083":{keyword:"GPSDestLatitudeRef",vr:"CS",vm:"1",name:"GPS Dest Latitude Ref",retired:""},"0x00160084":{keyword:"GPSDestLatitude",vr:"DS",vm:"3",name:"GPS Dest Latitude",retired:""},"0x00160085":{keyword:"GPSDestLongitudeRef",vr:"CS",vm:"1",name:"GPS Dest Longitude Ref",retired:""},"0x00160086":{keyword:"GPSDestLongitude",vr:"DS",vm:"3",name:"GPS Dest Longitude",retired:""},"0x00160087":{keyword:"GPSDestBearingRef",vr:"CS",vm:"1",name:"GPS Dest Bearing Ref",retired:""},"0x00160088":{keyword:"GPSDestBearing",vr:"DS",vm:"1",name:"GPS Dest Bearing",retired:""},"0x00160089":{keyword:"GPSDestDistanceRef",vr:"CS",vm:"1",name:"GPS Dest Distance Ref",retired:""},"0x0016008A":{keyword:"GPSDestDistance",vr:"DS",vm:"1",name:"GPS Dest Distance",retired:""},"0x0016008B":{keyword:"GPSProcessingMethod",vr:"OB",vm:"1",name:"GPS Processing Method",retired:""},"0x0016008C":{keyword:"GPSAreaInformation",vr:"OB",vm:"1",name:"GPS Area Information",retired:""},"0x0016008D":{keyword:"GPSDateStamp",vr:"DT",vm:"1",name:"GPS Date Stamp",retired:""},"0x0016008E":{keyword:"GPSDifferential",vr:"IS",vm:"1",name:"GPS Differential",retired:""},"0x00161001":{keyword:"LightSourcePolarization",vr:"CS",vm:"1",name:"Light Source Polarization",retired:""},"0x00161002":{keyword:"EmitterColorTemperature",vr:"DS",vm:"1",name:"Emitter Color Temperature",retired:""},"0x00161003":{keyword:"ContactMethod",vr:"CS",vm:"1",name:"Contact Method",retired:""},"0x00161004":{keyword:"ImmersionMedia",vr:"CS",vm:"1-n",name:"Immersion Media",retired:""},"0x00161005":{keyword:"OpticalMagnificationFactor",vr:"DS",vm:"1",name:"Optical Magnification Factor",retired:""},"0x00180010":{keyword:"ContrastBolusAgent",vr:"LO",vm:"1",name:"Contrast/Bolus Agent",retired:""},"0x00180012":{keyword:"ContrastBolusAgentSequence",vr:"SQ",vm:"1",name:"Contrast/Bolus Agent Sequence",retired:""},"0x00180013":{keyword:"ContrastBolusT1Relaxivity",vr:"FL",vm:"1",name:"Contrast/Bolus T1 Relaxivity",retired:""},"0x00180014":{keyword:"ContrastBolusAdministrationRouteSequence",vr:"SQ",vm:"1",name:"Contrast/Bolus Administration Route Sequence",retired:""},"0x00180015":{keyword:"BodyPartExamined",vr:"CS",vm:"1",name:"Body Part Examined",retired:""},"0x00180020":{keyword:"ScanningSequence",vr:"CS",vm:"1-n",name:"Scanning Sequence",retired:""},"0x00180021":{keyword:"SequenceVariant",vr:"CS",vm:"1-n",name:"Sequence Variant",retired:""},"0x00180022":{keyword:"ScanOptions",vr:"CS",vm:"1-n",name:"Scan Options",retired:""},"0x00180023":{keyword:"MRAcquisitionType",vr:"CS",vm:"1",name:"MR Acquisition Type",retired:""},"0x00180024":{keyword:"SequenceName",vr:"SH",vm:"1",name:"Sequence Name",retired:""},"0x00180025":{keyword:"AngioFlag",vr:"CS",vm:"1",name:"Angio Flag",retired:""},"0x00180026":{keyword:"InterventionDrugInformationSequence",vr:"SQ",vm:"1",name:"Intervention Drug Information Sequence",retired:""},"0x00180027":{keyword:"InterventionDrugStopTime",vr:"TM",vm:"1",name:"Intervention Drug Stop Time",retired:""},"0x00180028":{keyword:"InterventionDrugDose",vr:"DS",vm:"1",name:"Intervention Drug Dose",retired:""},"0x00180029":{keyword:"InterventionDrugCodeSequence",vr:"SQ",vm:"1",name:"Intervention Drug Code Sequence",retired:""},"0x0018002A":{keyword:"AdditionalDrugSequence",vr:"SQ",vm:"1",name:"Additional Drug Sequence",retired:""},"0x00180030":{keyword:"Radionuclide",vr:"LO",vm:"1-n",name:"Radionuclide",retired:"Retired"},"0x00180031":{keyword:"Radiopharmaceutical",vr:"LO",vm:"1",name:"Radiopharmaceutical",retired:""},"0x00180032":{keyword:"EnergyWindowCenterline",vr:"DS",vm:"1",name:"Energy Window Centerline",retired:"Retired"},"0x00180033":{keyword:"EnergyWindowTotalWidth",vr:"DS",vm:"1-n",name:"Energy Window Total Width",retired:"Retired"},"0x00180034":{keyword:"InterventionDrugName",vr:"LO",vm:"1",name:"Intervention Drug Name",retired:""},"0x00180035":{keyword:"InterventionDrugStartTime",vr:"TM",vm:"1",name:"Intervention Drug Start Time",retired:""},"0x00180036":{keyword:"InterventionSequence",vr:"SQ",vm:"1",name:"Intervention Sequence",retired:""},"0x00180037":{keyword:"TherapyType",vr:"CS",vm:"1",name:"Therapy Type",retired:"Retired"},"0x00180038":{keyword:"InterventionStatus",vr:"CS",vm:"1",name:"Intervention Status",retired:""},"0x00180039":{keyword:"TherapyDescription",vr:"CS",vm:"1",name:"Therapy Description",retired:"Retired"},"0x0018003A":{keyword:"InterventionDescription",vr:"ST",vm:"1",name:"Intervention Description",retired:""},"0x00180040":{keyword:"CineRate",vr:"IS",vm:"1",name:"Cine Rate",retired:""},"0x00180042":{keyword:"InitialCineRunState",vr:"CS",vm:"1",name:"Initial Cine Run State",retired:""},"0x00180050":{keyword:"SliceThickness",vr:"DS",vm:"1",name:"Slice Thickness",retired:""},"0x00180060":{keyword:"KVP",vr:"DS",vm:"1",name:"KVP",retired:""},"0x00180061":{keyword:"",vr:"DS",vm:"1",name:"",retired:"Retired"},"0x00180070":{keyword:"CountsAccumulated",vr:"IS",vm:"1",name:"Counts Accumulated",retired:""},"0x00180071":{keyword:"AcquisitionTerminationCondition",vr:"CS",vm:"1",name:"Acquisition Termination Condition",retired:""},"0x00180072":{keyword:"EffectiveDuration",vr:"DS",vm:"1",name:"Effective Duration",retired:""},"0x00180073":{keyword:"AcquisitionStartCondition",vr:"CS",vm:"1",name:"Acquisition Start Condition",retired:""},"0x00180074":{keyword:"AcquisitionStartConditionData",vr:"IS",vm:"1",name:"Acquisition Start Condition Data",retired:""},"0x00180075":{keyword:"AcquisitionTerminationConditionData",vr:"IS",vm:"1",name:"Acquisition Termination Condition Data",retired:""},"0x00180080":{keyword:"RepetitionTime",vr:"DS",vm:"1",name:"Repetition Time",retired:""},"0x00180081":{keyword:"EchoTime",vr:"DS",vm:"1",name:"Echo Time",retired:""},"0x00180082":{keyword:"InversionTime",vr:"DS",vm:"1",name:"Inversion Time",retired:""},"0x00180083":{keyword:"NumberOfAverages",vr:"DS",vm:"1",name:"Number of Averages",retired:""},"0x00180084":{keyword:"ImagingFrequency",vr:"DS",vm:"1",name:"Imaging Frequency",retired:""},"0x00180085":{keyword:"ImagedNucleus",vr:"SH",vm:"1",name:"Imaged Nucleus",retired:""},"0x00180086":{keyword:"EchoNumbers",vr:"IS",vm:"1-n",name:"Echo Number(s)",retired:""},"0x00180087":{keyword:"MagneticFieldStrength",vr:"DS",vm:"1",name:"Magnetic Field Strength",retired:""},"0x00180088":{keyword:"SpacingBetweenSlices",vr:"DS",vm:"1",name:"Spacing Between Slices",retired:""},"0x00180089":{keyword:"NumberOfPhaseEncodingSteps",vr:"IS",vm:"1",name:"Number of Phase Encoding Steps",retired:""},"0x00180090":{keyword:"DataCollectionDiameter",vr:"DS",vm:"1",name:"Data Collection Diameter",retired:""},"0x00180091":{keyword:"EchoTrainLength",vr:"IS",vm:"1",name:"Echo Train Length",retired:""},"0x00180093":{keyword:"PercentSampling",vr:"DS",vm:"1",name:"Percent Sampling",retired:""},"0x00180094":{keyword:"PercentPhaseFieldOfView",vr:"DS",vm:"1",name:"Percent Phase Field of View",retired:""},"0x00180095":{keyword:"PixelBandwidth",vr:"DS",vm:"1",name:"Pixel Bandwidth",retired:""},"0x00181000":{keyword:"DeviceSerialNumber",vr:"LO",vm:"1",name:"Device Serial Number",retired:""},"0x00181002":{keyword:"DeviceUID",vr:"UI",vm:"1",name:"Device UID",retired:""},"0x00181003":{keyword:"DeviceID",vr:"LO",vm:"1",name:"Device ID",retired:""},"0x00181004":{keyword:"PlateID",vr:"LO",vm:"1",name:"Plate ID",retired:""},"0x00181005":{keyword:"GeneratorID",vr:"LO",vm:"1",name:"Generator ID",retired:""},"0x00181006":{keyword:"GridID",vr:"LO",vm:"1",name:"Grid ID",retired:""},"0x00181007":{keyword:"CassetteID",vr:"LO",vm:"1",name:"Cassette ID",retired:""},"0x00181008":{keyword:"GantryID",vr:"LO",vm:"1",name:"Gantry ID",retired:""},"0x00181009":{keyword:"UniqueDeviceIdentifier",vr:"UT",vm:"1",name:"Unique Device Identifier",retired:""},"0x0018100A":{keyword:"UDISequence",vr:"SQ",vm:"1",name:"UDI Sequence",retired:""},"0x0018100B":{keyword:"ManufacturerDeviceClassUID",vr:"UI",vm:"1-n",name:"Manufacturer's Device Class UID",retired:""},"0x00181010":{keyword:"SecondaryCaptureDeviceID",vr:"LO",vm:"1",name:"Secondary Capture Device ID",retired:""},"0x00181011":{keyword:"HardcopyCreationDeviceID",vr:"LO",vm:"1",name:"Hardcopy Creation Device ID",retired:"Retired"},"0x00181012":{keyword:"DateOfSecondaryCapture",vr:"DA",vm:"1",name:"Date of Secondary Capture",retired:""},"0x00181014":{keyword:"TimeOfSecondaryCapture",vr:"TM",vm:"1",name:"Time of Secondary Capture",retired:""},"0x00181016":{keyword:"SecondaryCaptureDeviceManufacturer",vr:"LO",vm:"1",name:"Secondary Capture Device Manufacturer",retired:""},"0x00181017":{keyword:"HardcopyDeviceManufacturer",vr:"LO",vm:"1",name:"Hardcopy Device Manufacturer",retired:"Retired"},"0x00181018":{keyword:"SecondaryCaptureDeviceManufacturerModelName",vr:"LO",vm:"1",name:"Secondary Capture Device Manufacturer's Model Name",retired:""},"0x00181019":{keyword:"SecondaryCaptureDeviceSoftwareVersions",vr:"LO",vm:"1-n",name:"Secondary Capture Device Software Versions",retired:""},"0x0018101A":{keyword:"HardcopyDeviceSoftwareVersion",vr:"LO",vm:"1-n",name:"Hardcopy Device Software Version",retired:"Retired"},"0x0018101B":{keyword:"HardcopyDeviceManufacturerModelName",vr:"LO",vm:"1",name:"Hardcopy Device Manufacturer's Model Name",retired:"Retired"},"0x00181020":{keyword:"SoftwareVersions",vr:"LO",vm:"1-n",name:"Software Versions",retired:""},"0x00181022":{keyword:"VideoImageFormatAcquired",vr:"SH",vm:"1",name:"Video Image Format Acquired",retired:""},"0x00181023":{keyword:"DigitalImageFormatAcquired",vr:"LO",vm:"1",name:"Digital Image Format Acquired",retired:""},"0x00181030":{keyword:"ProtocolName",vr:"LO",vm:"1",name:"Protocol Name",retired:""},"0x00181040":{keyword:"ContrastBolusRoute",vr:"LO",vm:"1",name:"Contrast/Bolus Route",retired:""},"0x00181041":{keyword:"ContrastBolusVolume",vr:"DS",vm:"1",name:"Contrast/Bolus Volume",retired:""},"0x00181042":{keyword:"ContrastBolusStartTime",vr:"TM",vm:"1",name:"Contrast/Bolus Start Time",retired:""},"0x00181043":{keyword:"ContrastBolusStopTime",vr:"TM",vm:"1",name:"Contrast/Bolus Stop Time",retired:""},"0x00181044":{keyword:"ContrastBolusTotalDose",vr:"DS",vm:"1",name:"Contrast/Bolus Total Dose",retired:""},"0x00181045":{keyword:"SyringeCounts",vr:"IS",vm:"1",name:"Syringe Counts",retired:""},"0x00181046":{keyword:"ContrastFlowRate",vr:"DS",vm:"1-n",name:"Contrast Flow Rate",retired:""},"0x00181047":{keyword:"ContrastFlowDuration",vr:"DS",vm:"1-n",name:"Contrast Flow Duration",retired:""},"0x00181048":{keyword:"ContrastBolusIngredient",vr:"CS",vm:"1",name:"Contrast/Bolus Ingredient",retired:""},"0x00181049":{keyword:"ContrastBolusIngredientConcentration",vr:"DS",vm:"1",name:"Contrast/Bolus Ingredient Concentration",retired:""},"0x00181050":{keyword:"SpatialResolution",vr:"DS",vm:"1",name:"Spatial Resolution",retired:""},"0x00181060":{keyword:"TriggerTime",vr:"DS",vm:"1",name:"Trigger Time",retired:""},"0x00181061":{keyword:"TriggerSourceOrType",vr:"LO",vm:"1",name:"Trigger Source or Type",retired:""},"0x00181062":{keyword:"NominalInterval",vr:"IS",vm:"1",name:"Nominal Interval",retired:""},"0x00181063":{keyword:"FrameTime",vr:"DS",vm:"1",name:"Frame Time",retired:""},"0x00181064":{keyword:"CardiacFramingType",vr:"LO",vm:"1",name:"Cardiac Framing Type",retired:""},"0x00181065":{keyword:"FrameTimeVector",vr:"DS",vm:"1-n",name:"Frame Time Vector",retired:""},"0x00181066":{keyword:"FrameDelay",vr:"DS",vm:"1",name:"Frame Delay",retired:""},"0x00181067":{keyword:"ImageTriggerDelay",vr:"DS",vm:"1",name:"Image Trigger Delay",retired:""},"0x00181068":{keyword:"MultiplexGroupTimeOffset",vr:"DS",vm:"1",name:"Multiplex Group Time Offset",retired:""},"0x00181069":{keyword:"TriggerTimeOffset",vr:"DS",vm:"1",name:"Trigger Time Offset",retired:""},"0x0018106A":{keyword:"SynchronizationTrigger",vr:"CS",vm:"1",name:"Synchronization Trigger",retired:""},"0x0018106C":{keyword:"SynchronizationChannel",vr:"US",vm:"2",name:"Synchronization Channel",retired:""},"0x0018106E":{keyword:"TriggerSamplePosition",vr:"UL",vm:"1",name:"Trigger Sample Position",retired:""},"0x00181070":{keyword:"RadiopharmaceuticalRoute",vr:"LO",vm:"1",name:"Radiopharmaceutical Route",retired:""},"0x00181071":{keyword:"RadiopharmaceuticalVolume",vr:"DS",vm:"1",name:"Radiopharmaceutical Volume",retired:""},"0x00181072":{keyword:"RadiopharmaceuticalStartTime",vr:"TM",vm:"1",name:"Radiopharmaceutical Start Time",retired:""},"0x00181073":{keyword:"RadiopharmaceuticalStopTime",vr:"TM",vm:"1",name:"Radiopharmaceutical Stop Time",retired:""},"0x00181074":{keyword:"RadionuclideTotalDose",vr:"DS",vm:"1",name:"Radionuclide Total Dose",retired:""},"0x00181075":{keyword:"RadionuclideHalfLife",vr:"DS",vm:"1",name:"Radionuclide Half Life",retired:""},"0x00181076":{keyword:"RadionuclidePositronFraction",vr:"DS",vm:"1",name:"Radionuclide Positron Fraction",retired:""},"0x00181077":{keyword:"RadiopharmaceuticalSpecificActivity",vr:"DS",vm:"1",name:"Radiopharmaceutical Specific Activity",retired:""},"0x00181078":{keyword:"RadiopharmaceuticalStartDateTime",vr:"DT",vm:"1",name:"Radiopharmaceutical Start DateTime",retired:""},"0x00181079":{keyword:"RadiopharmaceuticalStopDateTime",vr:"DT",vm:"1",name:"Radiopharmaceutical Stop DateTime",retired:""},"0x00181080":{keyword:"BeatRejectionFlag",vr:"CS",vm:"1",name:"Beat Rejection Flag",retired:""},"0x00181081":{keyword:"LowRRValue",vr:"IS",vm:"1",name:"Low R-R Value",retired:""},"0x00181082":{keyword:"HighRRValue",vr:"IS",vm:"1",name:"High R-R Value",retired:""},"0x00181083":{keyword:"IntervalsAcquired",vr:"IS",vm:"1",name:"Intervals Acquired",retired:""},"0x00181084":{keyword:"IntervalsRejected",vr:"IS",vm:"1",name:"Intervals Rejected",retired:""},"0x00181085":{keyword:"PVCRejection",vr:"LO",vm:"1",name:"PVC Rejection",retired:""},"0x00181086":{keyword:"SkipBeats",vr:"IS",vm:"1",name:"Skip Beats",retired:""},"0x00181088":{keyword:"HeartRate",vr:"IS",vm:"1",name:"Heart Rate",retired:""},"0x00181090":{keyword:"CardiacNumberOfImages",vr:"IS",vm:"1",name:"Cardiac Number of Images",retired:""},"0x00181094":{keyword:"TriggerWindow",vr:"IS",vm:"1",name:"Trigger Window",retired:""},"0x00181100":{keyword:"ReconstructionDiameter",vr:"DS",vm:"1",name:"Reconstruction Diameter",retired:""},"0x00181110":{keyword:"DistanceSourceToDetector",vr:"DS",vm:"1",name:"Distance Source to Detector",retired:""},"0x00181111":{keyword:"DistanceSourceToPatient",vr:"DS",vm:"1",name:"Distance Source to Patient",retired:""},"0x00181114":{keyword:"EstimatedRadiographicMagnificationFactor",vr:"DS",vm:"1",name:"Estimated Radiographic Magnification Factor",retired:""},"0x00181120":{keyword:"GantryDetectorTilt",vr:"DS",vm:"1",name:"Gantry/Detector Tilt",retired:""},"0x00181121":{keyword:"GantryDetectorSlew",vr:"DS",vm:"1",name:"Gantry/Detector Slew",retired:""},"0x00181130":{keyword:"TableHeight",vr:"DS",vm:"1",name:"Table Height",retired:""},"0x00181131":{keyword:"TableTraverse",vr:"DS",vm:"1",name:"Table Traverse",retired:""},"0x00181134":{keyword:"TableMotion",vr:"CS",vm:"1",name:"Table Motion",retired:""},"0x00181135":{keyword:"TableVerticalIncrement",vr:"DS",vm:"1-n",name:"Table Vertical Increment",retired:""},"0x00181136":{keyword:"TableLateralIncrement",vr:"DS",vm:"1-n",name:"Table Lateral Increment",retired:""},"0x00181137":{keyword:"TableLongitudinalIncrement",vr:"DS",vm:"1-n",name:"Table Longitudinal Increment",retired:""},"0x00181138":{keyword:"TableAngle",vr:"DS",vm:"1",name:"Table Angle",retired:""},"0x0018113A":{keyword:"TableType",vr:"CS",vm:"1",name:"Table Type",retired:""},"0x00181140":{keyword:"RotationDirection",vr:"CS",vm:"1",name:"Rotation Direction",retired:""},"0x00181141":{keyword:"AngularPosition",vr:"DS",vm:"1",name:"Angular Position",retired:"Retired"},"0x00181142":{keyword:"RadialPosition",vr:"DS",vm:"1-n",name:"Radial Position",retired:""},"0x00181143":{keyword:"ScanArc",vr:"DS",vm:"1",name:"Scan Arc",retired:""},"0x00181144":{keyword:"AngularStep",vr:"DS",vm:"1",name:"Angular Step",retired:""},"0x00181145":{keyword:"CenterOfRotationOffset",vr:"DS",vm:"1",name:"Center of Rotation Offset",retired:""},"0x00181146":{keyword:"RotationOffset",vr:"DS",vm:"1-n",name:"Rotation Offset",retired:"Retired"},"0x00181147":{keyword:"FieldOfViewShape",vr:"CS",vm:"1",name:"Field of View Shape",retired:""},"0x00181149":{keyword:"FieldOfViewDimensions",vr:"IS",vm:"1-2",name:"Field of View Dimension(s)",retired:""},"0x00181150":{keyword:"ExposureTime",vr:"IS",vm:"1",name:"Exposure Time",retired:""},"0x00181151":{keyword:"XRayTubeCurrent",vr:"IS",vm:"1",name:"X-Ray Tube Current",retired:""},"0x00181152":{keyword:"Exposure",vr:"IS",vm:"1",name:"Exposure",retired:""},"0x00181153":{keyword:"ExposureInuAs",vr:"IS",vm:"1",name:"Exposure in uAs",retired:""},"0x00181154":{keyword:"AveragePulseWidth",vr:"DS",vm:"1",name:"Average Pulse Width",retired:""},"0x00181155":{keyword:"RadiationSetting",vr:"CS",vm:"1",name:"Radiation Setting",retired:""},"0x00181156":{keyword:"RectificationType",vr:"CS",vm:"1",name:"Rectification Type",retired:""},"0x0018115A":{keyword:"RadiationMode",vr:"CS",vm:"1",name:"Radiation Mode",retired:""},"0x0018115E":{keyword:"ImageAndFluoroscopyAreaDoseProduct",vr:"DS",vm:"1",name:"Image and Fluoroscopy Area Dose Product",retired:""},"0x00181160":{keyword:"FilterType",vr:"SH",vm:"1",name:"Filter Type",retired:""},"0x00181161":{keyword:"TypeOfFilters",vr:"LO",vm:"1-n",name:"Type of Filters",retired:""},"0x00181162":{keyword:"IntensifierSize",vr:"DS",vm:"1",name:"Intensifier Size",retired:""},"0x00181164":{keyword:"ImagerPixelSpacing",vr:"DS",vm:"2",name:"Imager Pixel Spacing",retired:""},"0x00181166":{keyword:"Grid",vr:"CS",vm:"1-n",name:"Grid",retired:""},"0x00181170":{keyword:"GeneratorPower",vr:"IS",vm:"1",name:"Generator Power",retired:""},"0x00181180":{keyword:"CollimatorGridName",vr:"SH",vm:"1",name:"Collimator/grid Name",retired:""},"0x00181181":{keyword:"CollimatorType",vr:"CS",vm:"1",name:"Collimator Type",retired:""},"0x00181182":{keyword:"FocalDistance",vr:"IS",vm:"1-2",name:"Focal Distance",retired:""},"0x00181183":{keyword:"XFocusCenter",vr:"DS",vm:"1-2",name:"X Focus Center",retired:""},"0x00181184":{keyword:"YFocusCenter",vr:"DS",vm:"1-2",name:"Y Focus Center",retired:""},"0x00181190":{keyword:"FocalSpots",vr:"DS",vm:"1-n",name:"Focal Spot(s)",retired:""},"0x00181191":{keyword:"AnodeTargetMaterial",vr:"CS",vm:"1",name:"Anode Target Material",retired:""},"0x001811A0":{keyword:"BodyPartThickness",vr:"DS",vm:"1",name:"Body Part Thickness",retired:""},"0x001811A2":{keyword:"CompressionForce",vr:"DS",vm:"1",name:"Compression Force",retired:""},"0x001811A3":{keyword:"CompressionPressure",vr:"DS",vm:"1",name:"Compression Pressure",retired:""},"0x001811A4":{keyword:"PaddleDescription",vr:"LO",vm:"1",name:"Paddle Description",retired:""},"0x001811A5":{keyword:"CompressionContactArea",vr:"DS",vm:"1",name:"Compression Contact Area",retired:""},"0x001811B0":{keyword:"AcquisitionMode",vr:"LO",vm:"1",name:"Acquisition Mode",retired:""},"0x001811B1":{keyword:"DoseModeName",vr:"LO",vm:"1",name:"Dose Mode Name",retired:""},"0x001811B2":{keyword:"AcquiredSubtractionMaskFlag",vr:"CS",vm:"1",name:"Acquired Subtraction Mask Flag",retired:""},"0x001811B3":{keyword:"FluoroscopyPersistenceFlag",vr:"CS",vm:"1",name:"Fluoroscopy Persistence Flag",retired:""},"0x001811B4":{keyword:"FluoroscopyLastImageHoldPersistenceFlag",vr:"CS",vm:"1",name:"Fluoroscopy Last Image Hold Persistence Flag",retired:""},"0x001811B5":{keyword:"UpperLimitNumberOfPersistentFluoroscopyFrames",vr:"IS",vm:"1",name:"Upper Limit Number Of Persistent Fluoroscopy Frames",retired:""},"0x001811B6":{keyword:"ContrastBolusAutoInjectionTriggerFlag",vr:"CS",vm:"1",name:"Contrast/Bolus Auto Injection Trigger Flag",retired:""},"0x001811B7":{keyword:"ContrastBolusInjectionDelay",vr:"FD",vm:"1",name:"Contrast/Bolus Injection Delay",retired:""},"0x001811B8":{keyword:"XAAcquisitionPhaseDetailsSequence",vr:"SQ",vm:"1",name:"XA Acquisition Phase Details Sequence",retired:""},"0x001811B9":{keyword:"XAAcquisitionFrameRate",vr:"FD",vm:"1",name:"XA Acquisition Frame Rate",retired:""},"0x001811BA":{keyword:"XAPlaneDetailsSequence",vr:"SQ",vm:"1",name:"XA Plane Details Sequence",retired:""},"0x001811BB":{keyword:"AcquisitionFieldOfViewLabel",vr:"LO",vm:"1",name:"Acquisition Field of View Label",retired:""},"0x001811BC":{keyword:"XRayFilterDetailsSequence",vr:"SQ",vm:"1",name:"X-Ray Filter Details Sequence",retired:""},"0x001811BD":{keyword:"XAAcquisitionDuration",vr:"FD",vm:"1",name:"XA Acquisition Duration",retired:""},"0x001811BE":{keyword:"ReconstructionPipelineType",vr:"CS",vm:"1",name:"Reconstruction Pipeline Type",retired:""},"0x001811BF":{keyword:"ImageFilterDetailsSequence",vr:"SQ",vm:"1",name:"Image Filter Details Sequence",retired:""},"0x001811C0":{keyword:"AppliedMaskSubtractionFlag",vr:"CS",vm:"1",name:"Applied Mask Subtraction Flag",retired:""},"0x001811C1":{keyword:"RequestedSeriesDescriptionCodeSequence",vr:"SQ",vm:"1",name:"Requested Series Description Code Sequence",retired:""},"0x00181200":{keyword:"DateOfLastCalibration",vr:"DA",vm:"1-n",name:"Date of Last Calibration",retired:""},"0x00181201":{keyword:"TimeOfLastCalibration",vr:"TM",vm:"1-n",name:"Time of Last Calibration",retired:""},"0x00181202":{keyword:"DateTimeOfLastCalibration",vr:"DT",vm:"1",name:"DateTime of Last Calibration",retired:""},"0x00181203":{keyword:"CalibrationDateTime",vr:"DT",vm:"1",name:"Calibration DateTime",retired:""},"0x00181204":{keyword:"DateOfManufacture",vr:"DA",vm:"1",name:"Date of Manufacture",retired:""},"0x00181205":{keyword:"DateOfInstallation",vr:"DA",vm:"1",name:"Date of Installation",retired:""},"0x00181210":{keyword:"ConvolutionKernel",vr:"SH",vm:"1-n",name:"Convolution Kernel",retired:""},"0x00181240":{keyword:"UpperLowerPixelValues",vr:"IS",vm:"1-n",name:"Upper/Lower Pixel Values",retired:"Retired"},"0x00181242":{keyword:"ActualFrameDuration",vr:"IS",vm:"1",name:"Actual Frame Duration",retired:""},"0x00181243":{keyword:"CountRate",vr:"IS",vm:"1",name:"Count Rate",retired:""},"0x00181244":{keyword:"PreferredPlaybackSequencing",vr:"US",vm:"1",name:"Preferred Playback Sequencing",retired:""},"0x00181250":{keyword:"ReceiveCoilName",vr:"SH",vm:"1",name:"Receive Coil Name",retired:""},"0x00181251":{keyword:"TransmitCoilName",vr:"SH",vm:"1",name:"Transmit Coil Name",retired:""},"0x00181260":{keyword:"PlateType",vr:"SH",vm:"1",name:"Plate Type",retired:""},"0x00181261":{keyword:"PhosphorType",vr:"LO",vm:"1",name:"Phosphor Type",retired:""},"0x00181271":{keyword:"WaterEquivalentDiameter",vr:"FD",vm:"1",name:"Water Equivalent Diameter",retired:""},"0x00181272":{keyword:"WaterEquivalentDiameterCalculationMethodCodeSequence",vr:"SQ",vm:"1",name:"Water Equivalent Diameter Calculation Method Code Sequence",retired:""},"0x00181300":{keyword:"ScanVelocity",vr:"DS",vm:"1",name:"Scan Velocity",retired:""},"0x00181301":{keyword:"WholeBodyTechnique",vr:"CS",vm:"1-n",name:"Whole Body Technique",retired:""},"0x00181302":{keyword:"ScanLength",vr:"IS",vm:"1",name:"Scan Length",retired:""},"0x00181310":{keyword:"AcquisitionMatrix",vr:"US",vm:"4",name:"Acquisition Matrix",retired:""},"0x00181312":{keyword:"InPlanePhaseEncodingDirection",vr:"CS",vm:"1",name:"In-plane Phase Encoding Direction",retired:""},"0x00181314":{keyword:"FlipAngle",vr:"DS",vm:"1",name:"Flip Angle",retired:""},"0x00181315":{keyword:"VariableFlipAngleFlag",vr:"CS",vm:"1",name:"Variable Flip Angle Flag",retired:""},"0x00181316":{keyword:"SAR",vr:"DS",vm:"1",name:"SAR",retired:""},"0x00181318":{keyword:"dBdt",vr:"DS",vm:"1",name:"dB/dt",retired:""},"0x00181320":{keyword:"B1rms",vr:"FL",vm:"1",name:"B1rms",retired:""},"0x00181400":{keyword:"AcquisitionDeviceProcessingDescription",vr:"LO",vm:"1",name:"Acquisition Device Processing Description",retired:""},"0x00181401":{keyword:"AcquisitionDeviceProcessingCode",vr:"LO",vm:"1",name:"Acquisition Device Processing Code",retired:""},"0x00181402":{keyword:"CassetteOrientation",vr:"CS",vm:"1",name:"Cassette Orientation",retired:""},"0x00181403":{keyword:"CassetteSize",vr:"CS",vm:"1",name:"Cassette Size",retired:""},"0x00181404":{keyword:"ExposuresOnPlate",vr:"US",vm:"1",name:"Exposures on Plate",retired:""},"0x00181405":{keyword:"RelativeXRayExposure",vr:"IS",vm:"1",name:"Relative X-Ray Exposure",retired:""},"0x00181411":{keyword:"ExposureIndex",vr:"DS",vm:"1",name:"Exposure Index",retired:""},"0x00181412":{keyword:"TargetExposureIndex",vr:"DS",vm:"1",name:"Target Exposure Index",retired:""},"0x00181413":{keyword:"DeviationIndex",vr:"DS",vm:"1",name:"Deviation Index",retired:""},"0x00181450":{keyword:"ColumnAngulation",vr:"DS",vm:"1",name:"Column Angulation",retired:""},"0x00181460":{keyword:"TomoLayerHeight",vr:"DS",vm:"1",name:"Tomo Layer Height",retired:""},"0x00181470":{keyword:"TomoAngle",vr:"DS",vm:"1",name:"Tomo Angle",retired:""},"0x00181480":{keyword:"TomoTime",vr:"DS",vm:"1",name:"Tomo Time",retired:""},"0x00181490":{keyword:"TomoType",vr:"CS",vm:"1",name:"Tomo Type",retired:""},"0x00181491":{keyword:"TomoClass",vr:"CS",vm:"1",name:"Tomo Class",retired:""},"0x00181495":{keyword:"NumberOfTomosynthesisSourceImages",vr:"IS",vm:"1",name:"Number of Tomosynthesis Source Images",retired:""},"0x00181500":{keyword:"PositionerMotion",vr:"CS",vm:"1",name:"Positioner Motion",retired:""},"0x00181508":{keyword:"PositionerType",vr:"CS",vm:"1",name:"Positioner Type",retired:""},"0x00181510":{keyword:"PositionerPrimaryAngle",vr:"DS",vm:"1",name:"Positioner Primary Angle",retired:""},"0x00181511":{keyword:"PositionerSecondaryAngle",vr:"DS",vm:"1",name:"Positioner Secondary Angle",retired:""},"0x00181520":{keyword:"PositionerPrimaryAngleIncrement",vr:"DS",vm:"1-n",name:"Positioner Primary Angle Increment",retired:""},"0x00181521":{keyword:"PositionerSecondaryAngleIncrement",vr:"DS",vm:"1-n",name:"Positioner Secondary Angle Increment",retired:""},"0x00181530":{keyword:"DetectorPrimaryAngle",vr:"DS",vm:"1",name:"Detector Primary Angle",retired:""},"0x00181531":{keyword:"DetectorSecondaryAngle",vr:"DS",vm:"1",name:"Detector Secondary Angle",retired:""},"0x00181600":{keyword:"ShutterShape",vr:"CS",vm:"1-3",name:"Shutter Shape",retired:""},"0x00181602":{keyword:"ShutterLeftVerticalEdge",vr:"IS",vm:"1",name:"Shutter Left Vertical Edge",retired:""},"0x00181604":{keyword:"ShutterRightVerticalEdge",vr:"IS",vm:"1",name:"Shutter Right Vertical Edge",retired:""},"0x00181606":{keyword:"ShutterUpperHorizontalEdge",vr:"IS",vm:"1",name:"Shutter Upper Horizontal Edge",retired:""},"0x00181608":{keyword:"ShutterLowerHorizontalEdge",vr:"IS",vm:"1",name:"Shutter Lower Horizontal Edge",retired:""},"0x00181610":{keyword:"CenterOfCircularShutter",vr:"IS",vm:"2",name:"Center of Circular Shutter",retired:""},"0x00181612":{keyword:"RadiusOfCircularShutter",vr:"IS",vm:"1",name:"Radius of Circular Shutter",retired:""},"0x00181620":{keyword:"VerticesOfThePolygonalShutter",vr:"IS",vm:"2-2n",name:"Vertices of the Polygonal Shutter",retired:""},"0x00181622":{keyword:"ShutterPresentationValue",vr:"US",vm:"1",name:"Shutter Presentation Value",retired:""},"0x00181623":{keyword:"ShutterOverlayGroup",vr:"US",vm:"1",name:"Shutter Overlay Group",retired:""},"0x00181624":{keyword:"ShutterPresentationColorCIELabValue",vr:"US",vm:"3",name:"Shutter Presentation Color CIELab Value",retired:""},"0x00181630":{keyword:"OutlineShapeType",vr:"CS",vm:"1",name:"Outline Shape Type",retired:""},"0x00181631":{keyword:"OutlineLeftVerticalEdge",vr:"FD",vm:"1",name:"Outline Left Vertical Edge",retired:""},"0x00181632":{keyword:"OutlineRightVerticalEdge",vr:"FD",vm:"1",name:"Outline Right Vertical Edge",retired:""},"0x00181633":{keyword:"OutlineUpperHorizontalEdge",vr:"FD",vm:"1",name:"Outline Upper Horizontal Edge",retired:""},"0x00181634":{keyword:"OutlineLowerHorizontalEdge",vr:"FD",vm:"1",name:"Outline Lower Horizontal Edge",retired:""},"0x00181635":{keyword:"CenterOfCircularOutline",vr:"FD",vm:"2",name:"Center of Circular Outline",retired:""},"0x00181636":{keyword:"DiameterOfCircularOutline",vr:"FD",vm:"1",name:"Diameter of Circular Outline",retired:""},"0x00181637":{keyword:"NumberOfPolygonalVertices",vr:"UL",vm:"1",name:"Number of Polygonal Vertices",retired:""},"0x00181638":{keyword:"VerticesOfThePolygonalOutline",vr:"OF",vm:"1",name:"Vertices of the Polygonal Outline",retired:""},"0x00181700":{keyword:"CollimatorShape",vr:"CS",vm:"1-3",name:"Collimator Shape",retired:""},"0x00181702":{keyword:"CollimatorLeftVerticalEdge",vr:"IS",vm:"1",name:"Collimator Left Vertical Edge",retired:""},"0x00181704":{keyword:"CollimatorRightVerticalEdge",vr:"IS",vm:"1",name:"Collimator Right Vertical Edge",retired:""},"0x00181706":{keyword:"CollimatorUpperHorizontalEdge",vr:"IS",vm:"1",name:"Collimator Upper Horizontal Edge",retired:""},"0x00181708":{keyword:"CollimatorLowerHorizontalEdge",vr:"IS",vm:"1",name:"Collimator Lower Horizontal Edge",retired:""},"0x00181710":{keyword:"CenterOfCircularCollimator",vr:"IS",vm:"2",name:"Center of Circular Collimator",retired:""},"0x00181712":{keyword:"RadiusOfCircularCollimator",vr:"IS",vm:"1",name:"Radius of Circular Collimator",retired:""},"0x00181720":{keyword:"VerticesOfThePolygonalCollimator",vr:"IS",vm:"2-2n",name:"Vertices of the Polygonal Collimator",retired:""},"0x00181800":{keyword:"AcquisitionTimeSynchronized",vr:"CS",vm:"1",name:"Acquisition Time Synchronized",retired:""},"0x00181801":{keyword:"TimeSource",vr:"SH",vm:"1",name:"Time Source",retired:""},"0x00181802":{keyword:"TimeDistributionProtocol",vr:"CS",vm:"1",name:"Time Distribution Protocol",retired:""},"0x00181803":{keyword:"NTPSourceAddress",vr:"LO",vm:"1",name:"NTP Source Address",retired:""},"0x00182001":{keyword:"PageNumberVector",vr:"IS",vm:"1-n",name:"Page Number Vector",retired:""},"0x00182002":{keyword:"FrameLabelVector",vr:"SH",vm:"1-n",name:"Frame Label Vector",retired:""},"0x00182003":{keyword:"FramePrimaryAngleVector",vr:"DS",vm:"1-n",name:"Frame Primary Angle Vector",retired:""},"0x00182004":{keyword:"FrameSecondaryAngleVector",vr:"DS",vm:"1-n",name:"Frame Secondary Angle Vector",retired:""},"0x00182005":{keyword:"SliceLocationVector",vr:"DS",vm:"1-n",name:"Slice Location Vector",retired:""},"0x00182006":{keyword:"DisplayWindowLabelVector",vr:"SH",vm:"1-n",name:"Display Window Label Vector",retired:""},"0x00182010":{keyword:"NominalScannedPixelSpacing",vr:"DS",vm:"2",name:"Nominal Scanned Pixel Spacing",retired:""},"0x00182020":{keyword:"DigitizingDeviceTransportDirection",vr:"CS",vm:"1",name:"Digitizing Device Transport Direction",retired:""},"0x00182030":{keyword:"RotationOfScannedFilm",vr:"DS",vm:"1",name:"Rotation of Scanned Film",retired:""},"0x00182041":{keyword:"BiopsyTargetSequence",vr:"SQ",vm:"1",name:"Biopsy Target Sequence",retired:""},"0x00182042":{keyword:"TargetUID",vr:"UI",vm:"1",name:"Target UID",retired:""},"0x00182043":{keyword:"LocalizingCursorPosition",vr:"FL",vm:"2",name:"Localizing Cursor Position",retired:""},"0x00182044":{keyword:"CalculatedTargetPosition",vr:"FL",vm:"3",name:"Calculated Target Position",retired:""},"0x00182045":{keyword:"TargetLabel",vr:"SH",vm:"1",name:"Target Label",retired:""},"0x00182046":{keyword:"DisplayedZValue",vr:"FL",vm:"1",name:"Displayed Z Value",retired:""},"0x00183100":{keyword:"IVUSAcquisition",vr:"CS",vm:"1",name:"IVUS Acquisition",retired:""},"0x00183101":{keyword:"IVUSPullbackRate",vr:"DS",vm:"1",name:"IVUS Pullback Rate",retired:""},"0x00183102":{keyword:"IVUSGatedRate",vr:"DS",vm:"1",name:"IVUS Gated Rate",retired:""},"0x00183103":{keyword:"IVUSPullbackStartFrameNumber",vr:"IS",vm:"1",name:"IVUS Pullback Start Frame Number",retired:""},"0x00183104":{keyword:"IVUSPullbackStopFrameNumber",vr:"IS",vm:"1",name:"IVUS Pullback Stop Frame Number",retired:""},"0x00183105":{keyword:"LesionNumber",vr:"IS",vm:"1-n",name:"Lesion Number",retired:""},"0x00184000":{keyword:"AcquisitionComments",vr:"LT",vm:"1",name:"Acquisition Comments",retired:"Retired"},"0x00185000":{keyword:"OutputPower",vr:"SH",vm:"1-n",name:"Output Power",retired:""},"0x00185010":{keyword:"TransducerData",vr:"LO",vm:"1-n",name:"Transducer Data",retired:""},"0x00185011":{keyword:"TransducerIdentificationSequence",vr:"SQ",vm:"1",name:"Transducer Identification Sequence",retired:""},"0x00185012":{keyword:"FocusDepth",vr:"DS",vm:"1",name:"Focus Depth",retired:""},"0x00185020":{keyword:"ProcessingFunction",vr:"LO",vm:"1",name:"Processing Function",retired:""},"0x00185021":{keyword:"PostprocessingFunction",vr:"LO",vm:"1",name:"Postprocessing Function",retired:"Retired"},"0x00185022":{keyword:"MechanicalIndex",vr:"DS",vm:"1",name:"Mechanical Index",retired:""},"0x00185024":{keyword:"BoneThermalIndex",vr:"DS",vm:"1",name:"Bone Thermal Index",retired:""},"0x00185026":{keyword:"CranialThermalIndex",vr:"DS",vm:"1",name:"Cranial Thermal Index",retired:""},"0x00185027":{keyword:"SoftTissueThermalIndex",vr:"DS",vm:"1",name:"Soft Tissue Thermal Index",retired:""},"0x00185028":{keyword:"SoftTissueFocusThermalIndex",vr:"DS",vm:"1",name:"Soft Tissue-focus Thermal Index",retired:""},"0x00185029":{keyword:"SoftTissueSurfaceThermalIndex",vr:"DS",vm:"1",name:"Soft Tissue-surface Thermal Index",retired:""},"0x00185030":{keyword:"DynamicRange",vr:"DS",vm:"1",name:"Dynamic Range",retired:"Retired"},"0x00185040":{keyword:"TotalGain",vr:"DS",vm:"1",name:"Total Gain",retired:"Retired"},"0x00185050":{keyword:"DepthOfScanField",vr:"IS",vm:"1",name:"Depth of Scan Field",retired:""},"0x00185100":{keyword:"PatientPosition",vr:"CS",vm:"1",name:"Patient Position",retired:""},"0x00185101":{keyword:"ViewPosition",vr:"CS",vm:"1",name:"View Position",retired:""},"0x00185104":{keyword:"ProjectionEponymousNameCodeSequence",vr:"SQ",vm:"1",name:"Projection Eponymous Name Code Sequence",retired:""},"0x00185210":{keyword:"ImageTransformationMatrix",vr:"DS",vm:"6",name:"Image Transformation Matrix",retired:"Retired"},"0x00185212":{keyword:"ImageTranslationVector",vr:"DS",vm:"3",name:"Image Translation Vector",retired:"Retired"},"0x00186000":{keyword:"Sensitivity",vr:"DS",vm:"1",name:"Sensitivity",retired:""},"0x00186011":{keyword:"SequenceOfUltrasoundRegions",vr:"SQ",vm:"1",name:"Sequence of Ultrasound Regions",retired:""},"0x00186012":{keyword:"RegionSpatialFormat",vr:"US",vm:"1",name:"Region Spatial Format",retired:""},"0x00186014":{keyword:"RegionDataType",vr:"US",vm:"1",name:"Region Data Type",retired:""},"0x00186016":{keyword:"RegionFlags",vr:"UL",vm:"1",name:"Region Flags",retired:""},"0x00186018":{keyword:"RegionLocationMinX0",vr:"UL",vm:"1",name:"Region Location Min X0",retired:""},"0x0018601A":{keyword:"RegionLocationMinY0",vr:"UL",vm:"1",name:"Region Location Min Y0",retired:""},"0x0018601C":{keyword:"RegionLocationMaxX1",vr:"UL",vm:"1",name:"Region Location Max X1",retired:""},"0x0018601E":{keyword:"RegionLocationMaxY1",vr:"UL",vm:"1",name:"Region Location Max Y1",retired:""},"0x00186020":{keyword:"ReferencePixelX0",vr:"SL",vm:"1",name:"Reference Pixel X0",retired:""},"0x00186022":{keyword:"ReferencePixelY0",vr:"SL",vm:"1",name:"Reference Pixel Y0",retired:""},"0x00186024":{keyword:"PhysicalUnitsXDirection",vr:"US",vm:"1",name:"Physical Units X Direction",retired:""},"0x00186026":{keyword:"PhysicalUnitsYDirection",vr:"US",vm:"1",name:"Physical Units Y Direction",retired:""},"0x00186028":{keyword:"ReferencePixelPhysicalValueX",vr:"FD",vm:"1",name:"Reference Pixel Physical Value X",retired:""},"0x0018602A":{keyword:"ReferencePixelPhysicalValueY",vr:"FD",vm:"1",name:"Reference Pixel Physical Value Y",retired:""},"0x0018602C":{keyword:"PhysicalDeltaX",vr:"FD",vm:"1",name:"Physical Delta X",retired:""},"0x0018602E":{keyword:"PhysicalDeltaY",vr:"FD",vm:"1",name:"Physical Delta Y",retired:""},"0x00186030":{keyword:"TransducerFrequency",vr:"UL",vm:"1",name:"Transducer Frequency",retired:""},"0x00186031":{keyword:"TransducerType",vr:"CS",vm:"1",name:"Transducer Type",retired:""},"0x00186032":{keyword:"PulseRepetitionFrequency",vr:"UL",vm:"1",name:"Pulse Repetition Frequency",retired:""},"0x00186034":{keyword:"DopplerCorrectionAngle",vr:"FD",vm:"1",name:"Doppler Correction Angle",retired:""},"0x00186036":{keyword:"SteeringAngle",vr:"FD",vm:"1",name:"Steering Angle",retired:""},"0x00186038":{keyword:"DopplerSampleVolumeXPositionRetired",vr:"UL",vm:"1",name:"Doppler Sample Volume X Position (Retired)",retired:"Retired"},"0x00186039":{keyword:"DopplerSampleVolumeXPosition",vr:"SL",vm:"1",name:"Doppler Sample Volume X Position",retired:""},"0x0018603A":{keyword:"DopplerSampleVolumeYPositionRetired",vr:"UL",vm:"1",name:"Doppler Sample Volume Y Position (Retired)",retired:"Retired"},"0x0018603B":{keyword:"DopplerSampleVolumeYPosition",vr:"SL",vm:"1",name:"Doppler Sample Volume Y Position",retired:""},"0x0018603C":{keyword:"TMLinePositionX0Retired",vr:"UL",vm:"1",name:"TM-Line Position X0 (Retired)",retired:"Retired"},"0x0018603D":{keyword:"TMLinePositionX0",vr:"SL",vm:"1",name:"TM-Line Position X0",retired:""},"0x0018603E":{keyword:"TMLinePositionY0Retired",vr:"UL",vm:"1",name:"TM-Line Position Y0 (Retired)",retired:"Retired"},"0x0018603F":{keyword:"TMLinePositionY0",vr:"SL",vm:"1",name:"TM-Line Position Y0",retired:""},"0x00186040":{keyword:"TMLinePositionX1Retired",vr:"UL",vm:"1",name:"TM-Line Position X1 (Retired)",retired:"Retired"},"0x00186041":{keyword:"TMLinePositionX1",vr:"SL",vm:"1",name:"TM-Line Position X1",retired:""},"0x00186042":{keyword:"TMLinePositionY1Retired",vr:"UL",vm:"1",name:"TM-Line Position Y1 (Retired)",retired:"Retired"},"0x00186043":{keyword:"TMLinePositionY1",vr:"SL",vm:"1",name:"TM-Line Position Y1",retired:""},"0x00186044":{keyword:"PixelComponentOrganization",vr:"US",vm:"1",name:"Pixel Component Organization",retired:""},"0x00186046":{keyword:"PixelComponentMask",vr:"UL",vm:"1",name:"Pixel Component Mask",retired:""},"0x00186048":{keyword:"PixelComponentRangeStart",vr:"UL",vm:"1",name:"Pixel Component Range Start",retired:""},"0x0018604A":{keyword:"PixelComponentRangeStop",vr:"UL",vm:"1",name:"Pixel Component Range Stop",retired:""},"0x0018604C":{keyword:"PixelComponentPhysicalUnits",vr:"US",vm:"1",name:"Pixel Component Physical Units",retired:""},"0x0018604E":{keyword:"PixelComponentDataType",vr:"US",vm:"1",name:"Pixel Component Data Type",retired:""},"0x00186050":{keyword:"NumberOfTableBreakPoints",vr:"UL",vm:"1",name:"Number of Table Break Points",retired:""},"0x00186052":{keyword:"TableOfXBreakPoints",vr:"UL",vm:"1-n",name:"Table of X Break Points",retired:""},"0x00186054":{keyword:"TableOfYBreakPoints",vr:"FD",vm:"1-n",name:"Table of Y Break Points",retired:""},"0x00186056":{keyword:"NumberOfTableEntries",vr:"UL",vm:"1",name:"Number of Table Entries",retired:""},"0x00186058":{keyword:"TableOfPixelValues",vr:"UL",vm:"1-n",name:"Table of Pixel Values",retired:""},"0x0018605A":{keyword:"TableOfParameterValues",vr:"FL",vm:"1-n",name:"Table of Parameter Values",retired:""},"0x00186060":{keyword:"RWaveTimeVector",vr:"FL",vm:"1-n",name:"R Wave Time Vector",retired:""},"0x00186070":{keyword:"ActiveImageAreaOverlayGroup",vr:"US",vm:"1",name:"Active Image Area Overlay Group",retired:""},"0x00187000":{keyword:"DetectorConditionsNominalFlag",vr:"CS",vm:"1",name:"Detector Conditions Nominal Flag",retired:""},"0x00187001":{keyword:"DetectorTemperature",vr:"DS",vm:"1",name:"Detector Temperature",retired:""},"0x00187004":{keyword:"DetectorType",vr:"CS",vm:"1",name:"Detector Type",retired:""},"0x00187005":{keyword:"DetectorConfiguration",vr:"CS",vm:"1",name:"Detector Configuration",retired:""},"0x00187006":{keyword:"DetectorDescription",vr:"LT",vm:"1",name:"Detector Description",retired:""},"0x00187008":{keyword:"DetectorMode",vr:"LT",vm:"1",name:"Detector Mode",retired:""},"0x0018700A":{keyword:"DetectorID",vr:"SH",vm:"1",name:"Detector ID",retired:""},"0x0018700C":{keyword:"DateOfLastDetectorCalibration",vr:"DA",vm:"1",name:"Date of Last Detector Calibration",retired:""},"0x0018700E":{keyword:"TimeOfLastDetectorCalibration",vr:"TM",vm:"1",name:"Time of Last Detector Calibration",retired:""},"0x00187010":{keyword:"ExposuresOnDetectorSinceLastCalibration",vr:"IS",vm:"1",name:"Exposures on Detector Since Last Calibration",retired:""},"0x00187011":{keyword:"ExposuresOnDetectorSinceManufactured",vr:"IS",vm:"1",name:"Exposures on Detector Since Manufactured",retired:""},"0x00187012":{keyword:"DetectorTimeSinceLastExposure",vr:"DS",vm:"1",name:"Detector Time Since Last Exposure",retired:""},"0x00187014":{keyword:"DetectorActiveTime",vr:"DS",vm:"1",name:"Detector Active Time",retired:""},"0x00187016":{keyword:"DetectorActivationOffsetFromExposure",vr:"DS",vm:"1",name:"Detector Activation Offset From Exposure",retired:""},"0x0018701A":{keyword:"DetectorBinning",vr:"DS",vm:"2",name:"Detector Binning",retired:""},"0x00187020":{keyword:"DetectorElementPhysicalSize",vr:"DS",vm:"2",name:"Detector Element Physical Size",retired:""},"0x00187022":{keyword:"DetectorElementSpacing",vr:"DS",vm:"2",name:"Detector Element Spacing",retired:""},"0x00187024":{keyword:"DetectorActiveShape",vr:"CS",vm:"1",name:"Detector Active Shape",retired:""},"0x00187026":{keyword:"DetectorActiveDimensions",vr:"DS",vm:"1-2",name:"Detector Active Dimension(s)",retired:""},"0x00187028":{keyword:"DetectorActiveOrigin",vr:"DS",vm:"2",name:"Detector Active Origin",retired:""},"0x0018702A":{keyword:"DetectorManufacturerName",vr:"LO",vm:"1",name:"Detector Manufacturer Name",retired:""},"0x0018702B":{keyword:"DetectorManufacturerModelName",vr:"LO",vm:"1",name:"Detector Manufacturer's Model Name",retired:""},"0x00187030":{keyword:"FieldOfViewOrigin",vr:"DS",vm:"2",name:"Field of View Origin",retired:""},"0x00187032":{keyword:"FieldOfViewRotation",vr:"DS",vm:"1",name:"Field of View Rotation",retired:""},"0x00187034":{keyword:"FieldOfViewHorizontalFlip",vr:"CS",vm:"1",name:"Field of View Horizontal Flip",retired:""},"0x00187036":{keyword:"PixelDataAreaOriginRelativeToFOV",vr:"FL",vm:"2",name:"Pixel Data Area Origin Relative To FOV",retired:""},"0x00187038":{keyword:"PixelDataAreaRotationAngleRelativeToFOV",vr:"FL",vm:"1",name:"Pixel Data Area Rotation Angle Relative To FOV",retired:""},"0x00187040":{keyword:"GridAbsorbingMaterial",vr:"LT",vm:"1",name:"Grid Absorbing Material",retired:""},"0x00187041":{keyword:"GridSpacingMaterial",vr:"LT",vm:"1",name:"Grid Spacing Material",retired:""},"0x00187042":{keyword:"GridThickness",vr:"DS",vm:"1",name:"Grid Thickness",retired:""},"0x00187044":{keyword:"GridPitch",vr:"DS",vm:"1",name:"Grid Pitch",retired:""},"0x00187046":{keyword:"GridAspectRatio",vr:"IS",vm:"2",name:"Grid Aspect Ratio",retired:""},"0x00187048":{keyword:"GridPeriod",vr:"DS",vm:"1",name:"Grid Period",retired:""},"0x0018704C":{keyword:"GridFocalDistance",vr:"DS",vm:"1",name:"Grid Focal Distance",retired:""},"0x00187050":{keyword:"FilterMaterial",vr:"CS",vm:"1-n",name:"Filter Material",retired:""},"0x00187052":{keyword:"FilterThicknessMinimum",vr:"DS",vm:"1-n",name:"Filter Thickness Minimum",retired:""},"0x00187054":{keyword:"FilterThicknessMaximum",vr:"DS",vm:"1-n",name:"Filter Thickness Maximum",retired:""},"0x00187056":{keyword:"FilterBeamPathLengthMinimum",vr:"FL",vm:"1-n",name:"Filter Beam Path Length Minimum",retired:""},"0x00187058":{keyword:"FilterBeamPathLengthMaximum",vr:"FL",vm:"1-n",name:"Filter Beam Path Length Maximum",retired:""},"0x00187060":{keyword:"ExposureControlMode",vr:"CS",vm:"1",name:"Exposure Control Mode",retired:""},"0x00187062":{keyword:"ExposureControlModeDescription",vr:"LT",vm:"1",name:"Exposure Control Mode Description",retired:""},"0x00187064":{keyword:"ExposureStatus",vr:"CS",vm:"1",name:"Exposure Status",retired:""},"0x00187065":{keyword:"PhototimerSetting",vr:"DS",vm:"1",name:"Phototimer Setting",retired:""},"0x00188150":{keyword:"ExposureTimeInuS",vr:"DS",vm:"1",name:"Exposure Time in uS",retired:""},"0x00188151":{keyword:"XRayTubeCurrentInuA",vr:"DS",vm:"1",name:"X-Ray Tube Current in uA",retired:""},"0x00189004":{keyword:"ContentQualification",vr:"CS",vm:"1",name:"Content Qualification",retired:""},"0x00189005":{keyword:"PulseSequenceName",vr:"SH",vm:"1",name:"Pulse Sequence Name",retired:""},"0x00189006":{keyword:"MRImagingModifierSequence",vr:"SQ",vm:"1",name:"MR Imaging Modifier Sequence",retired:""},"0x00189008":{keyword:"EchoPulseSequence",vr:"CS",vm:"1",name:"Echo Pulse Sequence",retired:""},"0x00189009":{keyword:"InversionRecovery",vr:"CS",vm:"1",name:"Inversion Recovery",retired:""},"0x00189010":{keyword:"FlowCompensation",vr:"CS",vm:"1",name:"Flow Compensation",retired:""},"0x00189011":{keyword:"MultipleSpinEcho",vr:"CS",vm:"1",name:"Multiple Spin Echo",retired:""},"0x00189012":{keyword:"MultiPlanarExcitation",vr:"CS",vm:"1",name:"Multi-planar Excitation",retired:""},"0x00189014":{keyword:"PhaseContrast",vr:"CS",vm:"1",name:"Phase Contrast",retired:""},"0x00189015":{keyword:"TimeOfFlightContrast",vr:"CS",vm:"1",name:"Time of Flight Contrast",retired:""},"0x00189016":{keyword:"Spoiling",vr:"CS",vm:"1",name:"Spoiling",retired:""},"0x00189017":{keyword:"SteadyStatePulseSequence",vr:"CS",vm:"1",name:"Steady State Pulse Sequence",retired:""},"0x00189018":{keyword:"EchoPlanarPulseSequence",vr:"CS",vm:"1",name:"Echo Planar Pulse Sequence",retired:""},"0x00189019":{keyword:"TagAngleFirstAxis",vr:"FD",vm:"1",name:"Tag Angle First Axis",retired:""},"0x00189020":{keyword:"MagnetizationTransfer",vr:"CS",vm:"1",name:"Magnetization Transfer",retired:""},"0x00189021":{keyword:"T2Preparation",vr:"CS",vm:"1",name:"T2 Preparation",retired:""},"0x00189022":{keyword:"BloodSignalNulling",vr:"CS",vm:"1",name:"Blood Signal Nulling",retired:""},"0x00189024":{keyword:"SaturationRecovery",vr:"CS",vm:"1",name:"Saturation Recovery",retired:""},"0x00189025":{keyword:"SpectrallySelectedSuppression",vr:"CS",vm:"1",name:"Spectrally Selected Suppression",retired:""},"0x00189026":{keyword:"SpectrallySelectedExcitation",vr:"CS",vm:"1",name:"Spectrally Selected Excitation",retired:""},"0x00189027":{keyword:"SpatialPresaturation",vr:"CS",vm:"1",name:"Spatial Pre-saturation",retired:""},"0x00189028":{keyword:"Tagging",vr:"CS",vm:"1",name:"Tagging",retired:""},"0x00189029":{keyword:"OversamplingPhase",vr:"CS",vm:"1",name:"Oversampling Phase",retired:""},"0x00189030":{keyword:"TagSpacingFirstDimension",vr:"FD",vm:"1",name:"Tag Spacing First Dimension",retired:""},"0x00189032":{keyword:"GeometryOfKSpaceTraversal",vr:"CS",vm:"1",name:"Geometry of k-Space Traversal",retired:""},"0x00189033":{keyword:"SegmentedKSpaceTraversal",vr:"CS",vm:"1",name:"Segmented k-Space Traversal",retired:""},"0x00189034":{keyword:"RectilinearPhaseEncodeReordering",vr:"CS",vm:"1",name:"Rectilinear Phase Encode Reordering",retired:""},"0x00189035":{keyword:"TagThickness",vr:"FD",vm:"1",name:"Tag Thickness",retired:""},"0x00189036":{keyword:"PartialFourierDirection",vr:"CS",vm:"1",name:"Partial Fourier Direction",retired:""},"0x00189037":{keyword:"CardiacSynchronizationTechnique",vr:"CS",vm:"1",name:"Cardiac Synchronization Technique",retired:""},"0x00189041":{keyword:"ReceiveCoilManufacturerName",vr:"LO",vm:"1",name:"Receive Coil Manufacturer Name",retired:""},"0x00189042":{keyword:"MRReceiveCoilSequence",vr:"SQ",vm:"1",name:"MR Receive Coil Sequence",retired:""},"0x00189043":{keyword:"ReceiveCoilType",vr:"CS",vm:"1",name:"Receive Coil Type",retired:""},"0x00189044":{keyword:"QuadratureReceiveCoil",vr:"CS",vm:"1",name:"Quadrature Receive Coil",retired:""},"0x00189045":{keyword:"MultiCoilDefinitionSequence",vr:"SQ",vm:"1",name:"Multi-Coil Definition Sequence",retired:""},"0x00189046":{keyword:"MultiCoilConfiguration",vr:"LO",vm:"1",name:"Multi-Coil Configuration",retired:""},"0x00189047":{keyword:"MultiCoilElementName",vr:"SH",vm:"1",name:"Multi-Coil Element Name",retired:""},"0x00189048":{keyword:"MultiCoilElementUsed",vr:"CS",vm:"1",name:"Multi-Coil Element Used",retired:""},"0x00189049":{keyword:"MRTransmitCoilSequence",vr:"SQ",vm:"1",name:"MR Transmit Coil Sequence",retired:""},"0x00189050":{keyword:"TransmitCoilManufacturerName",vr:"LO",vm:"1",name:"Transmit Coil Manufacturer Name",retired:""},"0x00189051":{keyword:"TransmitCoilType",vr:"CS",vm:"1",name:"Transmit Coil Type",retired:""},"0x00189052":{keyword:"SpectralWidth",vr:"FD",vm:"1-2",name:"Spectral Width",retired:""},"0x00189053":{keyword:"ChemicalShiftReference",vr:"FD",vm:"1-2",name:"Chemical Shift Reference",retired:""},"0x00189054":{keyword:"VolumeLocalizationTechnique",vr:"CS",vm:"1",name:"Volume Localization Technique",retired:""},"0x00189058":{keyword:"MRAcquisitionFrequencyEncodingSteps",vr:"US",vm:"1",name:"MR Acquisition Frequency Encoding Steps",retired:""},"0x00189059":{keyword:"Decoupling",vr:"CS",vm:"1",name:"De-coupling",retired:""},"0x00189060":{keyword:"DecoupledNucleus",vr:"CS",vm:"1-2",name:"De-coupled Nucleus",retired:""},"0x00189061":{keyword:"DecouplingFrequency",vr:"FD",vm:"1-2",name:"De-coupling Frequency",retired:""},"0x00189062":{keyword:"DecouplingMethod",vr:"CS",vm:"1",name:"De-coupling Method",retired:""},"0x00189063":{keyword:"DecouplingChemicalShiftReference",vr:"FD",vm:"1-2",name:"De-coupling Chemical Shift Reference",retired:""},"0x00189064":{keyword:"KSpaceFiltering",vr:"CS",vm:"1",name:"k-space Filtering",retired:""},"0x00189065":{keyword:"TimeDomainFiltering",vr:"CS",vm:"1-2",name:"Time Domain Filtering",retired:""},"0x00189066":{keyword:"NumberOfZeroFills",vr:"US",vm:"1-2",name:"Number of Zero Fills",retired:""},"0x00189067":{keyword:"BaselineCorrection",vr:"CS",vm:"1",name:"Baseline Correction",retired:""},"0x00189069":{keyword:"ParallelReductionFactorInPlane",vr:"FD",vm:"1",name:"Parallel Reduction Factor In-plane",retired:""},"0x00189070":{keyword:"CardiacRRIntervalSpecified",vr:"FD",vm:"1",name:"Cardiac R-R Interval Specified",retired:""},"0x00189073":{keyword:"AcquisitionDuration",vr:"FD",vm:"1",name:"Acquisition Duration",retired:""},"0x00189074":{keyword:"FrameAcquisitionDateTime",vr:"DT",vm:"1",name:"Frame Acquisition DateTime",retired:""},"0x00189075":{keyword:"DiffusionDirectionality",vr:"CS",vm:"1",name:"Diffusion Directionality",retired:""},"0x00189076":{keyword:"DiffusionGradientDirectionSequence",vr:"SQ",vm:"1",name:"Diffusion Gradient Direction Sequence",retired:""},"0x00189077":{keyword:"ParallelAcquisition",vr:"CS",vm:"1",name:"Parallel Acquisition",retired:""},"0x00189078":{keyword:"ParallelAcquisitionTechnique",vr:"CS",vm:"1",name:"Parallel Acquisition Technique",retired:""},"0x00189079":{keyword:"InversionTimes",vr:"FD",vm:"1-n",name:"Inversion Times",retired:""},"0x00189080":{keyword:"MetaboliteMapDescription",vr:"ST",vm:"1",name:"Metabolite Map Description",retired:""},"0x00189081":{keyword:"PartialFourier",vr:"CS",vm:"1",name:"Partial Fourier",retired:""},"0x00189082":{keyword:"EffectiveEchoTime",vr:"FD",vm:"1",name:"Effective Echo Time",retired:""},"0x00189083":{keyword:"MetaboliteMapCodeSequence",vr:"SQ",vm:"1",name:"Metabolite Map Code Sequence",retired:""},"0x00189084":{keyword:"ChemicalShiftSequence",vr:"SQ",vm:"1",name:"Chemical Shift Sequence",retired:""},"0x00189085":{keyword:"CardiacSignalSource",vr:"CS",vm:"1",name:"Cardiac Signal Source",retired:""},"0x00189087":{keyword:"DiffusionBValue",vr:"FD",vm:"1",name:"Diffusion b-value",retired:""},"0x00189089":{keyword:"DiffusionGradientOrientation",vr:"FD",vm:"3",name:"Diffusion Gradient Orientation",retired:""},"0x00189090":{keyword:"VelocityEncodingDirection",vr:"FD",vm:"3",name:"Velocity Encoding Direction",retired:""},"0x00189091":{keyword:"VelocityEncodingMinimumValue",vr:"FD",vm:"1",name:"Velocity Encoding Minimum Value",retired:""},"0x00189092":{keyword:"VelocityEncodingAcquisitionSequence",vr:"SQ",vm:"1",name:"Velocity Encoding Acquisition Sequence",retired:""},"0x00189093":{keyword:"NumberOfKSpaceTrajectories",vr:"US",vm:"1",name:"Number of k-Space Trajectories",retired:""},"0x00189094":{keyword:"CoverageOfKSpace",vr:"CS",vm:"1",name:"Coverage of k-Space",retired:""},"0x00189095":{keyword:"SpectroscopyAcquisitionPhaseRows",vr:"UL",vm:"1",name:"Spectroscopy Acquisition Phase Rows",retired:""},"0x00189096":{keyword:"ParallelReductionFactorInPlaneRetired",vr:"FD",vm:"1",name:"Parallel Reduction Factor In-plane (Retired)",retired:"Retired"},"0x00189098":{keyword:"TransmitterFrequency",vr:"FD",vm:"1-2",name:"Transmitter Frequency",retired:""},"0x00189100":{keyword:"ResonantNucleus",vr:"CS",vm:"1-2",name:"Resonant Nucleus",retired:""},"0x00189101":{keyword:"FrequencyCorrection",vr:"CS",vm:"1",name:"Frequency Correction",retired:""},"0x00189103":{keyword:"MRSpectroscopyFOVGeometrySequence",vr:"SQ",vm:"1",name:"MR Spectroscopy FOV/Geometry Sequence",retired:""},"0x00189104":{keyword:"SlabThickness",vr:"FD",vm:"1",name:"Slab Thickness",retired:""},"0x00189105":{keyword:"SlabOrientation",vr:"FD",vm:"3",name:"Slab Orientation",retired:""},"0x00189106":{keyword:"MidSlabPosition",vr:"FD",vm:"3",name:"Mid Slab Position",retired:""},"0x00189107":{keyword:"MRSpatialSaturationSequence",vr:"SQ",vm:"1",name:"MR Spatial Saturation Sequence",retired:""},"0x00189112":{keyword:"MRTimingAndRelatedParametersSequence",vr:"SQ",vm:"1",name:"MR Timing and Related Parameters Sequence",retired:""},"0x00189114":{keyword:"MREchoSequence",vr:"SQ",vm:"1",name:"MR Echo Sequence",retired:""},"0x00189115":{keyword:"MRModifierSequence",vr:"SQ",vm:"1",name:"MR Modifier Sequence",retired:""},"0x00189117":{keyword:"MRDiffusionSequence",vr:"SQ",vm:"1",name:"MR Diffusion Sequence",retired:""},"0x00189118":{keyword:"CardiacSynchronizationSequence",vr:"SQ",vm:"1",name:"Cardiac Synchronization Sequence",retired:""},"0x00189119":{keyword:"MRAveragesSequence",vr:"SQ",vm:"1",name:"MR Averages Sequence",retired:""},"0x00189125":{keyword:"MRFOVGeometrySequence",vr:"SQ",vm:"1",name:"MR FOV/Geometry Sequence",retired:""},"0x00189126":{keyword:"VolumeLocalizationSequence",vr:"SQ",vm:"1",name:"Volume Localization Sequence",retired:""},"0x00189127":{keyword:"SpectroscopyAcquisitionDataColumns",vr:"UL",vm:"1",name:"Spectroscopy Acquisition Data Columns",retired:""},"0x00189147":{keyword:"DiffusionAnisotropyType",vr:"CS",vm:"1",name:"Diffusion Anisotropy Type",retired:""},"0x00189151":{keyword:"FrameReferenceDateTime",vr:"DT",vm:"1",name:"Frame Reference DateTime",retired:""},"0x00189152":{keyword:"MRMetaboliteMapSequence",vr:"SQ",vm:"1",name:"MR Metabolite Map Sequence",retired:""},"0x00189155":{keyword:"ParallelReductionFactorOutOfPlane",vr:"FD",vm:"1",name:"Parallel Reduction Factor out-of-plane",retired:""},"0x00189159":{keyword:"SpectroscopyAcquisitionOutOfPlanePhaseSteps",vr:"UL",vm:"1",name:"Spectroscopy Acquisition Out-of-plane Phase Steps",retired:""},"0x00189166":{keyword:"BulkMotionStatus",vr:"CS",vm:"1",name:"Bulk Motion Status",retired:"Retired"},"0x00189168":{keyword:"ParallelReductionFactorSecondInPlane",vr:"FD",vm:"1",name:"Parallel Reduction Factor Second In-plane",retired:""},"0x00189169":{keyword:"CardiacBeatRejectionTechnique",vr:"CS",vm:"1",name:"Cardiac Beat Rejection Technique",retired:""},"0x00189170":{keyword:"RespiratoryMotionCompensationTechnique",vr:"CS",vm:"1",name:"Respiratory Motion Compensation Technique",retired:""},"0x00189171":{keyword:"RespiratorySignalSource",vr:"CS",vm:"1",name:"Respiratory Signal Source",retired:""},"0x00189172":{keyword:"BulkMotionCompensationTechnique",vr:"CS",vm:"1",name:"Bulk Motion Compensation Technique",retired:""},"0x00189173":{keyword:"BulkMotionSignalSource",vr:"CS",vm:"1",name:"Bulk Motion Signal Source",retired:""},"0x00189174":{keyword:"ApplicableSafetyStandardAgency",vr:"CS",vm:"1",name:"Applicable Safety Standard Agency",retired:""},"0x00189175":{keyword:"ApplicableSafetyStandardDescription",vr:"LO",vm:"1",name:"Applicable Safety Standard Description",retired:""},"0x00189176":{keyword:"OperatingModeSequence",vr:"SQ",vm:"1",name:"Operating Mode Sequence",retired:""},"0x00189177":{keyword:"OperatingModeType",vr:"CS",vm:"1",name:"Operating Mode Type",retired:""},"0x00189178":{keyword:"OperatingMode",vr:"CS",vm:"1",name:"Operating Mode",retired:""},"0x00189179":{keyword:"SpecificAbsorptionRateDefinition",vr:"CS",vm:"1",name:"Specific Absorption Rate Definition",retired:""},"0x00189180":{keyword:"GradientOutputType",vr:"CS",vm:"1",name:"Gradient Output Type",retired:""},"0x00189181":{keyword:"SpecificAbsorptionRateValue",vr:"FD",vm:"1",name:"Specific Absorption Rate Value",retired:""},"0x00189182":{keyword:"GradientOutput",vr:"FD",vm:"1",name:"Gradient Output",retired:""},"0x00189183":{keyword:"FlowCompensationDirection",vr:"CS",vm:"1",name:"Flow Compensation Direction",retired:""},"0x00189184":{keyword:"TaggingDelay",vr:"FD",vm:"1",name:"Tagging Delay",retired:""},"0x00189185":{keyword:"RespiratoryMotionCompensationTechniqueDescription",vr:"ST",vm:"1",name:"Respiratory Motion Compensation Technique Description",retired:""},"0x00189186":{keyword:"RespiratorySignalSourceID",vr:"SH",vm:"1",name:"Respiratory Signal Source ID",retired:""},"0x00189195":{keyword:"ChemicalShiftMinimumIntegrationLimitInHz",vr:"FD",vm:"1",name:"Chemical Shift Minimum Integration Limit in Hz",retired:"Retired"},"0x00189196":{keyword:"ChemicalShiftMaximumIntegrationLimitInHz",vr:"FD",vm:"1",name:"Chemical Shift Maximum Integration Limit in Hz",retired:"Retired"},"0x00189197":{keyword:"MRVelocityEncodingSequence",vr:"SQ",vm:"1",name:"MR Velocity Encoding Sequence",retired:""},"0x00189198":{keyword:"FirstOrderPhaseCorrection",vr:"CS",vm:"1",name:"First Order Phase Correction",retired:""},"0x00189199":{keyword:"WaterReferencedPhaseCorrection",vr:"CS",vm:"1",name:"Water Referenced Phase Correction",retired:""},"0x00189200":{keyword:"MRSpectroscopyAcquisitionType",vr:"CS",vm:"1",name:"MR Spectroscopy Acquisition Type",retired:""},"0x00189214":{keyword:"RespiratoryCyclePosition",vr:"CS",vm:"1",name:"Respiratory Cycle Position",retired:""},"0x00189217":{keyword:"VelocityEncodingMaximumValue",vr:"FD",vm:"1",name:"Velocity Encoding Maximum Value",retired:""},"0x00189218":{keyword:"TagSpacingSecondDimension",vr:"FD",vm:"1",name:"Tag Spacing Second Dimension",retired:""},"0x00189219":{keyword:"TagAngleSecondAxis",vr:"SS",vm:"1",name:"Tag Angle Second Axis",retired:""},"0x00189220":{keyword:"FrameAcquisitionDuration",vr:"FD",vm:"1",name:"Frame Acquisition Duration",retired:""},"0x00189226":{keyword:"MRImageFrameTypeSequence",vr:"SQ",vm:"1",name:"MR Image Frame Type Sequence",retired:""},"0x00189227":{keyword:"MRSpectroscopyFrameTypeSequence",vr:"SQ",vm:"1",name:"MR Spectroscopy Frame Type Sequence",retired:""},"0x00189231":{keyword:"MRAcquisitionPhaseEncodingStepsInPlane",vr:"US",vm:"1",name:"MR Acquisition Phase Encoding Steps in-plane",retired:""},"0x00189232":{keyword:"MRAcquisitionPhaseEncodingStepsOutOfPlane",vr:"US",vm:"1",name:"MR Acquisition Phase Encoding Steps out-of-plane",retired:""},"0x00189234":{keyword:"SpectroscopyAcquisitionPhaseColumns",vr:"UL",vm:"1",name:"Spectroscopy Acquisition Phase Columns",retired:""},"0x00189236":{keyword:"CardiacCyclePosition",vr:"CS",vm:"1",name:"Cardiac Cycle Position",retired:""},"0x00189239":{keyword:"SpecificAbsorptionRateSequence",vr:"SQ",vm:"1",name:"Specific Absorption Rate Sequence",retired:""},"0x00189240":{keyword:"RFEchoTrainLength",vr:"US",vm:"1",name:"RF Echo Train Length",retired:""},"0x00189241":{keyword:"GradientEchoTrainLength",vr:"US",vm:"1",name:"Gradient Echo Train Length",retired:""},"0x00189250":{keyword:"ArterialSpinLabelingContrast",vr:"CS",vm:"1",name:"Arterial Spin Labeling Contrast",retired:""},"0x00189251":{keyword:"MRArterialSpinLabelingSequence",vr:"SQ",vm:"1",name:"MR Arterial Spin Labeling Sequence",retired:""},"0x00189252":{keyword:"ASLTechniqueDescription",vr:"LO",vm:"1",name:"ASL Technique Description",retired:""},"0x00189253":{keyword:"ASLSlabNumber",vr:"US",vm:"1",name:"ASL Slab Number",retired:""},"0x00189254":{keyword:"ASLSlabThickness",vr:"FD",vm:"1",name:"ASL Slab Thickness",retired:""},"0x00189255":{keyword:"ASLSlabOrientation",vr:"FD",vm:"3",name:"ASL Slab Orientation",retired:""},"0x00189256":{keyword:"ASLMidSlabPosition",vr:"FD",vm:"3",name:"ASL Mid Slab Position",retired:""},"0x00189257":{keyword:"ASLContext",vr:"CS",vm:"1",name:"ASL Context",retired:""},"0x00189258":{keyword:"ASLPulseTrainDuration",vr:"UL",vm:"1",name:"ASL Pulse Train Duration",retired:""},"0x00189259":{keyword:"ASLCrusherFlag",vr:"CS",vm:"1",name:"ASL Crusher Flag",retired:""},"0x0018925A":{keyword:"ASLCrusherFlowLimit",vr:"FD",vm:"1",name:"ASL Crusher Flow Limit",retired:""},"0x0018925B":{keyword:"ASLCrusherDescription",vr:"LO",vm:"1",name:"ASL Crusher Description",retired:""},"0x0018925C":{keyword:"ASLBolusCutoffFlag",vr:"CS",vm:"1",name:"ASL Bolus Cut-off Flag",retired:""},"0x0018925D":{keyword:"ASLBolusCutoffTimingSequence",vr:"SQ",vm:"1",name:"ASL Bolus Cut-off Timing Sequence",retired:""},"0x0018925E":{keyword:"ASLBolusCutoffTechnique",vr:"LO",vm:"1",name:"ASL Bolus Cut-off Technique",retired:""},"0x0018925F":{keyword:"ASLBolusCutoffDelayTime",vr:"UL",vm:"1",name:"ASL Bolus Cut-off Delay Time",retired:""},"0x00189260":{keyword:"ASLSlabSequence",vr:"SQ",vm:"1",name:"ASL Slab Sequence",retired:""},"0x00189295":{keyword:"ChemicalShiftMinimumIntegrationLimitInppm",vr:"FD",vm:"1",name:"Chemical Shift Minimum Integration Limit in ppm",retired:""},"0x00189296":{keyword:"ChemicalShiftMaximumIntegrationLimitInppm",vr:"FD",vm:"1",name:"Chemical Shift Maximum Integration Limit in ppm",retired:""},"0x00189297":{keyword:"WaterReferenceAcquisition",vr:"CS",vm:"1",name:"Water Reference Acquisition",retired:""},"0x00189298":{keyword:"EchoPeakPosition",vr:"IS",vm:"1",name:"Echo Peak Position",retired:""},"0x00189301":{keyword:"CTAcquisitionTypeSequence",vr:"SQ",vm:"1",name:"CT Acquisition Type Sequence",retired:""},"0x00189302":{keyword:"AcquisitionType",vr:"CS",vm:"1",name:"Acquisition Type",retired:""},"0x00189303":{keyword:"TubeAngle",vr:"FD",vm:"1",name:"Tube Angle",retired:""},"0x00189304":{keyword:"CTAcquisitionDetailsSequence",vr:"SQ",vm:"1",name:"CT Acquisition Details Sequence",retired:""},"0x00189305":{keyword:"RevolutionTime",vr:"FD",vm:"1",name:"Revolution Time",retired:""},"0x00189306":{keyword:"SingleCollimationWidth",vr:"FD",vm:"1",name:"Single Collimation Width",retired:""},"0x00189307":{keyword:"TotalCollimationWidth",vr:"FD",vm:"1",name:"Total Collimation Width",retired:""},"0x00189308":{keyword:"CTTableDynamicsSequence",vr:"SQ",vm:"1",name:"CT Table Dynamics Sequence",retired:""},"0x00189309":{keyword:"TableSpeed",vr:"FD",vm:"1",name:"Table Speed",retired:""},"0x00189310":{keyword:"TableFeedPerRotation",vr:"FD",vm:"1",name:"Table Feed per Rotation",retired:""},"0x00189311":{keyword:"SpiralPitchFactor",vr:"FD",vm:"1",name:"Spiral Pitch Factor",retired:""},"0x00189312":{keyword:"CTGeometrySequence",vr:"SQ",vm:"1",name:"CT Geometry Sequence",retired:""},"0x00189313":{keyword:"DataCollectionCenterPatient",vr:"FD",vm:"3",name:"Data Collection Center (Patient)",retired:""},"0x00189314":{keyword:"CTReconstructionSequence",vr:"SQ",vm:"1",name:"CT Reconstruction Sequence",retired:""},"0x00189315":{keyword:"ReconstructionAlgorithm",vr:"CS",vm:"1",name:"Reconstruction Algorithm",retired:""},"0x00189316":{keyword:"ConvolutionKernelGroup",vr:"CS",vm:"1",name:"Convolution Kernel Group",retired:""},"0x00189317":{keyword:"ReconstructionFieldOfView",vr:"FD",vm:"2",name:"Reconstruction Field of View",retired:""},"0x00189318":{keyword:"ReconstructionTargetCenterPatient",vr:"FD",vm:"3",name:"Reconstruction Target Center (Patient)",retired:""},"0x00189319":{keyword:"ReconstructionAngle",vr:"FD",vm:"1",name:"Reconstruction Angle",retired:""},"0x00189320":{keyword:"ImageFilter",vr:"SH",vm:"1",name:"Image Filter",retired:""},"0x00189321":{keyword:"CTExposureSequence",vr:"SQ",vm:"1",name:"CT Exposure Sequence",retired:""},"0x00189322":{keyword:"ReconstructionPixelSpacing",vr:"FD",vm:"2",name:"Reconstruction Pixel Spacing",retired:""},"0x00189323":{keyword:"ExposureModulationType",vr:"CS",vm:"1-n",name:"Exposure Modulation Type",retired:""},"0x00189324":{keyword:"EstimatedDoseSaving",vr:"FD",vm:"1",name:"Estimated Dose Saving",retired:"Retired"},"0x00189325":{keyword:"CTXRayDetailsSequence",vr:"SQ",vm:"1",name:"CT X-Ray Details Sequence",retired:""},"0x00189326":{keyword:"CTPositionSequence",vr:"SQ",vm:"1",name:"CT Position Sequence",retired:""},"0x00189327":{keyword:"TablePosition",vr:"FD",vm:"1",name:"Table Position",retired:""},"0x00189328":{keyword:"ExposureTimeInms",vr:"FD",vm:"1",name:"Exposure Time in ms",retired:""},"0x00189329":{keyword:"CTImageFrameTypeSequence",vr:"SQ",vm:"1",name:"CT Image Frame Type Sequence",retired:""},"0x00189330":{keyword:"XRayTubeCurrentInmA",vr:"FD",vm:"1",name:"X-Ray Tube Current in mA",retired:""},"0x00189332":{keyword:"ExposureInmAs",vr:"FD",vm:"1",name:"Exposure in mAs",retired:""},"0x00189333":{keyword:"ConstantVolumeFlag",vr:"CS",vm:"1",name:"Constant Volume Flag",retired:""},"0x00189334":{keyword:"FluoroscopyFlag",vr:"CS",vm:"1",name:"Fluoroscopy Flag",retired:""},"0x00189335":{keyword:"DistanceSourceToDataCollectionCenter",vr:"FD",vm:"1",name:"Distance Source to Data Collection Center",retired:""},"0x00189337":{keyword:"ContrastBolusAgentNumber",vr:"US",vm:"1",name:"Contrast/Bolus Agent Number",retired:""},"0x00189338":{keyword:"ContrastBolusIngredientCodeSequence",vr:"SQ",vm:"1",name:"Contrast/Bolus Ingredient Code Sequence",retired:""},"0x00189340":{keyword:"ContrastAdministrationProfileSequence",vr:"SQ",vm:"1",name:"Contrast Administration Profile Sequence",retired:""},"0x00189341":{keyword:"ContrastBolusUsageSequence",vr:"SQ",vm:"1",name:"Contrast/Bolus Usage Sequence",retired:""},"0x00189342":{keyword:"ContrastBolusAgentAdministered",vr:"CS",vm:"1",name:"Contrast/Bolus Agent Administered",retired:""},"0x00189343":{keyword:"ContrastBolusAgentDetected",vr:"CS",vm:"1",name:"Contrast/Bolus Agent Detected",retired:""},"0x00189344":{keyword:"ContrastBolusAgentPhase",vr:"CS",vm:"1",name:"Contrast/Bolus Agent Phase",retired:""},"0x00189345":{keyword:"CTDIvol",vr:"FD",vm:"1",name:"CTDIvol",retired:""},"0x00189346":{keyword:"CTDIPhantomTypeCodeSequence",vr:"SQ",vm:"1",name:"CTDI Phantom Type Code Sequence",retired:""},"0x00189351":{keyword:"CalciumScoringMassFactorPatient",vr:"FL",vm:"1",name:"Calcium Scoring Mass Factor Patient",retired:""},"0x00189352":{keyword:"CalciumScoringMassFactorDevice",vr:"FL",vm:"3",name:"Calcium Scoring Mass Factor Device",retired:""},"0x00189353":{keyword:"EnergyWeightingFactor",vr:"FL",vm:"1",name:"Energy Weighting Factor",retired:""},"0x00189360":{keyword:"CTAdditionalXRaySourceSequence",vr:"SQ",vm:"1",name:"CT Additional X-Ray Source Sequence",retired:""},"0x00189361":{keyword:"MultienergyCTAcquisition",vr:"CS",vm:"1",name:"Multi-energy CT Acquisition",retired:""},"0x00189362":{keyword:"MultienergyCTAcquisitionSequence",vr:"SQ",vm:"1",name:"Multi-energy CT Acquisition Sequence",retired:""},"0x00189363":{keyword:"MultienergyCTProcessingSequence",vr:"SQ",vm:"1",name:"Multi-energy CT Processing Sequence",retired:""},"0x00189364":{keyword:"MultienergyCTCharacteristicsSequence",vr:"SQ",vm:"1",name:"Multi-energy CT Characteristics Sequence",retired:""},"0x00189365":{keyword:"MultienergyCTXRaySourceSequence",vr:"SQ",vm:"1",name:"Multi-energy CT X-Ray Source Sequence",retired:""},"0x00189366":{keyword:"XRaySourceIndex",vr:"US",vm:"1",name:"X-Ray Source Index",retired:""},"0x00189367":{keyword:"XRaySourceID",vr:"UC",vm:"1",name:"X-Ray Source ID",retired:""},"0x00189368":{keyword:"MultienergySourceTechnique",vr:"CS",vm:"1",name:"Multi-energy Source Technique",retired:""},"0x00189369":{keyword:"SourceStartDateTime",vr:"DT",vm:"1",name:"Source Start DateTime",retired:""},"0x0018936A":{keyword:"SourceEndDateTime",vr:"DT",vm:"1",name:"Source End DateTime",retired:""},"0x0018936B":{keyword:"SwitchingPhaseNumber",vr:"US",vm:"1",name:"Switching Phase Number",retired:""},"0x0018936C":{keyword:"SwitchingPhaseNominalDuration",vr:"DS",vm:"1",name:"Switching Phase Nominal Duration",retired:""},"0x0018936D":{keyword:"SwitchingPhaseTransitionDuration",vr:"DS",vm:"1",name:"Switching Phase Transition Duration",retired:""},"0x0018936E":{keyword:"EffectiveBinEnergy",vr:"DS",vm:"1",name:"Effective Bin Energy",retired:""},"0x0018936F":{keyword:"MultienergyCTXRayDetectorSequence",vr:"SQ",vm:"1",name:"Multi-energy CT X-Ray Detector Sequence",retired:""},"0x00189370":{keyword:"XRayDetectorIndex",vr:"US",vm:"1",name:"X-Ray Detector Index",retired:""},"0x00189371":{keyword:"XRayDetectorID",vr:"UC",vm:"1",name:"X-Ray Detector ID",retired:""},"0x00189372":{keyword:"MultienergyDetectorType",vr:"CS",vm:"1",name:"Multi-energy Detector Type",retired:""},"0x00189373":{keyword:"XRayDetectorLabel",vr:"ST",vm:"1",name:"X-Ray Detector Label",retired:""},"0x00189374":{keyword:"NominalMaxEnergy",vr:"DS",vm:"1",name:"Nominal Max Energy",retired:""},"0x00189375":{keyword:"NominalMinEnergy",vr:"DS",vm:"1",name:"Nominal Min Energy",retired:""},"0x00189376":{keyword:"ReferencedXRayDetectorIndex",vr:"US",vm:"1-n",name:"Referenced X-Ray Detector Index",retired:""},"0x00189377":{keyword:"ReferencedXRaySourceIndex",vr:"US",vm:"1-n",name:"Referenced X-Ray Source Index",retired:""},"0x00189378":{keyword:"ReferencedPathIndex",vr:"US",vm:"1-n",name:"Referenced Path Index",retired:""},"0x00189379":{keyword:"MultienergyCTPathSequence",vr:"SQ",vm:"1",name:"Multi-energy CT Path Sequence",retired:""},"0x0018937A":{keyword:"MultienergyCTPathIndex",vr:"US",vm:"1",name:"Multi-energy CT Path Index",retired:""},"0x0018937B":{keyword:"MultienergyAcquisitionDescription",vr:"UT",vm:"1",name:"Multi-energy Acquisition Description",retired:""},"0x0018937C":{keyword:"MonoenergeticEnergyEquivalent",vr:"FD",vm:"1",name:"Monoenergetic Energy Equivalent",retired:""},"0x0018937D":{keyword:"MaterialCodeSequence",vr:"SQ",vm:"1",name:"Material Code Sequence",retired:""},"0x0018937E":{keyword:"DecompositionMethod",vr:"CS",vm:"1",name:"Decomposition Method",retired:""},"0x0018937F":{keyword:"DecompositionDescription",vr:"UT",vm:"1",name:"Decomposition Description",retired:""},"0x00189380":{keyword:"DecompositionAlgorithmIdentificationSequence",vr:"SQ",vm:"1",name:"Decomposition Algorithm Identification Sequence",retired:""},"0x00189381":{keyword:"DecompositionMaterialSequence",vr:"SQ",vm:"1",name:"Decomposition Material Sequence",retired:""},"0x00189382":{keyword:"MaterialAttenuationSequence",vr:"SQ",vm:"1",name:"Material Attenuation Sequence",retired:""},"0x00189383":{keyword:"PhotonEnergy",vr:"DS",vm:"1",name:"Photon Energy",retired:""},"0x00189384":{keyword:"XRayMassAttenuationCoefficient",vr:"DS",vm:"1",name:"X-Ray Mass Attenuation Coefficient",retired:""},"0x00189401":{keyword:"ProjectionPixelCalibrationSequence",vr:"SQ",vm:"1",name:"Projection Pixel Calibration Sequence",retired:""},"0x00189402":{keyword:"DistanceSourceToIsocenter",vr:"FL",vm:"1",name:"Distance Source to Isocenter",retired:""},"0x00189403":{keyword:"DistanceObjectToTableTop",vr:"FL",vm:"1",name:"Distance Object to Table Top",retired:""},"0x00189404":{keyword:"ObjectPixelSpacingInCenterOfBeam",vr:"FL",vm:"2",name:"Object Pixel Spacing in Center of Beam",retired:""},"0x00189405":{keyword:"PositionerPositionSequence",vr:"SQ",vm:"1",name:"Positioner Position Sequence",retired:""},"0x00189406":{keyword:"TablePositionSequence",vr:"SQ",vm:"1",name:"Table Position Sequence",retired:""},"0x00189407":{keyword:"CollimatorShapeSequence",vr:"SQ",vm:"1",name:"Collimator Shape Sequence",retired:""},"0x00189410":{keyword:"PlanesInAcquisition",vr:"CS",vm:"1",name:"Planes in Acquisition",retired:""},"0x00189412":{keyword:"XAXRFFrameCharacteristicsSequence",vr:"SQ",vm:"1",name:"XA/XRF Frame Characteristics Sequence",retired:""},"0x00189417":{keyword:"FrameAcquisitionSequence",vr:"SQ",vm:"1",name:"Frame Acquisition Sequence",retired:""},"0x00189420":{keyword:"XRayReceptorType",vr:"CS",vm:"1",name:"X-Ray Receptor Type",retired:""},"0x00189423":{keyword:"AcquisitionProtocolName",vr:"LO",vm:"1",name:"Acquisition Protocol Name",retired:""},"0x00189424":{keyword:"AcquisitionProtocolDescription",vr:"LT",vm:"1",name:"Acquisition Protocol Description",retired:""},"0x00189425":{keyword:"ContrastBolusIngredientOpaque",vr:"CS",vm:"1",name:"Contrast/Bolus Ingredient Opaque",retired:""},"0x00189426":{keyword:"DistanceReceptorPlaneToDetectorHousing",vr:"FL",vm:"1",name:"Distance Receptor Plane to Detector Housing",retired:""},"0x00189427":{keyword:"IntensifierActiveShape",vr:"CS",vm:"1",name:"Intensifier Active Shape",retired:""},"0x00189428":{keyword:"IntensifierActiveDimensions",vr:"FL",vm:"1-2",name:"Intensifier Active Dimension(s)",retired:""},"0x00189429":{keyword:"PhysicalDetectorSize",vr:"FL",vm:"2",name:"Physical Detector Size",retired:""},"0x00189430":{keyword:"PositionOfIsocenterProjection",vr:"FL",vm:"2",name:"Position of Isocenter Projection",retired:""},"0x00189432":{keyword:"FieldOfViewSequence",vr:"SQ",vm:"1",name:"Field of View Sequence",retired:""},"0x00189433":{keyword:"FieldOfViewDescription",vr:"LO",vm:"1",name:"Field of View Description",retired:""},"0x00189434":{keyword:"ExposureControlSensingRegionsSequence",vr:"SQ",vm:"1",name:"Exposure Control Sensing Regions Sequence",retired:""},"0x00189435":{keyword:"ExposureControlSensingRegionShape",vr:"CS",vm:"1",name:"Exposure Control Sensing Region Shape",retired:""},"0x00189436":{keyword:"ExposureControlSensingRegionLeftVerticalEdge",vr:"SS",vm:"1",name:"Exposure Control Sensing Region Left Vertical Edge",retired:""},"0x00189437":{keyword:"ExposureControlSensingRegionRightVerticalEdge",vr:"SS",vm:"1",name:"Exposure Control Sensing Region Right Vertical Edge",retired:""},"0x00189438":{keyword:"ExposureControlSensingRegionUpperHorizontalEdge",vr:"SS",vm:"1",name:"Exposure Control Sensing Region Upper Horizontal Edge",retired:""},"0x00189439":{keyword:"ExposureControlSensingRegionLowerHorizontalEdge",vr:"SS",vm:"1",name:"Exposure Control Sensing Region Lower Horizontal Edge",retired:""},"0x00189440":{keyword:"CenterOfCircularExposureControlSensingRegion",vr:"SS",vm:"2",name:"Center of Circular Exposure Control Sensing Region",retired:""},"0x00189441":{keyword:"RadiusOfCircularExposureControlSensingRegion",vr:"US",vm:"1",name:"Radius of Circular Exposure Control Sensing Region",retired:""},"0x00189442":{keyword:"VerticesOfThePolygonalExposureControlSensingRegion",vr:"SS",vm:"2-n",name:"Vertices of the Polygonal Exposure Control Sensing Region",retired:""},"0x00189445":{keyword:"",vr:"OB",vm:"1",name:"Retired-blank",retired:"Retired"},"0x00189447":{keyword:"ColumnAngulationPatient",vr:"FL",vm:"1",name:"Column Angulation (Patient)",retired:""},"0x00189449":{keyword:"BeamAngle",vr:"FL",vm:"1",name:"Beam Angle",retired:""},"0x00189451":{keyword:"FrameDetectorParametersSequence",vr:"SQ",vm:"1",name:"Frame Detector Parameters Sequence",retired:""},"0x00189452":{keyword:"CalculatedAnatomyThickness",vr:"FL",vm:"1",name:"Calculated Anatomy Thickness",retired:""},"0x00189455":{keyword:"CalibrationSequence",vr:"SQ",vm:"1",name:"Calibration Sequence",retired:""},"0x00189456":{keyword:"ObjectThicknessSequence",vr:"SQ",vm:"1",name:"Object Thickness Sequence",retired:""},"0x00189457":{keyword:"PlaneIdentification",vr:"CS",vm:"1",name:"Plane Identification",retired:""},"0x00189461":{keyword:"FieldOfViewDimensionsInFloat",vr:"FL",vm:"1-2",name:"Field of View Dimension(s) in Float",retired:""},"0x00189462":{keyword:"IsocenterReferenceSystemSequence",vr:"SQ",vm:"1",name:"Isocenter Reference System Sequence",retired:""},"0x00189463":{keyword:"PositionerIsocenterPrimaryAngle",vr:"FL",vm:"1",name:"Positioner Isocenter Primary Angle",retired:""},"0x00189464":{keyword:"PositionerIsocenterSecondaryAngle",vr:"FL",vm:"1",name:"Positioner Isocenter Secondary Angle",retired:""},"0x00189465":{keyword:"PositionerIsocenterDetectorRotationAngle",vr:"FL",vm:"1",name:"Positioner Isocenter Detector Rotation Angle",retired:""},"0x00189466":{keyword:"TableXPositionToIsocenter",vr:"FL",vm:"1",name:"Table X Position to Isocenter",retired:""},"0x00189467":{keyword:"TableYPositionToIsocenter",vr:"FL",vm:"1",name:"Table Y Position to Isocenter",retired:""},"0x00189468":{keyword:"TableZPositionToIsocenter",vr:"FL",vm:"1",name:"Table Z Position to Isocenter",retired:""},"0x00189469":{keyword:"TableHorizontalRotationAngle",vr:"FL",vm:"1",name:"Table Horizontal Rotation Angle",retired:""},"0x00189470":{keyword:"TableHeadTiltAngle",vr:"FL",vm:"1",name:"Table Head Tilt Angle",retired:""},"0x00189471":{keyword:"TableCradleTiltAngle",vr:"FL",vm:"1",name:"Table Cradle Tilt Angle",retired:""},"0x00189472":{keyword:"FrameDisplayShutterSequence",vr:"SQ",vm:"1",name:"Frame Display Shutter Sequence",retired:""},"0x00189473":{keyword:"AcquiredImageAreaDoseProduct",vr:"FL",vm:"1",name:"Acquired Image Area Dose Product",retired:""},"0x00189474":{keyword:"CArmPositionerTabletopRelationship",vr:"CS",vm:"1",name:"C-arm Positioner Tabletop Relationship",retired:""},"0x00189476":{keyword:"XRayGeometrySequence",vr:"SQ",vm:"1",name:"X-Ray Geometry Sequence",retired:""},"0x00189477":{keyword:"IrradiationEventIdentificationSequence",vr:"SQ",vm:"1",name:"Irradiation Event Identification Sequence",retired:""},"0x00189504":{keyword:"XRay3DFrameTypeSequence",vr:"SQ",vm:"1",name:"X-Ray 3D Frame Type Sequence",retired:""},"0x00189506":{keyword:"ContributingSourcesSequence",vr:"SQ",vm:"1",name:"Contributing Sources Sequence",retired:""},"0x00189507":{keyword:"XRay3DAcquisitionSequence",vr:"SQ",vm:"1",name:"X-Ray 3D Acquisition Sequence",retired:""},"0x00189508":{keyword:"PrimaryPositionerScanArc",vr:"FL",vm:"1",name:"Primary Positioner Scan Arc",retired:""},"0x00189509":{keyword:"SecondaryPositionerScanArc",vr:"FL",vm:"1",name:"Secondary Positioner Scan Arc",retired:""},"0x00189510":{keyword:"PrimaryPositionerScanStartAngle",vr:"FL",vm:"1",name:"Primary Positioner Scan Start Angle",retired:""},"0x00189511":{keyword:"SecondaryPositionerScanStartAngle",vr:"FL",vm:"1",name:"Secondary Positioner Scan Start Angle",retired:""},"0x00189514":{keyword:"PrimaryPositionerIncrement",vr:"FL",vm:"1",name:"Primary Positioner Increment",retired:""},"0x00189515":{keyword:"SecondaryPositionerIncrement",vr:"FL",vm:"1",name:"Secondary Positioner Increment",retired:""},"0x00189516":{keyword:"StartAcquisitionDateTime",vr:"DT",vm:"1",name:"Start Acquisition DateTime",retired:""},"0x00189517":{keyword:"EndAcquisitionDateTime",vr:"DT",vm:"1",name:"End Acquisition DateTime",retired:""},"0x00189518":{keyword:"PrimaryPositionerIncrementSign",vr:"SS",vm:"1",name:"Primary Positioner Increment Sign",retired:""},"0x00189519":{keyword:"SecondaryPositionerIncrementSign",vr:"SS",vm:"1",name:"Secondary Positioner Increment Sign",retired:""},"0x00189524":{keyword:"ApplicationName",vr:"LO",vm:"1",name:"Application Name",retired:""},"0x00189525":{keyword:"ApplicationVersion",vr:"LO",vm:"1",name:"Application Version",retired:""},"0x00189526":{keyword:"ApplicationManufacturer",vr:"LO",vm:"1",name:"Application Manufacturer",retired:""},"0x00189527":{keyword:"AlgorithmType",vr:"CS",vm:"1",name:"Algorithm Type",retired:""},"0x00189528":{keyword:"AlgorithmDescription",vr:"LO",vm:"1",name:"Algorithm Description",retired:""},"0x00189530":{keyword:"XRay3DReconstructionSequence",vr:"SQ",vm:"1",name:"X-Ray 3D Reconstruction Sequence",retired:""},"0x00189531":{keyword:"ReconstructionDescription",vr:"LO",vm:"1",name:"Reconstruction Description",retired:""},"0x00189538":{keyword:"PerProjectionAcquisitionSequence",vr:"SQ",vm:"1",name:"Per Projection Acquisition Sequence",retired:""},"0x00189541":{keyword:"DetectorPositionSequence",vr:"SQ",vm:"1",name:"Detector Position Sequence",retired:""},"0x00189542":{keyword:"XRayAcquisitionDoseSequence",vr:"SQ",vm:"1",name:"X-Ray Acquisition Dose Sequence",retired:""},"0x00189543":{keyword:"XRaySourceIsocenterPrimaryAngle",vr:"FD",vm:"1",name:"X-Ray Source Isocenter Primary Angle",retired:""},"0x00189544":{keyword:"XRaySourceIsocenterSecondaryAngle",vr:"FD",vm:"1",name:"X-Ray Source Isocenter Secondary Angle",retired:""},"0x00189545":{keyword:"BreastSupportIsocenterPrimaryAngle",vr:"FD",vm:"1",name:"Breast Support Isocenter Primary Angle",retired:""},"0x00189546":{keyword:"BreastSupportIsocenterSecondaryAngle",vr:"FD",vm:"1",name:"Breast Support Isocenter Secondary Angle",retired:""},"0x00189547":{keyword:"BreastSupportXPositionToIsocenter",vr:"FD",vm:"1",name:"Breast Support X Position to Isocenter",retired:""},"0x00189548":{keyword:"BreastSupportYPositionToIsocenter",vr:"FD",vm:"1",name:"Breast Support Y Position to Isocenter",retired:""},"0x00189549":{keyword:"BreastSupportZPositionToIsocenter",vr:"FD",vm:"1",name:"Breast Support Z Position to Isocenter",retired:""},"0x00189550":{keyword:"DetectorIsocenterPrimaryAngle",vr:"FD",vm:"1",name:"Detector Isocenter Primary Angle",retired:""},"0x00189551":{keyword:"DetectorIsocenterSecondaryAngle",vr:"FD",vm:"1",name:"Detector Isocenter Secondary Angle",retired:""},"0x00189552":{keyword:"DetectorXPositionToIsocenter",vr:"FD",vm:"1",name:"Detector X Position to Isocenter",retired:""},"0x00189553":{keyword:"DetectorYPositionToIsocenter",vr:"FD",vm:"1",name:"Detector Y Position to Isocenter",retired:""},"0x00189554":{keyword:"DetectorZPositionToIsocenter",vr:"FD",vm:"1",name:"Detector Z Position to Isocenter",retired:""},"0x00189555":{keyword:"XRayGridSequence",vr:"SQ",vm:"1",name:"X-Ray Grid Sequence",retired:""},"0x00189556":{keyword:"XRayFilterSequence",vr:"SQ",vm:"1",name:"X-Ray Filter Sequence",retired:""},"0x00189557":{keyword:"DetectorActiveAreaTLHCPosition",vr:"FD",vm:"3",name:"Detector Active Area TLHC Position",retired:""},"0x00189558":{keyword:"DetectorActiveAreaOrientation",vr:"FD",vm:"6",name:"Detector Active Area Orientation",retired:""},"0x00189559":{keyword:"PositionerPrimaryAngleDirection",vr:"CS",vm:"1",name:"Positioner Primary Angle Direction",retired:""},"0x00189601":{keyword:"DiffusionBMatrixSequence",vr:"SQ",vm:"1",name:"Diffusion b-matrix Sequence",retired:""},"0x00189602":{keyword:"DiffusionBValueXX",vr:"FD",vm:"1",name:"Diffusion b-value XX",retired:""},"0x00189603":{keyword:"DiffusionBValueXY",vr:"FD",vm:"1",name:"Diffusion b-value XY",retired:""},"0x00189604":{keyword:"DiffusionBValueXZ",vr:"FD",vm:"1",name:"Diffusion b-value XZ",retired:""},"0x00189605":{keyword:"DiffusionBValueYY",vr:"FD",vm:"1",name:"Diffusion b-value YY",retired:""},"0x00189606":{keyword:"DiffusionBValueYZ",vr:"FD",vm:"1",name:"Diffusion b-value YZ",retired:""},"0x00189607":{keyword:"DiffusionBValueZZ",vr:"FD",vm:"1",name:"Diffusion b-value ZZ",retired:""},"0x00189621":{keyword:"FunctionalMRSequence",vr:"SQ",vm:"1",name:"Functional MR Sequence",retired:""},"0x00189622":{keyword:"FunctionalSettlingPhaseFramesPresent",vr:"CS",vm:"1",name:"Functional Settling Phase Frames Present",retired:""},"0x00189623":{keyword:"FunctionalSyncPulse",vr:"DT",vm:"1",name:"Functional Sync Pulse",retired:""},"0x00189624":{keyword:"SettlingPhaseFrame",vr:"CS",vm:"1",name:"Settling Phase Frame",retired:""},"0x00189701":{keyword:"DecayCorrectionDateTime",vr:"DT",vm:"1",name:"Decay Correction DateTime",retired:""},"0x00189715":{keyword:"StartDensityThreshold",vr:"FD",vm:"1",name:"Start Density Threshold",retired:""},"0x00189716":{keyword:"StartRelativeDensityDifferenceThreshold",vr:"FD",vm:"1",name:"Start Relative Density Difference Threshold",retired:""},"0x00189717":{keyword:"StartCardiacTriggerCountThreshold",vr:"FD",vm:"1",name:"Start Cardiac Trigger Count Threshold",retired:""},"0x00189718":{keyword:"StartRespiratoryTriggerCountThreshold",vr:"FD",vm:"1",name:"Start Respiratory Trigger Count Threshold",retired:""},"0x00189719":{keyword:"TerminationCountsThreshold",vr:"FD",vm:"1",name:"Termination Counts Threshold",retired:""},"0x00189720":{keyword:"TerminationDensityThreshold",vr:"FD",vm:"1",name:"Termination Density Threshold",retired:""},"0x00189721":{keyword:"TerminationRelativeDensityThreshold",vr:"FD",vm:"1",name:"Termination Relative Density Threshold",retired:""},"0x00189722":{keyword:"TerminationTimeThreshold",vr:"FD",vm:"1",name:"Termination Time Threshold",retired:""},"0x00189723":{keyword:"TerminationCardiacTriggerCountThreshold",vr:"FD",vm:"1",name:"Termination Cardiac Trigger Count Threshold",retired:""},"0x00189724":{keyword:"TerminationRespiratoryTriggerCountThreshold",vr:"FD",vm:"1",name:"Termination Respiratory Trigger Count Threshold",retired:""},"0x00189725":{keyword:"DetectorGeometry",vr:"CS",vm:"1",name:"Detector Geometry",retired:""},"0x00189726":{keyword:"TransverseDetectorSeparation",vr:"FD",vm:"1",name:"Transverse Detector Separation",retired:""},"0x00189727":{keyword:"AxialDetectorDimension",vr:"FD",vm:"1",name:"Axial Detector Dimension",retired:""},"0x00189729":{keyword:"RadiopharmaceuticalAgentNumber",vr:"US",vm:"1",name:"Radiopharmaceutical Agent Number",retired:""},"0x00189732":{keyword:"PETFrameAcquisitionSequence",vr:"SQ",vm:"1",name:"PET Frame Acquisition Sequence",retired:""},"0x00189733":{keyword:"PETDetectorMotionDetailsSequence",vr:"SQ",vm:"1",name:"PET Detector Motion Details Sequence",retired:""},"0x00189734":{keyword:"PETTableDynamicsSequence",vr:"SQ",vm:"1",name:"PET Table Dynamics Sequence",retired:""},"0x00189735":{keyword:"PETPositionSequence",vr:"SQ",vm:"1",name:"PET Position Sequence",retired:""},"0x00189736":{keyword:"PETFrameCorrectionFactorsSequence",vr:"SQ",vm:"1",name:"PET Frame Correction Factors Sequence",retired:""},"0x00189737":{keyword:"RadiopharmaceuticalUsageSequence",vr:"SQ",vm:"1",name:"Radiopharmaceutical Usage Sequence",retired:""},"0x00189738":{keyword:"AttenuationCorrectionSource",vr:"CS",vm:"1",name:"Attenuation Correction Source",retired:""},"0x00189739":{keyword:"NumberOfIterations",vr:"US",vm:"1",name:"Number of Iterations",retired:""},"0x00189740":{keyword:"NumberOfSubsets",vr:"US",vm:"1",name:"Number of Subsets",retired:""},"0x00189749":{keyword:"PETReconstructionSequence",vr:"SQ",vm:"1",name:"PET Reconstruction Sequence",retired:""},"0x00189751":{keyword:"PETFrameTypeSequence",vr:"SQ",vm:"1",name:"PET Frame Type Sequence",retired:""},"0x00189755":{keyword:"TimeOfFlightInformationUsed",vr:"CS",vm:"1",name:"Time of Flight Information Used",retired:""},"0x00189756":{keyword:"ReconstructionType",vr:"CS",vm:"1",name:"Reconstruction Type",retired:""},"0x00189758":{keyword:"DecayCorrected",vr:"CS",vm:"1",name:"Decay Corrected",retired:""},"0x00189759":{keyword:"AttenuationCorrected",vr:"CS",vm:"1",name:"Attenuation Corrected",retired:""},"0x00189760":{keyword:"ScatterCorrected",vr:"CS",vm:"1",name:"Scatter Corrected",retired:""},"0x00189761":{keyword:"DeadTimeCorrected",vr:"CS",vm:"1",name:"Dead Time Corrected",retired:""},"0x00189762":{keyword:"GantryMotionCorrected",vr:"CS",vm:"1",name:"Gantry Motion Corrected",retired:""},"0x00189763":{keyword:"PatientMotionCorrected",vr:"CS",vm:"1",name:"Patient Motion Corrected",retired:""},"0x00189764":{keyword:"CountLossNormalizationCorrected",vr:"CS",vm:"1",name:"Count Loss Normalization Corrected",retired:""},"0x00189765":{keyword:"RandomsCorrected",vr:"CS",vm:"1",name:"Randoms Corrected",retired:""},"0x00189766":{keyword:"NonUniformRadialSamplingCorrected",vr:"CS",vm:"1",name:"Non-uniform Radial Sampling Corrected",retired:""},"0x00189767":{keyword:"SensitivityCalibrated",vr:"CS",vm:"1",name:"Sensitivity Calibrated",retired:""},"0x00189768":{keyword:"DetectorNormalizationCorrection",vr:"CS",vm:"1",name:"Detector Normalization Correction",retired:""},"0x00189769":{keyword:"IterativeReconstructionMethod",vr:"CS",vm:"1",name:"Iterative Reconstruction Method",retired:""},"0x00189770":{keyword:"AttenuationCorrectionTemporalRelationship",vr:"CS",vm:"1",name:"Attenuation Correction Temporal Relationship",retired:""},"0x00189771":{keyword:"PatientPhysiologicalStateSequence",vr:"SQ",vm:"1",name:"Patient Physiological State Sequence",retired:""},"0x00189772":{keyword:"PatientPhysiologicalStateCodeSequence",vr:"SQ",vm:"1",name:"Patient Physiological State Code Sequence",retired:""},"0x00189801":{keyword:"DepthsOfFocus",vr:"FD",vm:"1-n",name:"Depth(s) of Focus",retired:""},"0x00189803":{keyword:"ExcludedIntervalsSequence",vr:"SQ",vm:"1",name:"Excluded Intervals Sequence",retired:""},"0x00189804":{keyword:"ExclusionStartDateTime",vr:"DT",vm:"1",name:"Exclusion Start DateTime",retired:""},"0x00189805":{keyword:"ExclusionDuration",vr:"FD",vm:"1",name:"Exclusion Duration",retired:""},"0x00189806":{keyword:"USImageDescriptionSequence",vr:"SQ",vm:"1",name:"US Image Description Sequence",retired:""},"0x00189807":{keyword:"ImageDataTypeSequence",vr:"SQ",vm:"1",name:"Image Data Type Sequence",retired:""},"0x00189808":{keyword:"DataType",vr:"CS",vm:"1",name:"Data Type",retired:""},"0x00189809":{keyword:"TransducerScanPatternCodeSequence",vr:"SQ",vm:"1",name:"Transducer Scan Pattern Code Sequence",retired:""},"0x0018980B":{keyword:"AliasedDataType",vr:"CS",vm:"1",name:"Aliased Data Type",retired:""},"0x0018980C":{keyword:"PositionMeasuringDeviceUsed",vr:"CS",vm:"1",name:"Position Measuring Device Used",retired:""},"0x0018980D":{keyword:"TransducerGeometryCodeSequence",vr:"SQ",vm:"1",name:"Transducer Geometry Code Sequence",retired:""},"0x0018980E":{keyword:"TransducerBeamSteeringCodeSequence",vr:"SQ",vm:"1",name:"Transducer Beam Steering Code Sequence",retired:""},"0x0018980F":{keyword:"TransducerApplicationCodeSequence",vr:"SQ",vm:"1",name:"Transducer Application Code Sequence",retired:""},"0x00189810":{keyword:"ZeroVelocityPixelValue",vr:"US or SS",vm:"1",name:"Zero Velocity Pixel Value",retired:""},"0x00189821":{keyword:"PhotoacousticExcitationCharacteristicsSequence",vr:"SQ",vm:"1",name:"Photoacoustic Excitation Characteristics Sequence",retired:""},"0x00189822":{keyword:"ExcitationSpectralWidth",vr:"FD",vm:"1",name:"Excitation Spectral Width",retired:""},"0x00189823":{keyword:"ExcitationEnergy",vr:"FD",vm:"1",name:"Excitation Energy",retired:""},"0x00189824":{keyword:"ExcitationPulseDuration",vr:"FD",vm:"1",name:"Excitation Pulse Duration",retired:""},"0x00189825":{keyword:"ExcitationWavelengthSequence",vr:"SQ",vm:"1",name:"Excitation Wavelength Sequence",retired:""},"0x00189826":{keyword:"ExcitationWavelength",vr:"FD",vm:"1",name:"Excitation Wavelength",retired:""},"0x00189828":{keyword:"IlluminationTranslationFlag",vr:"CS",vm:"1",name:"Illumination Translation Flag",retired:""},"0x00189829":{keyword:"AcousticCouplingMediumFlag",vr:"CS",vm:"1",name:"Acoustic Coupling Medium Flag",retired:""},"0x0018982A":{keyword:"AcousticCouplingMediumCodeSequence",vr:"SQ",vm:"1",name:"Acoustic Coupling Medium Code Sequence",retired:""},"0x0018982B":{keyword:"AcousticCouplingMediumTemperature",vr:"FD",vm:"1",name:"Acoustic Coupling Medium Temperature",retired:""},"0x0018982C":{keyword:"TransducerResponseSequence",vr:"SQ",vm:"1",name:"Transducer Response Sequence",retired:""},"0x0018982D":{keyword:"CenterFrequency",vr:"FD",vm:"1",name:"Center Frequency",retired:""},"0x0018982E":{keyword:"FractionalBandwidth",vr:"FD",vm:"1",name:"Fractional Bandwidth",retired:""},"0x0018982F":{keyword:"LowerCutoffFrequency",vr:"FD",vm:"1",name:"Lower Cutoff Frequency",retired:""},"0x00189830":{keyword:"UpperCutoffFrequency",vr:"FD",vm:"1",name:"Upper Cutoff Frequency",retired:""},"0x00189831":{keyword:"TransducerTechnologySequence",vr:"SQ",vm:"1",name:"Transducer Technology Sequence",retired:""},"0x00189832":{keyword:"SoundSpeedCorrectionMechanismCodeSequence",vr:"SQ",vm:"1",name:"Sound Speed Correction Mechanism Code Sequence",retired:""},"0x00189833":{keyword:"ObjectSoundSpeed",vr:"FD",vm:"1",name:"Object Sound Speed",retired:""},"0x00189834":{keyword:"AcousticCouplingMediumSoundSpeed",vr:"FD",vm:"1",name:"Acoustic Coupling Medium Sound Speed",retired:""},"0x00189835":{keyword:"PhotoacousticImageFrameTypeSequence",vr:"SQ",vm:"1",name:"Photoacoustic Image Frame Type Sequence",retired:""},"0x00189836":{keyword:"ImageDataTypeCodeSequence",vr:"SQ",vm:"1",name:"Image Data Type Code Sequence",retired:""},"0x00189900":{keyword:"ReferenceLocationLabel",vr:"LO",vm:"1",name:"Reference Location Label",retired:""},"0x00189901":{keyword:"ReferenceLocationDescription",vr:"UT",vm:"1",name:"Reference Location Description",retired:""},"0x00189902":{keyword:"ReferenceBasisCodeSequence",vr:"SQ",vm:"1",name:"Reference Basis Code Sequence",retired:""},"0x00189903":{keyword:"ReferenceGeometryCodeSequence",vr:"SQ",vm:"1",name:"Reference Geometry Code Sequence",retired:""},"0x00189904":{keyword:"OffsetDistance",vr:"DS",vm:"1",name:"Offset Distance",retired:""},"0x00189905":{keyword:"OffsetDirection",vr:"CS",vm:"1",name:"Offset Direction",retired:""},"0x00189906":{keyword:"PotentialScheduledProtocolCodeSequence",vr:"SQ",vm:"1",name:"Potential Scheduled Protocol Code Sequence",retired:""},"0x00189907":{keyword:"PotentialRequestedProcedureCodeSequence",vr:"SQ",vm:"1",name:"Potential Requested Procedure Code Sequence",retired:""},"0x00189908":{keyword:"PotentialReasonsForProcedure",vr:"UC",vm:"1-n",name:"Potential Reasons for Procedure",retired:""},"0x00189909":{keyword:"PotentialReasonsForProcedureCodeSequence",vr:"SQ",vm:"1",name:"Potential Reasons for Procedure Code Sequence",retired:""},"0x0018990A":{keyword:"PotentialDiagnosticTasks",vr:"UC",vm:"1-n",name:"Potential Diagnostic Tasks",retired:""},"0x0018990B":{keyword:"ContraindicationsCodeSequence",vr:"SQ",vm:"1",name:"Contraindications Code Sequence",retired:""},"0x0018990C":{keyword:"ReferencedDefinedProtocolSequence",vr:"SQ",vm:"1",name:"Referenced Defined Protocol Sequence",retired:""},"0x0018990D":{keyword:"ReferencedPerformedProtocolSequence",vr:"SQ",vm:"1",name:"Referenced Performed Protocol Sequence",retired:""},"0x0018990E":{keyword:"PredecessorProtocolSequence",vr:"SQ",vm:"1",name:"Predecessor Protocol Sequence",retired:""},"0x0018990F":{keyword:"ProtocolPlanningInformation",vr:"UT",vm:"1",name:"Protocol Planning Information",retired:""},"0x00189910":{keyword:"ProtocolDesignRationale",vr:"UT",vm:"1",name:"Protocol Design Rationale",retired:""},"0x00189911":{keyword:"PatientSpecificationSequence",vr:"SQ",vm:"1",name:"Patient Specification Sequence",retired:""},"0x00189912":{keyword:"ModelSpecificationSequence",vr:"SQ",vm:"1",name:"Model Specification Sequence",retired:""},"0x00189913":{keyword:"ParametersSpecificationSequence",vr:"SQ",vm:"1",name:"Parameters Specification Sequence",retired:""},"0x00189914":{keyword:"InstructionSequence",vr:"SQ",vm:"1",name:"Instruction Sequence",retired:""},"0x00189915":{keyword:"InstructionIndex",vr:"US",vm:"1",name:"Instruction Index",retired:""},"0x00189916":{keyword:"InstructionText",vr:"LO",vm:"1",name:"Instruction Text",retired:""},"0x00189917":{keyword:"InstructionDescription",vr:"UT",vm:"1",name:"Instruction Description",retired:""},"0x00189918":{keyword:"InstructionPerformedFlag",vr:"CS",vm:"1",name:"Instruction Performed Flag",retired:""},"0x00189919":{keyword:"InstructionPerformedDateTime",vr:"DT",vm:"1",name:"Instruction Performed DateTime",retired:""},"0x0018991A":{keyword:"InstructionPerformanceComment",vr:"UT",vm:"1",name:"Instruction Performance Comment",retired:""},"0x0018991B":{keyword:"PatientPositioningInstructionSequence",vr:"SQ",vm:"1",name:"Patient Positioning Instruction Sequence",retired:""},"0x0018991C":{keyword:"PositioningMethodCodeSequence",vr:"SQ",vm:"1",name:"Positioning Method Code Sequence",retired:""},"0x0018991D":{keyword:"PositioningLandmarkSequence",vr:"SQ",vm:"1",name:"Positioning Landmark Sequence",retired:""},"0x0018991E":{keyword:"TargetFrameOfReferenceUID",vr:"UI",vm:"1",name:"Target Frame of Reference UID",retired:""},"0x0018991F":{keyword:"AcquisitionProtocolElementSpecificationSequence",vr:"SQ",vm:"1",name:"Acquisition Protocol Element Specification Sequence",retired:""},"0x00189920":{keyword:"AcquisitionProtocolElementSequence",vr:"SQ",vm:"1",name:"Acquisition Protocol Element Sequence",retired:""},"0x00189921":{keyword:"ProtocolElementNumber",vr:"US",vm:"1",name:"Protocol Element Number",retired:""},"0x00189922":{keyword:"ProtocolElementName",vr:"LO",vm:"1",name:"Protocol Element Name",retired:""},"0x00189923":{keyword:"ProtocolElementCharacteristicsSummary",vr:"UT",vm:"1",name:"Protocol Element Characteristics Summary",retired:""},"0x00189924":{keyword:"ProtocolElementPurpose",vr:"UT",vm:"1",name:"Protocol Element Purpose",retired:""},"0x00189930":{keyword:"AcquisitionMotion",vr:"CS",vm:"1",name:"Acquisition Motion",retired:""},"0x00189931":{keyword:"AcquisitionStartLocationSequence",vr:"SQ",vm:"1",name:"Acquisition Start Location Sequence",retired:""},"0x00189932":{keyword:"AcquisitionEndLocationSequence",vr:"SQ",vm:"1",name:"Acquisition End Location Sequence",retired:""},"0x00189933":{keyword:"ReconstructionProtocolElementSpecificationSequence",vr:"SQ",vm:"1",name:"Reconstruction Protocol Element Specification Sequence",retired:""},"0x00189934":{keyword:"ReconstructionProtocolElementSequence",vr:"SQ",vm:"1",name:"Reconstruction Protocol Element Sequence",retired:""},"0x00189935":{keyword:"StorageProtocolElementSpecificationSequence",vr:"SQ",vm:"1",name:"Storage Protocol Element Specification Sequence",retired:""},"0x00189936":{keyword:"StorageProtocolElementSequence",vr:"SQ",vm:"1",name:"Storage Protocol Element Sequence",retired:""},"0x00189937":{keyword:"RequestedSeriesDescription",vr:"LO",vm:"1",name:"Requested Series Description",retired:""},"0x00189938":{keyword:"SourceAcquisitionProtocolElementNumber",vr:"US",vm:"1-n",name:"Source Acquisition Protocol Element Number",retired:""},"0x00189939":{keyword:"SourceAcquisitionBeamNumber",vr:"US",vm:"1-n",name:"Source Acquisition Beam Number",retired:""},"0x0018993A":{keyword:"SourceReconstructionProtocolElementNumber",vr:"US",vm:"1-n",name:"Source Reconstruction Protocol Element Number",retired:""},"0x0018993B":{keyword:"ReconstructionStartLocationSequence",vr:"SQ",vm:"1",name:"Reconstruction Start Location Sequence",retired:""},"0x0018993C":{keyword:"ReconstructionEndLocationSequence",vr:"SQ",vm:"1",name:"Reconstruction End Location Sequence",retired:""},"0x0018993D":{keyword:"ReconstructionAlgorithmSequence",vr:"SQ",vm:"1",name:"Reconstruction Algorithm Sequence",retired:""},"0x0018993E":{keyword:"ReconstructionTargetCenterLocationSequence",vr:"SQ",vm:"1",name:"Reconstruction Target Center Location Sequence",retired:""},"0x00189941":{keyword:"ImageFilterDescription",vr:"UT",vm:"1",name:"Image Filter Description",retired:""},"0x00189942":{keyword:"CTDIvolNotificationTrigger",vr:"FD",vm:"1",name:"CTDIvol Notification Trigger",retired:""},"0x00189943":{keyword:"DLPNotificationTrigger",vr:"FD",vm:"1",name:"DLP Notification Trigger",retired:""},"0x00189944":{keyword:"AutoKVPSelectionType",vr:"CS",vm:"1",name:"Auto KVP Selection Type",retired:""},"0x00189945":{keyword:"AutoKVPUpperBound",vr:"FD",vm:"1",name:"Auto KVP Upper Bound",retired:""},"0x00189946":{keyword:"AutoKVPLowerBound",vr:"FD",vm:"1",name:"Auto KVP Lower Bound",retired:""},"0x00189947":{keyword:"ProtocolDefinedPatientPosition",vr:"CS",vm:"1",name:"Protocol Defined Patient Position",retired:""},"0x0018A001":{keyword:"ContributingEquipmentSequence",vr:"SQ",vm:"1",name:"Contributing Equipment Sequence",retired:""},"0x0018A002":{keyword:"ContributionDateTime",vr:"DT",vm:"1",name:"Contribution DateTime",retired:""},"0x0018A003":{keyword:"ContributionDescription",vr:"ST",vm:"1",name:"Contribution Description",retired:""},"0x0020000D":{keyword:"StudyInstanceUID",vr:"UI",vm:"1",name:"Study Instance UID",retired:""},"0x0020000E":{keyword:"SeriesInstanceUID",vr:"UI",vm:"1",name:"Series Instance UID",retired:""},"0x00200010":{keyword:"StudyID",vr:"SH",vm:"1",name:"Study ID",retired:""},"0x00200011":{keyword:"SeriesNumber",vr:"IS",vm:"1",name:"Series Number",retired:""},"0x00200012":{keyword:"AcquisitionNumber",vr:"IS",vm:"1",name:"Acquisition Number",retired:""},"0x00200013":{keyword:"InstanceNumber",vr:"IS",vm:"1",name:"Instance Number",retired:""},"0x00200014":{keyword:"IsotopeNumber",vr:"IS",vm:"1",name:"Isotope Number",retired:"Retired"},"0x00200015":{keyword:"PhaseNumber",vr:"IS",vm:"1",name:"Phase Number",retired:"Retired"},"0x00200016":{keyword:"IntervalNumber",vr:"IS",vm:"1",name:"Interval Number",retired:"Retired"},"0x00200017":{keyword:"TimeSlotNumber",vr:"IS",vm:"1",name:"Time Slot Number",retired:"Retired"},"0x00200018":{keyword:"AngleNumber",vr:"IS",vm:"1",name:"Angle Number",retired:"Retired"},"0x00200019":{keyword:"ItemNumber",vr:"IS",vm:"1",name:"Item Number",retired:""},"0x00200020":{keyword:"PatientOrientation",vr:"CS",vm:"2",name:"Patient Orientation",retired:""},"0x00200022":{keyword:"OverlayNumber",vr:"IS",vm:"1",name:"Overlay Number",retired:"Retired"},"0x00200024":{keyword:"CurveNumber",vr:"IS",vm:"1",name:"Curve Number",retired:"Retired"},"0x00200026":{keyword:"LUTNumber",vr:"IS",vm:"1",name:"LUT Number",retired:"Retired"},"0x00200027":{keyword:"PyramidLabel",vr:"LO",vm:"1",name:"Pyramid Label",retired:""},"0x00200030":{keyword:"ImagePosition",vr:"DS",vm:"3",name:"Image Position",retired:"Retired"},"0x00200032":{keyword:"ImagePositionPatient",vr:"DS",vm:"3",name:"Image Position (Patient)",retired:""},"0x00200035":{keyword:"ImageOrientation",vr:"DS",vm:"6",name:"Image Orientation",retired:"Retired"},"0x00200037":{keyword:"ImageOrientationPatient",vr:"DS",vm:"6",name:"Image Orientation (Patient)",retired:""},"0x00200050":{keyword:"Location",vr:"DS",vm:"1",name:"Location",retired:"Retired"},"0x00200052":{keyword:"FrameOfReferenceUID",vr:"UI",vm:"1",name:"Frame of Reference UID",retired:""},"0x00200060":{keyword:"Laterality",vr:"CS",vm:"1",name:"Laterality",retired:""},"0x00200062":{keyword:"ImageLaterality",vr:"CS",vm:"1",name:"Image Laterality",retired:""},"0x00200070":{keyword:"ImageGeometryType",vr:"LO",vm:"1",name:"Image Geometry Type",retired:"Retired"},"0x00200080":{keyword:"MaskingImage",vr:"CS",vm:"1-n",name:"Masking Image",retired:"Retired"},"0x002000AA":{keyword:"ReportNumber",vr:"IS",vm:"1",name:"Report Number",retired:"Retired"},"0x00200100":{keyword:"TemporalPositionIdentifier",vr:"IS",vm:"1",name:"Temporal Position Identifier",retired:""},"0x00200105":{keyword:"NumberOfTemporalPositions",vr:"IS",vm:"1",name:"Number of Temporal Positions",retired:""},"0x00200110":{keyword:"TemporalResolution",vr:"DS",vm:"1",name:"Temporal Resolution",retired:""},"0x00200200":{keyword:"SynchronizationFrameOfReferenceUID",vr:"UI",vm:"1",name:"Synchronization Frame of Reference UID",retired:""},"0x00200242":{keyword:"SOPInstanceUIDOfConcatenationSource",vr:"UI",vm:"1",name:"SOP Instance UID of Concatenation Source",retired:""},"0x00201000":{keyword:"SeriesInStudy",vr:"IS",vm:"1",name:"Series in Study",retired:"Retired"},"0x00201001":{keyword:"AcquisitionsInSeries",vr:"IS",vm:"1",name:"Acquisitions in Series",retired:"Retired"},"0x00201002":{keyword:"ImagesInAcquisition",vr:"IS",vm:"1",name:"Images in Acquisition",retired:""},"0x00201003":{keyword:"ImagesInSeries",vr:"IS",vm:"1",name:"Images in Series",retired:"Retired"},"0x00201004":{keyword:"AcquisitionsInStudy",vr:"IS",vm:"1",name:"Acquisitions in Study",retired:"Retired"},"0x00201005":{keyword:"ImagesInStudy",vr:"IS",vm:"1",name:"Images in Study",retired:"Retired"},"0x00201020":{keyword:"Reference",vr:"LO",vm:"1-n",name:"Reference",retired:"Retired"},"0x0020103F":{keyword:"TargetPositionReferenceIndicator",vr:"LO",vm:"1",name:"Target Position Reference Indicator",retired:""},"0x00201040":{keyword:"PositionReferenceIndicator",vr:"LO",vm:"1",name:"Position Reference Indicator",retired:""},"0x00201041":{keyword:"SliceLocation",vr:"DS",vm:"1",name:"Slice Location",retired:""},"0x00201070":{keyword:"OtherStudyNumbers",vr:"IS",vm:"1-n",name:"Other Study Numbers",retired:"Retired"},"0x00201200":{keyword:"NumberOfPatientRelatedStudies",vr:"IS",vm:"1",name:"Number of Patient Related Studies",retired:""},"0x00201202":{keyword:"NumberOfPatientRelatedSeries",vr:"IS",vm:"1",name:"Number of Patient Related Series",retired:""},"0x00201204":{keyword:"NumberOfPatientRelatedInstances",vr:"IS",vm:"1",name:"Number of Patient Related Instances",retired:""},"0x00201206":{keyword:"NumberOfStudyRelatedSeries",vr:"IS",vm:"1",name:"Number of Study Related Series",retired:""},"0x00201208":{keyword:"NumberOfStudyRelatedInstances",vr:"IS",vm:"1",name:"Number of Study Related Instances",retired:""},"0x00201209":{keyword:"NumberOfSeriesRelatedInstances",vr:"IS",vm:"1",name:"Number of Series Related Instances",retired:""},"0x00203401":{keyword:"ModifyingDeviceID",vr:"CS",vm:"1",name:"Modifying Device ID",retired:"Retired"},"0x00203402":{keyword:"ModifiedImageID",vr:"CS",vm:"1",name:"Modified Image ID",retired:"Retired"},"0x00203403":{keyword:"ModifiedImageDate",vr:"DA",vm:"1",name:"Modified Image Date",retired:"Retired"},"0x00203404":{keyword:"ModifyingDeviceManufacturer",vr:"LO",vm:"1",name:"Modifying Device Manufacturer",retired:"Retired"},"0x00203405":{keyword:"ModifiedImageTime",vr:"TM",vm:"1",name:"Modified Image Time",retired:"Retired"},"0x00203406":{keyword:"ModifiedImageDescription",vr:"LO",vm:"1",name:"Modified Image Description",retired:"Retired"},"0x00204000":{keyword:"ImageComments",vr:"LT",vm:"1",name:"Image Comments",retired:""},"0x00205000":{keyword:"OriginalImageIdentification",vr:"AT",vm:"1-n",name:"Original Image Identification",retired:"Retired"},"0x00205002":{keyword:"OriginalImageIdentificationNomenclature",vr:"LO",vm:"1-n",name:"Original Image Identification Nomenclature",retired:"Retired"},"0x00209056":{keyword:"StackID",vr:"SH",vm:"1",name:"Stack ID",retired:""},"0x00209057":{keyword:"InStackPositionNumber",vr:"UL",vm:"1",name:"In-Stack Position Number",retired:""},"0x00209071":{keyword:"FrameAnatomySequence",vr:"SQ",vm:"1",name:"Frame Anatomy Sequence",retired:""},"0x00209072":{keyword:"FrameLaterality",vr:"CS",vm:"1",name:"Frame Laterality",retired:""},"0x00209111":{keyword:"FrameContentSequence",vr:"SQ",vm:"1",name:"Frame Content Sequence",retired:""},"0x00209113":{keyword:"PlanePositionSequence",vr:"SQ",vm:"1",name:"Plane Position Sequence",retired:""},"0x00209116":{keyword:"PlaneOrientationSequence",vr:"SQ",vm:"1",name:"Plane Orientation Sequence",retired:""},"0x00209128":{keyword:"TemporalPositionIndex",vr:"UL",vm:"1",name:"Temporal Position Index",retired:""},"0x00209153":{keyword:"NominalCardiacTriggerDelayTime",vr:"FD",vm:"1",name:"Nominal Cardiac Trigger Delay Time",retired:""},"0x00209154":{keyword:"NominalCardiacTriggerTimePriorToRPeak",vr:"FL",vm:"1",name:"Nominal Cardiac Trigger Time Prior To R-Peak",retired:""},"0x00209155":{keyword:"ActualCardiacTriggerTimePriorToRPeak",vr:"FL",vm:"1",name:"Actual Cardiac Trigger Time Prior To R-Peak",retired:""},"0x00209156":{keyword:"FrameAcquisitionNumber",vr:"US",vm:"1",name:"Frame Acquisition Number",retired:""},"0x00209157":{keyword:"DimensionIndexValues",vr:"UL",vm:"1-n",name:"Dimension Index Values",retired:""},"0x00209158":{keyword:"FrameComments",vr:"LT",vm:"1",name:"Frame Comments",retired:""},"0x00209161":{keyword:"ConcatenationUID",vr:"UI",vm:"1",name:"Concatenation UID",retired:""},"0x00209162":{keyword:"InConcatenationNumber",vr:"US",vm:"1",name:"In-concatenation Number",retired:""},"0x00209163":{keyword:"InConcatenationTotalNumber",vr:"US",vm:"1",name:"In-concatenation Total Number",retired:""},"0x00209164":{keyword:"DimensionOrganizationUID",vr:"UI",vm:"1",name:"Dimension Organization UID",retired:""},"0x00209165":{keyword:"DimensionIndexPointer",vr:"AT",vm:"1",name:"Dimension Index Pointer",retired:""},"0x00209167":{keyword:"FunctionalGroupPointer",vr:"AT",vm:"1",name:"Functional Group Pointer",retired:""},"0x00209170":{keyword:"UnassignedSharedConvertedAttributesSequence",vr:"SQ",vm:"1",name:"Unassigned Shared Converted Attributes Sequence",retired:""},"0x00209171":{keyword:"UnassignedPerFrameConvertedAttributesSequence",vr:"SQ",vm:"1",name:"Unassigned Per-Frame Converted Attributes Sequence",retired:""},"0x00209172":{keyword:"ConversionSourceAttributesSequence",vr:"SQ",vm:"1",name:"Conversion Source Attributes Sequence",retired:""},"0x00209213":{keyword:"DimensionIndexPrivateCreator",vr:"LO",vm:"1",name:"Dimension Index Private Creator",retired:""},"0x00209221":{keyword:"DimensionOrganizationSequence",vr:"SQ",vm:"1",name:"Dimension Organization Sequence",retired:""},"0x00209222":{keyword:"DimensionIndexSequence",vr:"SQ",vm:"1",name:"Dimension Index Sequence",retired:""},"0x00209228":{keyword:"ConcatenationFrameOffsetNumber",vr:"UL",vm:"1",name:"Concatenation Frame Offset Number",retired:""},"0x00209238":{keyword:"FunctionalGroupPrivateCreator",vr:"LO",vm:"1",name:"Functional Group Private Creator",retired:""},"0x00209241":{keyword:"NominalPercentageOfCardiacPhase",vr:"FL",vm:"1",name:"Nominal Percentage of Cardiac Phase",retired:""},"0x00209245":{keyword:"NominalPercentageOfRespiratoryPhase",vr:"FL",vm:"1",name:"Nominal Percentage of Respiratory Phase",retired:""},"0x00209246":{keyword:"StartingRespiratoryAmplitude",vr:"FL",vm:"1",name:"Starting Respiratory Amplitude",retired:""},"0x00209247":{keyword:"StartingRespiratoryPhase",vr:"CS",vm:"1",name:"Starting Respiratory Phase",retired:""},"0x00209248":{keyword:"EndingRespiratoryAmplitude",vr:"FL",vm:"1",name:"Ending Respiratory Amplitude",retired:""},"0x00209249":{keyword:"EndingRespiratoryPhase",vr:"CS",vm:"1",name:"Ending Respiratory Phase",retired:""},"0x00209250":{keyword:"RespiratoryTriggerType",vr:"CS",vm:"1",name:"Respiratory Trigger Type",retired:""},"0x00209251":{keyword:"RRIntervalTimeNominal",vr:"FD",vm:"1",name:"R-R Interval Time Nominal",retired:""},"0x00209252":{keyword:"ActualCardiacTriggerDelayTime",vr:"FD",vm:"1",name:"Actual Cardiac Trigger Delay Time",retired:""},"0x00209253":{keyword:"RespiratorySynchronizationSequence",vr:"SQ",vm:"1",name:"Respiratory Synchronization Sequence",retired:""},"0x00209254":{keyword:"RespiratoryIntervalTime",vr:"FD",vm:"1",name:"Respiratory Interval Time",retired:""},"0x00209255":{keyword:"NominalRespiratoryTriggerDelayTime",vr:"FD",vm:"1",name:"Nominal Respiratory Trigger Delay Time",retired:""},"0x00209256":{keyword:"RespiratoryTriggerDelayThreshold",vr:"FD",vm:"1",name:"Respiratory Trigger Delay Threshold",retired:""},"0x00209257":{keyword:"ActualRespiratoryTriggerDelayTime",vr:"FD",vm:"1",name:"Actual Respiratory Trigger Delay Time",retired:""},"0x00209301":{keyword:"ImagePositionVolume",vr:"FD",vm:"3",name:"Image Position (Volume)",retired:""},"0x00209302":{keyword:"ImageOrientationVolume",vr:"FD",vm:"6",name:"Image Orientation (Volume)",retired:""},"0x00209307":{keyword:"UltrasoundAcquisitionGeometry",vr:"CS",vm:"1",name:"Ultrasound Acquisition Geometry",retired:""},"0x00209308":{keyword:"ApexPosition",vr:"FD",vm:"3",name:"Apex Position",retired:""},"0x00209309":{keyword:"VolumeToTransducerMappingMatrix",vr:"FD",vm:"16",name:"Volume to Transducer Mapping Matrix",retired:""},"0x0020930A":{keyword:"VolumeToTableMappingMatrix",vr:"FD",vm:"16",name:"Volume to Table Mapping Matrix",retired:""},"0x0020930B":{keyword:"VolumeToTransducerRelationship",vr:"CS",vm:"1",name:"Volume to Transducer Relationship",retired:""},"0x0020930C":{keyword:"PatientFrameOfReferenceSource",vr:"CS",vm:"1",name:"Patient Frame of Reference Source",retired:""},"0x0020930D":{keyword:"TemporalPositionTimeOffset",vr:"FD",vm:"1",name:"Temporal Position Time Offset",retired:""},"0x0020930E":{keyword:"PlanePositionVolumeSequence",vr:"SQ",vm:"1",name:"Plane Position (Volume) Sequence",retired:""},"0x0020930F":{keyword:"PlaneOrientationVolumeSequence",vr:"SQ",vm:"1",name:"Plane Orientation (Volume) Sequence",retired:""},"0x00209310":{keyword:"TemporalPositionSequence",vr:"SQ",vm:"1",name:"Temporal Position Sequence",retired:""},"0x00209311":{keyword:"DimensionOrganizationType",vr:"CS",vm:"1",name:"Dimension Organization Type",retired:""},"0x00209312":{keyword:"VolumeFrameOfReferenceUID",vr:"UI",vm:"1",name:"Volume Frame of Reference UID",retired:""},"0x00209313":{keyword:"TableFrameOfReferenceUID",vr:"UI",vm:"1",name:"Table Frame of Reference UID",retired:""},"0x00209421":{keyword:"DimensionDescriptionLabel",vr:"LO",vm:"1",name:"Dimension Description Label",retired:""},"0x00209450":{keyword:"PatientOrientationInFrameSequence",vr:"SQ",vm:"1",name:"Patient Orientation in Frame Sequence",retired:""},"0x00209453":{keyword:"FrameLabel",vr:"LO",vm:"1",name:"Frame Label",retired:""},"0x00209518":{keyword:"AcquisitionIndex",vr:"US",vm:"1-n",name:"Acquisition Index",retired:""},"0x00209529":{keyword:"ContributingSOPInstancesReferenceSequence",vr:"SQ",vm:"1",name:"Contributing SOP Instances Reference Sequence",retired:""},"0x00209536":{keyword:"ReconstructionIndex",vr:"US",vm:"1",name:"Reconstruction Index",retired:""},"0x00220001":{keyword:"LightPathFilterPassThroughWavelength",vr:"US",vm:"1",name:"Light Path Filter Pass-Through Wavelength",retired:""},"0x00220002":{keyword:"LightPathFilterPassBand",vr:"US",vm:"2",name:"Light Path Filter Pass Band",retired:""},"0x00220003":{keyword:"ImagePathFilterPassThroughWavelength",vr:"US",vm:"1",name:"Image Path Filter Pass-Through Wavelength",retired:""},"0x00220004":{keyword:"ImagePathFilterPassBand",vr:"US",vm:"2",name:"Image Path Filter Pass Band",retired:""},"0x00220005":{keyword:"PatientEyeMovementCommanded",vr:"CS",vm:"1",name:"Patient Eye Movement Commanded",retired:""},"0x00220006":{keyword:"PatientEyeMovementCommandCodeSequence",vr:"SQ",vm:"1",name:"Patient Eye Movement Command Code Sequence",retired:""},"0x00220007":{keyword:"SphericalLensPower",vr:"FL",vm:"1",name:"Spherical Lens Power",retired:""},"0x00220008":{keyword:"CylinderLensPower",vr:"FL",vm:"1",name:"Cylinder Lens Power",retired:""},"0x00220009":{keyword:"CylinderAxis",vr:"FL",vm:"1",name:"Cylinder Axis",retired:""},"0x0022000A":{keyword:"EmmetropicMagnification",vr:"FL",vm:"1",name:"Emmetropic Magnification",retired:""},"0x0022000B":{keyword:"IntraOcularPressure",vr:"FL",vm:"1",name:"Intra Ocular Pressure",retired:""},"0x0022000C":{keyword:"HorizontalFieldOfView",vr:"FL",vm:"1",name:"Horizontal Field of View",retired:""},"0x0022000D":{keyword:"PupilDilated",vr:"CS",vm:"1",name:"Pupil Dilated",retired:""},"0x0022000E":{keyword:"DegreeOfDilation",vr:"FL",vm:"1",name:"Degree of Dilation",retired:""},"0x00220010":{keyword:"StereoBaselineAngle",vr:"FL",vm:"1",name:"Stereo Baseline Angle",retired:""},"0x00220011":{keyword:"StereoBaselineDisplacement",vr:"FL",vm:"1",name:"Stereo Baseline Displacement",retired:""},"0x00220012":{keyword:"StereoHorizontalPixelOffset",vr:"FL",vm:"1",name:"Stereo Horizontal Pixel Offset",retired:""},"0x00220013":{keyword:"StereoVerticalPixelOffset",vr:"FL",vm:"1",name:"Stereo Vertical Pixel Offset",retired:""},"0x00220014":{keyword:"StereoRotation",vr:"FL",vm:"1",name:"Stereo Rotation",retired:""},"0x00220015":{keyword:"AcquisitionDeviceTypeCodeSequence",vr:"SQ",vm:"1",name:"Acquisition Device Type Code Sequence",retired:""},"0x00220016":{keyword:"IlluminationTypeCodeSequence",vr:"SQ",vm:"1",name:"Illumination Type Code Sequence",retired:""},"0x00220017":{keyword:"LightPathFilterTypeStackCodeSequence",vr:"SQ",vm:"1",name:"Light Path Filter Type Stack Code Sequence",retired:""},"0x00220018":{keyword:"ImagePathFilterTypeStackCodeSequence",vr:"SQ",vm:"1",name:"Image Path Filter Type Stack Code Sequence",retired:""},"0x00220019":{keyword:"LensesCodeSequence",vr:"SQ",vm:"1",name:"Lenses Code Sequence",retired:""},"0x0022001A":{keyword:"ChannelDescriptionCodeSequence",vr:"SQ",vm:"1",name:"Channel Description Code Sequence",retired:""},"0x0022001B":{keyword:"RefractiveStateSequence",vr:"SQ",vm:"1",name:"Refractive State Sequence",retired:""},"0x0022001C":{keyword:"MydriaticAgentCodeSequence",vr:"SQ",vm:"1",name:"Mydriatic Agent Code Sequence",retired:""},"0x0022001D":{keyword:"RelativeImagePositionCodeSequence",vr:"SQ",vm:"1",name:"Relative Image Position Code Sequence",retired:""},"0x0022001E":{keyword:"CameraAngleOfView",vr:"FL",vm:"1",name:"Camera Angle of View",retired:""},"0x00220020":{keyword:"StereoPairsSequence",vr:"SQ",vm:"1",name:"Stereo Pairs Sequence",retired:""},"0x00220021":{keyword:"LeftImageSequence",vr:"SQ",vm:"1",name:"Left Image Sequence",retired:""},"0x00220022":{keyword:"RightImageSequence",vr:"SQ",vm:"1",name:"Right Image Sequence",retired:""},"0x00220028":{keyword:"StereoPairsPresent",vr:"CS",vm:"1",name:"Stereo Pairs Present",retired:""},"0x00220030":{keyword:"AxialLengthOfTheEye",vr:"FL",vm:"1",name:"Axial Length of the Eye",retired:""},"0x00220031":{keyword:"OphthalmicFrameLocationSequence",vr:"SQ",vm:"1",name:"Ophthalmic Frame Location Sequence",retired:""},"0x00220032":{keyword:"ReferenceCoordinates",vr:"FL",vm:"2-2n",name:"Reference Coordinates",retired:""},"0x00220035":{keyword:"DepthSpatialResolution",vr:"FL",vm:"1",name:"Depth Spatial Resolution",retired:""},"0x00220036":{keyword:"MaximumDepthDistortion",vr:"FL",vm:"1",name:"Maximum Depth Distortion",retired:""},"0x00220037":{keyword:"AlongScanSpatialResolution",vr:"FL",vm:"1",name:"Along-scan Spatial Resolution",retired:""},"0x00220038":{keyword:"MaximumAlongScanDistortion",vr:"FL",vm:"1",name:"Maximum Along-scan Distortion",retired:""},"0x00220039":{keyword:"OphthalmicImageOrientation",vr:"CS",vm:"1",name:"Ophthalmic Image Orientation",retired:""},"0x00220041":{keyword:"DepthOfTransverseImage",vr:"FL",vm:"1",name:"Depth of Transverse Image",retired:""},"0x00220042":{keyword:"MydriaticAgentConcentrationUnitsSequence",vr:"SQ",vm:"1",name:"Mydriatic Agent Concentration Units Sequence",retired:""},"0x00220048":{keyword:"AcrossScanSpatialResolution",vr:"FL",vm:"1",name:"Across-scan Spatial Resolution",retired:""},"0x00220049":{keyword:"MaximumAcrossScanDistortion",vr:"FL",vm:"1",name:"Maximum Across-scan Distortion",retired:""},"0x0022004E":{keyword:"MydriaticAgentConcentration",vr:"DS",vm:"1",name:"Mydriatic Agent Concentration",retired:""},"0x00220055":{keyword:"IlluminationWaveLength",vr:"FL",vm:"1",name:"Illumination Wave Length",retired:""},"0x00220056":{keyword:"IlluminationPower",vr:"FL",vm:"1",name:"Illumination Power",retired:""},"0x00220057":{keyword:"IlluminationBandwidth",vr:"FL",vm:"1",name:"Illumination Bandwidth",retired:""},"0x00220058":{keyword:"MydriaticAgentSequence",vr:"SQ",vm:"1",name:"Mydriatic Agent Sequence",retired:""},"0x00221007":{keyword:"OphthalmicAxialMeasurementsRightEyeSequence",vr:"SQ",vm:"1",name:"Ophthalmic Axial Measurements Right Eye Sequence",retired:""},"0x00221008":{keyword:"OphthalmicAxialMeasurementsLeftEyeSequence",vr:"SQ",vm:"1",name:"Ophthalmic Axial Measurements Left Eye Sequence",retired:""},"0x00221009":{keyword:"OphthalmicAxialMeasurementsDeviceType",vr:"CS",vm:"1",name:"Ophthalmic Axial Measurements Device Type",retired:""},"0x00221010":{keyword:"OphthalmicAxialLengthMeasurementsType",vr:"CS",vm:"1",name:"Ophthalmic Axial Length Measurements Type",retired:""},"0x00221012":{keyword:"OphthalmicAxialLengthSequence",vr:"SQ",vm:"1",name:"Ophthalmic Axial Length Sequence",retired:""},"0x00221019":{keyword:"OphthalmicAxialLength",vr:"FL",vm:"1",name:"Ophthalmic Axial Length",retired:""},"0x00221024":{keyword:"LensStatusCodeSequence",vr:"SQ",vm:"1",name:"Lens Status Code Sequence",retired:""},"0x00221025":{keyword:"VitreousStatusCodeSequence",vr:"SQ",vm:"1",name:"Vitreous Status Code Sequence",retired:""},"0x00221028":{keyword:"IOLFormulaCodeSequence",vr:"SQ",vm:"1",name:"IOL Formula Code Sequence",retired:""},"0x00221029":{keyword:"IOLFormulaDetail",vr:"LO",vm:"1",name:"IOL Formula Detail",retired:""},"0x00221033":{keyword:"KeratometerIndex",vr:"FL",vm:"1",name:"Keratometer Index",retired:""},"0x00221035":{keyword:"SourceOfOphthalmicAxialLengthCodeSequence",vr:"SQ",vm:"1",name:"Source of Ophthalmic Axial Length Code Sequence",retired:""},"0x00221036":{keyword:"SourceOfCornealSizeDataCodeSequence",vr:"SQ",vm:"1",name:"Source of Corneal Size Data Code Sequence",retired:""},"0x00221037":{keyword:"TargetRefraction",vr:"FL",vm:"1",name:"Target Refraction",retired:""},"0x00221039":{keyword:"RefractiveProcedureOccurred",vr:"CS",vm:"1",name:"Refractive Procedure Occurred",retired:""},"0x00221040":{keyword:"RefractiveSurgeryTypeCodeSequence",vr:"SQ",vm:"1",name:"Refractive Surgery Type Code Sequence",retired:""},"0x00221044":{keyword:"OphthalmicUltrasoundMethodCodeSequence",vr:"SQ",vm:"1",name:"Ophthalmic Ultrasound Method Code Sequence",retired:""},"0x00221045":{keyword:"SurgicallyInducedAstigmatismSequence",vr:"SQ",vm:"1",name:"Surgically Induced Astigmatism Sequence",retired:""},"0x00221046":{keyword:"TypeOfOpticalCorrection",vr:"CS",vm:"1",name:"Type of Optical Correction",retired:""},"0x00221047":{keyword:"ToricIOLPowerSequence",vr:"SQ",vm:"1",name:"Toric IOL Power Sequence",retired:""},"0x00221048":{keyword:"PredictedToricErrorSequence",vr:"SQ",vm:"1",name:"Predicted Toric Error Sequence",retired:""},"0x00221049":{keyword:"PreSelectedForImplantation",vr:"CS",vm:"1",name:"Pre-Selected for Implantation",retired:""},"0x0022104A":{keyword:"ToricIOLPowerForExactEmmetropiaSequence",vr:"SQ",vm:"1",name:"Toric IOL Power for Exact Emmetropia Sequence",retired:""},"0x0022104B":{keyword:"ToricIOLPowerForExactTargetRefractionSequence",vr:"SQ",vm:"1",name:"Toric IOL Power for Exact Target Refraction Sequence",retired:""},"0x00221050":{keyword:"OphthalmicAxialLengthMeasurementsSequence",vr:"SQ",vm:"1",name:"Ophthalmic Axial Length Measurements Sequence",retired:""},"0x00221053":{keyword:"IOLPower",vr:"FL",vm:"1",name:"IOL Power",retired:""},"0x00221054":{keyword:"PredictedRefractiveError",vr:"FL",vm:"1",name:"Predicted Refractive Error",retired:""},"0x00221059":{keyword:"OphthalmicAxialLengthVelocity",vr:"FL",vm:"1",name:"Ophthalmic Axial Length Velocity",retired:""},"0x00221065":{keyword:"LensStatusDescription",vr:"LO",vm:"1",name:"Lens Status Description",retired:""},"0x00221066":{keyword:"VitreousStatusDescription",vr:"LO",vm:"1",name:"Vitreous Status Description",retired:""},"0x00221090":{keyword:"IOLPowerSequence",vr:"SQ",vm:"1",name:"IOL Power Sequence",retired:""},"0x00221092":{keyword:"LensConstantSequence",vr:"SQ",vm:"1",name:"Lens Constant Sequence",retired:""},"0x00221093":{keyword:"IOLManufacturer",vr:"LO",vm:"1",name:"IOL Manufacturer",retired:""},"0x00221094":{keyword:"LensConstantDescription",vr:"LO",vm:"1",name:"Lens Constant Description",retired:"Retired"},"0x00221095":{keyword:"ImplantName",vr:"LO",vm:"1",name:"Implant Name",retired:""},"0x00221096":{keyword:"KeratometryMeasurementTypeCodeSequence",vr:"SQ",vm:"1",name:"Keratometry Measurement Type Code Sequence",retired:""},"0x00221097":{keyword:"ImplantPartNumber",vr:"LO",vm:"1",name:"Implant Part Number",retired:""},"0x00221100":{keyword:"ReferencedOphthalmicAxialMeasurementsSequence",vr:"SQ",vm:"1",name:"Referenced Ophthalmic Axial Measurements Sequence",retired:""},"0x00221101":{keyword:"OphthalmicAxialLengthMeasurementsSegmentNameCodeSequence",vr:"SQ",vm:"1",name:"Ophthalmic Axial Length Measurements Segment Name Code Sequence",retired:""},"0x00221103":{keyword:"RefractiveErrorBeforeRefractiveSurgeryCodeSequence",vr:"SQ",vm:"1",name:"Refractive Error Before Refractive Surgery Code Sequence",retired:""},"0x00221121":{keyword:"IOLPowerForExactEmmetropia",vr:"FL",vm:"1",name:"IOL Power For Exact Emmetropia",retired:""},"0x00221122":{keyword:"IOLPowerForExactTargetRefraction",vr:"FL",vm:"1",name:"IOL Power For Exact Target Refraction",retired:""},"0x00221125":{keyword:"AnteriorChamberDepthDefinitionCodeSequence",vr:"SQ",vm:"1",name:"Anterior Chamber Depth Definition Code Sequence",retired:""},"0x00221127":{keyword:"LensThicknessSequence",vr:"SQ",vm:"1",name:"Lens Thickness Sequence",retired:""},"0x00221128":{keyword:"AnteriorChamberDepthSequence",vr:"SQ",vm:"1",name:"Anterior Chamber Depth Sequence",retired:""},"0x0022112A":{keyword:"CalculationCommentSequence",vr:"SQ",vm:"1",name:"Calculation Comment Sequence",retired:""},"0x0022112B":{keyword:"CalculationCommentType",vr:"CS",vm:"1",name:"Calculation Comment Type",retired:""},"0x0022112C":{keyword:"CalculationComment",vr:"LT",vm:"1",name:"Calculation Comment",retired:""},"0x00221130":{keyword:"LensThickness",vr:"FL",vm:"1",name:"Lens Thickness",retired:""},"0x00221131":{keyword:"AnteriorChamberDepth",vr:"FL",vm:"1",name:"Anterior Chamber Depth",retired:""},"0x00221132":{keyword:"SourceOfLensThicknessDataCodeSequence",vr:"SQ",vm:"1",name:"Source of Lens Thickness Data Code Sequence",retired:""},"0x00221133":{keyword:"SourceOfAnteriorChamberDepthDataCodeSequence",vr:"SQ",vm:"1",name:"Source of Anterior Chamber Depth Data Code Sequence",retired:""},"0x00221134":{keyword:"SourceOfRefractiveMeasurementsSequence",vr:"SQ",vm:"1",name:"Source of Refractive Measurements Sequence",retired:""},"0x00221135":{keyword:"SourceOfRefractiveMeasurementsCodeSequence",vr:"SQ",vm:"1",name:"Source of Refractive Measurements Code Sequence",retired:""},"0x00221140":{keyword:"OphthalmicAxialLengthMeasurementModified",vr:"CS",vm:"1",name:"Ophthalmic Axial Length Measurement Modified",retired:""},"0x00221150":{keyword:"OphthalmicAxialLengthDataSourceCodeSequence",vr:"SQ",vm:"1",name:"Ophthalmic Axial Length Data Source Code Sequence",retired:""},"0x00221153":{keyword:"OphthalmicAxialLengthAcquisitionMethodCodeSequence",vr:"SQ",vm:"1",name:"Ophthalmic Axial Length Acquisition Method Code Sequence",retired:"Retired"},"0x00221155":{keyword:"SignalToNoiseRatio",vr:"FL",vm:"1",name:"Signal to Noise Ratio",retired:""},"0x00221159":{keyword:"OphthalmicAxialLengthDataSourceDescription",vr:"LO",vm:"1",name:"Ophthalmic Axial Length Data Source Description",retired:""},"0x00221210":{keyword:"OphthalmicAxialLengthMeasurementsTotalLengthSequence",vr:"SQ",vm:"1",name:"Ophthalmic Axial Length Measurements Total Length Sequence",retired:""},"0x00221211":{keyword:"OphthalmicAxialLengthMeasurementsSegmentalLengthSequence",vr:"SQ",vm:"1",name:"Ophthalmic Axial Length Measurements Segmental Length Sequence",retired:""},"0x00221212":{keyword:"OphthalmicAxialLengthMeasurementsLengthSummationSequence",vr:"SQ",vm:"1",name:"Ophthalmic Axial Length Measurements Length Summation Sequence",retired:""},"0x00221220":{keyword:"UltrasoundOphthalmicAxialLengthMeasurementsSequence",vr:"SQ",vm:"1",name:"Ultrasound Ophthalmic Axial Length Measurements Sequence",retired:""},"0x00221225":{keyword:"OpticalOphthalmicAxialLengthMeasurementsSequence",vr:"SQ",vm:"1",name:"Optical Ophthalmic Axial Length Measurements Sequence",retired:""},"0x00221230":{keyword:"UltrasoundSelectedOphthalmicAxialLengthSequence",vr:"SQ",vm:"1",name:"Ultrasound Selected Ophthalmic Axial Length Sequence",retired:""},"0x00221250":{keyword:"OphthalmicAxialLengthSelectionMethodCodeSequence",vr:"SQ",vm:"1",name:"Ophthalmic Axial Length Selection Method Code Sequence",retired:""},"0x00221255":{keyword:"OpticalSelectedOphthalmicAxialLengthSequence",vr:"SQ",vm:"1",name:"Optical Selected Ophthalmic Axial Length Sequence",retired:""},"0x00221257":{keyword:"SelectedSegmentalOphthalmicAxialLengthSequence",vr:"SQ",vm:"1",name:"Selected Segmental Ophthalmic Axial Length Sequence",retired:""},"0x00221260":{keyword:"SelectedTotalOphthalmicAxialLengthSequence",vr:"SQ",vm:"1",name:"Selected Total Ophthalmic Axial Length Sequence",retired:""},"0x00221262":{keyword:"OphthalmicAxialLengthQualityMetricSequence",vr:"SQ",vm:"1",name:"Ophthalmic Axial Length Quality Metric Sequence",retired:""},"0x00221265":{keyword:"OphthalmicAxialLengthQualityMetricTypeCodeSequence",vr:"SQ",vm:"1",name:"Ophthalmic Axial Length Quality Metric Type Code Sequence",retired:"Retired"},"0x00221273":{keyword:"OphthalmicAxialLengthQualityMetricTypeDescription",vr:"LO",vm:"1",name:"Ophthalmic Axial Length Quality Metric Type Description",retired:"Retired"},"0x00221300":{keyword:"IntraocularLensCalculationsRightEyeSequence",vr:"SQ",vm:"1",name:"Intraocular Lens Calculations Right Eye Sequence",retired:""},"0x00221310":{keyword:"IntraocularLensCalculationsLeftEyeSequence",vr:"SQ",vm:"1",name:"Intraocular Lens Calculations Left Eye Sequence",retired:""},"0x00221330":{keyword:"ReferencedOphthalmicAxialLengthMeasurementQCImageSequence",vr:"SQ",vm:"1",name:"Referenced Ophthalmic Axial Length Measurement QC Image Sequence",retired:""},"0x00221415":{keyword:"OphthalmicMappingDeviceType",vr:"CS",vm:"1",name:"Ophthalmic Mapping Device Type",retired:""},"0x00221420":{keyword:"AcquisitionMethodCodeSequence",vr:"SQ",vm:"1",name:"Acquisition Method Code Sequence",retired:""},"0x00221423":{keyword:"AcquisitionMethodAlgorithmSequence",vr:"SQ",vm:"1",name:"Acquisition Method Algorithm Sequence",retired:""},"0x00221436":{keyword:"OphthalmicThicknessMapTypeCodeSequence",vr:"SQ",vm:"1",name:"Ophthalmic Thickness Map Type Code Sequence",retired:""},"0x00221443":{keyword:"OphthalmicThicknessMappingNormalsSequence",vr:"SQ",vm:"1",name:"Ophthalmic Thickness Mapping Normals Sequence",retired:""},"0x00221445":{keyword:"RetinalThicknessDefinitionCodeSequence",vr:"SQ",vm:"1",name:"Retinal Thickness Definition Code Sequence",retired:""},"0x00221450":{keyword:"PixelValueMappingToCodedConceptSequence",vr:"SQ",vm:"1",name:"Pixel Value Mapping to Coded Concept Sequence",retired:""},"0x00221452":{keyword:"MappedPixelValue",vr:"US or SS",vm:"1",name:"Mapped Pixel Value",retired:""},"0x00221454":{keyword:"PixelValueMappingExplanation",vr:"LO",vm:"1",name:"Pixel Value Mapping Explanation",retired:""},"0x00221458":{keyword:"OphthalmicThicknessMapQualityThresholdSequence",vr:"SQ",vm:"1",name:"Ophthalmic Thickness Map Quality Threshold Sequence",retired:""},"0x00221460":{keyword:"OphthalmicThicknessMapThresholdQualityRating",vr:"FL",vm:"1",name:"Ophthalmic Thickness Map Threshold Quality Rating",retired:""},"0x00221463":{keyword:"AnatomicStructureReferencePoint",vr:"FL",vm:"2",name:"Anatomic Structure Reference Point",retired:""},"0x00221465":{keyword:"RegistrationToLocalizerSequence",vr:"SQ",vm:"1",name:"Registration to Localizer Sequence",retired:""},"0x00221466":{keyword:"RegisteredLocalizerUnits",vr:"CS",vm:"1",name:"Registered Localizer Units",retired:""},"0x00221467":{keyword:"RegisteredLocalizerTopLeftHandCorner",vr:"FL",vm:"2",name:"Registered Localizer Top Left Hand Corner",retired:""},"0x00221468":{keyword:"RegisteredLocalizerBottomRightHandCorner",vr:"FL",vm:"2",name:"Registered Localizer Bottom Right Hand Corner",retired:""},"0x00221470":{keyword:"OphthalmicThicknessMapQualityRatingSequence",vr:"SQ",vm:"1",name:"Ophthalmic Thickness Map Quality Rating Sequence",retired:""},"0x00221472":{keyword:"RelevantOPTAttributesSequence",vr:"SQ",vm:"1",name:"Relevant OPT Attributes Sequence",retired:""},"0x00221512":{keyword:"TransformationMethodCodeSequence",vr:"SQ",vm:"1",name:"Transformation Method Code Sequence",retired:""},"0x00221513":{keyword:"TransformationAlgorithmSequence",vr:"SQ",vm:"1",name:"Transformation Algorithm Sequence",retired:""},"0x00221515":{keyword:"OphthalmicAxialLengthMethod",vr:"CS",vm:"1",name:"Ophthalmic Axial Length Method",retired:""},"0x00221517":{keyword:"OphthalmicFOV",vr:"FL",vm:"1",name:"Ophthalmic FOV",retired:""},"0x00221518":{keyword:"TwoDimensionalToThreeDimensionalMapSequence",vr:"SQ",vm:"1",name:"Two Dimensional to Three Dimensional Map Sequence",retired:""},"0x00221525":{keyword:"WideFieldOphthalmicPhotographyQualityRatingSequence",vr:"SQ",vm:"1",name:"Wide Field Ophthalmic Photography Quality Rating Sequence",retired:""},"0x00221526":{keyword:"WideFieldOphthalmicPhotographyQualityThresholdSequence",vr:"SQ",vm:"1",name:"Wide Field Ophthalmic Photography Quality Threshold Sequence",retired:""},"0x00221527":{keyword:"WideFieldOphthalmicPhotographyThresholdQualityRating",vr:"FL",vm:"1",name:"Wide Field Ophthalmic Photography Threshold Quality Rating",retired:""},"0x00221528":{keyword:"XCoordinatesCenterPixelViewAngle",vr:"FL",vm:"1",name:"X Coordinates Center Pixel View Angle",retired:""},"0x00221529":{keyword:"YCoordinatesCenterPixelViewAngle",vr:"FL",vm:"1",name:"Y Coordinates Center Pixel View Angle",retired:""},"0x00221530":{keyword:"NumberOfMapPoints",vr:"UL",vm:"1",name:"Number of Map Points",retired:""},"0x00221531":{keyword:"TwoDimensionalToThreeDimensionalMapData",vr:"OF",vm:"1",name:"Two Dimensional to Three Dimensional Map Data",retired:""},"0x00221612":{keyword:"DerivationAlgorithmSequence",vr:"SQ",vm:"1",name:"Derivation Algorithm Sequence",retired:""},"0x00221615":{keyword:"OphthalmicImageTypeCodeSequence",vr:"SQ",vm:"1",name:"Ophthalmic Image Type Code Sequence",retired:""},"0x00221616":{keyword:"OphthalmicImageTypeDescription",vr:"LO",vm:"1",name:"Ophthalmic Image Type Description",retired:""},"0x00221618":{keyword:"ScanPatternTypeCodeSequence",vr:"SQ",vm:"1",name:"Scan Pattern Type Code Sequence",retired:""},"0x00221620":{keyword:"ReferencedSurfaceMeshIdentificationSequence",vr:"SQ",vm:"1",name:"Referenced Surface Mesh Identification Sequence",retired:""},"0x00221622":{keyword:"OphthalmicVolumetricPropertiesFlag",vr:"CS",vm:"1",name:"Ophthalmic Volumetric Properties Flag",retired:""},"0x00221624":{keyword:"OphthalmicAnatomicReferencePointXCoordinate",vr:"FL",vm:"1",name:"Ophthalmic Anatomic Reference Point X-Coordinate",retired:""},"0x00221626":{keyword:"OphthalmicAnatomicReferencePointYCoordinate",vr:"FL",vm:"1",name:"Ophthalmic Anatomic Reference Point Y-Coordinate",retired:""},"0x00221628":{keyword:"OphthalmicEnFaceImageQualityRatingSequence",vr:"SQ",vm:"1",name:"Ophthalmic En Face Image Quality Rating Sequence",retired:""},"0x00221630":{keyword:"QualityThreshold",vr:"DS",vm:"1",name:"Quality Threshold",retired:""},"0x00221640":{keyword:"OCTBscanAnalysisAcquisitionParametersSequence",vr:"SQ",vm:"1",name:"OCT B-scan Analysis Acquisition Parameters Sequence",retired:""},"0x00221642":{keyword:"NumberOfBscansPerFrame",vr:"UL",vm:"1",name:"Number of B-scans Per Frame",retired:""},"0x00221643":{keyword:"BscanSlabThickness",vr:"FL",vm:"1",name:"B-scan Slab Thickness",retired:""},"0x00221644":{keyword:"DistanceBetweenBscanSlabs",vr:"FL",vm:"1",name:"Distance Between B-scan Slabs",retired:""},"0x00221645":{keyword:"BscanCycleTime",vr:"FL",vm:"1",name:"B-scan Cycle Time",retired:""},"0x00221646":{keyword:"BscanCycleTimeVector",vr:"FL",vm:"1-n",name:"B-scan Cycle Time Vector",retired:""},"0x00221649":{keyword:"AscanRate",vr:"FL",vm:"1",name:"A-scan Rate",retired:""},"0x00221650":{keyword:"BscanRate",vr:"FL",vm:"1",name:"B-scan Rate",retired:""},"0x00221658":{keyword:"SurfaceMeshZPixelOffset",vr:"UL",vm:"1",name:"Surface Mesh Z-Pixel Offset",retired:""},"0x00240010":{keyword:"VisualFieldHorizontalExtent",vr:"FL",vm:"1",name:"Visual Field Horizontal Extent",retired:""},"0x00240011":{keyword:"VisualFieldVerticalExtent",vr:"FL",vm:"1",name:"Visual Field Vertical Extent",retired:""},"0x00240012":{keyword:"VisualFieldShape",vr:"CS",vm:"1",name:"Visual Field Shape",retired:""},"0x00240016":{keyword:"ScreeningTestModeCodeSequence",vr:"SQ",vm:"1",name:"Screening Test Mode Code Sequence",retired:""},"0x00240018":{keyword:"MaximumStimulusLuminance",vr:"FL",vm:"1",name:"Maximum Stimulus Luminance",retired:""},"0x00240020":{keyword:"BackgroundLuminance",vr:"FL",vm:"1",name:"Background Luminance",retired:""},"0x00240021":{keyword:"StimulusColorCodeSequence",vr:"SQ",vm:"1",name:"Stimulus Color Code Sequence",retired:""},"0x00240024":{keyword:"BackgroundIlluminationColorCodeSequence",vr:"SQ",vm:"1",name:"Background Illumination Color Code Sequence",retired:""},"0x00240025":{keyword:"StimulusArea",vr:"FL",vm:"1",name:"Stimulus Area",retired:""},"0x00240028":{keyword:"StimulusPresentationTime",vr:"FL",vm:"1",name:"Stimulus Presentation Time",retired:""},"0x00240032":{keyword:"FixationSequence",vr:"SQ",vm:"1",name:"Fixation Sequence",retired:""},"0x00240033":{keyword:"FixationMonitoringCodeSequence",vr:"SQ",vm:"1",name:"Fixation Monitoring Code Sequence",retired:""},"0x00240034":{keyword:"VisualFieldCatchTrialSequence",vr:"SQ",vm:"1",name:"Visual Field Catch Trial Sequence",retired:""},"0x00240035":{keyword:"FixationCheckedQuantity",vr:"US",vm:"1",name:"Fixation Checked Quantity",retired:""},"0x00240036":{keyword:"PatientNotProperlyFixatedQuantity",vr:"US",vm:"1",name:"Patient Not Properly Fixated Quantity",retired:""},"0x00240037":{keyword:"PresentedVisualStimuliDataFlag",vr:"CS",vm:"1",name:"Presented Visual Stimuli Data Flag",retired:""},"0x00240038":{keyword:"NumberOfVisualStimuli",vr:"US",vm:"1",name:"Number of Visual Stimuli",retired:""},"0x00240039":{keyword:"ExcessiveFixationLossesDataFlag",vr:"CS",vm:"1",name:"Excessive Fixation Losses Data Flag",retired:""},"0x00240040":{keyword:"ExcessiveFixationLosses",vr:"CS",vm:"1",name:"Excessive Fixation Losses",retired:""},"0x00240042":{keyword:"StimuliRetestingQuantity",vr:"US",vm:"1",name:"Stimuli Retesting Quantity",retired:""},"0x00240044":{keyword:"CommentsOnPatientPerformanceOfVisualField",vr:"LT",vm:"1",name:"Comments on Patient's Performance of Visual Field",retired:""},"0x00240045":{keyword:"FalseNegativesEstimateFlag",vr:"CS",vm:"1",name:"False Negatives Estimate Flag",retired:""},"0x00240046":{keyword:"FalseNegativesEstimate",vr:"FL",vm:"1",name:"False Negatives Estimate",retired:""},"0x00240048":{keyword:"NegativeCatchTrialsQuantity",vr:"US",vm:"1",name:"Negative Catch Trials Quantity",retired:""},"0x00240050":{keyword:"FalseNegativesQuantity",vr:"US",vm:"1",name:"False Negatives Quantity",retired:""},"0x00240051":{keyword:"ExcessiveFalseNegativesDataFlag",vr:"CS",vm:"1",name:"Excessive False Negatives Data Flag",retired:""},"0x00240052":{keyword:"ExcessiveFalseNegatives",vr:"CS",vm:"1",name:"Excessive False Negatives",retired:""},"0x00240053":{keyword:"FalsePositivesEstimateFlag",vr:"CS",vm:"1",name:"False Positives Estimate Flag",retired:""},"0x00240054":{keyword:"FalsePositivesEstimate",vr:"FL",vm:"1",name:"False Positives Estimate",retired:""},"0x00240055":{keyword:"CatchTrialsDataFlag",vr:"CS",vm:"1",name:"Catch Trials Data Flag",retired:""},"0x00240056":{keyword:"PositiveCatchTrialsQuantity",vr:"US",vm:"1",name:"Positive Catch Trials Quantity",retired:""},"0x00240057":{keyword:"TestPointNormalsDataFlag",vr:"CS",vm:"1",name:"Test Point Normals Data Flag",retired:""},"0x00240058":{keyword:"TestPointNormalsSequence",vr:"SQ",vm:"1",name:"Test Point Normals Sequence",retired:""},"0x00240059":{keyword:"GlobalDeviationProbabilityNormalsFlag",vr:"CS",vm:"1",name:"Global Deviation Probability Normals Flag",retired:""},"0x00240060":{keyword:"FalsePositivesQuantity",vr:"US",vm:"1",name:"False Positives Quantity",retired:""},"0x00240061":{keyword:"ExcessiveFalsePositivesDataFlag",vr:"CS",vm:"1",name:"Excessive False Positives Data Flag",retired:""},"0x00240062":{keyword:"ExcessiveFalsePositives",vr:"CS",vm:"1",name:"Excessive False Positives",retired:""},"0x00240063":{keyword:"VisualFieldTestNormalsFlag",vr:"CS",vm:"1",name:"Visual Field Test Normals Flag",retired:""},"0x00240064":{keyword:"ResultsNormalsSequence",vr:"SQ",vm:"1",name:"Results Normals Sequence",retired:""},"0x00240065":{keyword:"AgeCorrectedSensitivityDeviationAlgorithmSequence",vr:"SQ",vm:"1",name:"Age Corrected Sensitivity Deviation Algorithm Sequence",retired:""},"0x00240066":{keyword:"GlobalDeviationFromNormal",vr:"FL",vm:"1",name:"Global Deviation From Normal",retired:""},"0x00240067":{keyword:"GeneralizedDefectSensitivityDeviationAlgorithmSequence",vr:"SQ",vm:"1",name:"Generalized Defect Sensitivity Deviation Algorithm Sequence",retired:""},"0x00240068":{keyword:"LocalizedDeviationFromNormal",vr:"FL",vm:"1",name:"Localized Deviation From Normal",retired:""},"0x00240069":{keyword:"PatientReliabilityIndicator",vr:"LO",vm:"1",name:"Patient Reliability Indicator",retired:""},"0x00240070":{keyword:"VisualFieldMeanSensitivity",vr:"FL",vm:"1",name:"Visual Field Mean Sensitivity",retired:""},"0x00240071":{keyword:"GlobalDeviationProbability",vr:"FL",vm:"1",name:"Global Deviation Probability",retired:""},"0x00240072":{keyword:"LocalDeviationProbabilityNormalsFlag",vr:"CS",vm:"1",name:"Local Deviation Probability Normals Flag",retired:""},"0x00240073":{keyword:"LocalizedDeviationProbability",vr:"FL",vm:"1",name:"Localized Deviation Probability",retired:""},"0x00240074":{keyword:"ShortTermFluctuationCalculated",vr:"CS",vm:"1",name:"Short Term Fluctuation Calculated",retired:""},"0x00240075":{keyword:"ShortTermFluctuation",vr:"FL",vm:"1",name:"Short Term Fluctuation",retired:""},"0x00240076":{keyword:"ShortTermFluctuationProbabilityCalculated",vr:"CS",vm:"1",name:"Short Term Fluctuation Probability Calculated",retired:""},"0x00240077":{keyword:"ShortTermFluctuationProbability",vr:"FL",vm:"1",name:"Short Term Fluctuation Probability",retired:""},"0x00240078":{keyword:"CorrectedLocalizedDeviationFromNormalCalculated",vr:"CS",vm:"1",name:"Corrected Localized Deviation From Normal Calculated",retired:""},"0x00240079":{keyword:"CorrectedLocalizedDeviationFromNormal",vr:"FL",vm:"1",name:"Corrected Localized Deviation From Normal",retired:""},"0x00240080":{keyword:"CorrectedLocalizedDeviationFromNormalProbabilityCalculated",vr:"CS",vm:"1",name:"Corrected Localized Deviation From Normal Probability Calculated",retired:""},"0x00240081":{keyword:"CorrectedLocalizedDeviationFromNormalProbability",vr:"FL",vm:"1",name:"Corrected Localized Deviation From Normal Probability",retired:""},"0x00240083":{keyword:"GlobalDeviationProbabilitySequence",vr:"SQ",vm:"1",name:"Global Deviation Probability Sequence",retired:""},"0x00240085":{keyword:"LocalizedDeviationProbabilitySequence",vr:"SQ",vm:"1",name:"Localized Deviation Probability Sequence",retired:""},"0x00240086":{keyword:"FovealSensitivityMeasured",vr:"CS",vm:"1",name:"Foveal Sensitivity Measured",retired:""},"0x00240087":{keyword:"FovealSensitivity",vr:"FL",vm:"1",name:"Foveal Sensitivity",retired:""},"0x00240088":{keyword:"VisualFieldTestDuration",vr:"FL",vm:"1",name:"Visual Field Test Duration",retired:""},"0x00240089":{keyword:"VisualFieldTestPointSequence",vr:"SQ",vm:"1",name:"Visual Field Test Point Sequence",retired:""},"0x00240090":{keyword:"VisualFieldTestPointXCoordinate",vr:"FL",vm:"1",name:"Visual Field Test Point X-Coordinate",retired:""},"0x00240091":{keyword:"VisualFieldTestPointYCoordinate",vr:"FL",vm:"1",name:"Visual Field Test Point Y-Coordinate",retired:""},"0x00240092":{keyword:"AgeCorrectedSensitivityDeviationValue",vr:"FL",vm:"1",name:"Age Corrected Sensitivity Deviation Value",retired:""},"0x00240093":{keyword:"StimulusResults",vr:"CS",vm:"1",name:"Stimulus Results",retired:""},"0x00240094":{keyword:"SensitivityValue",vr:"FL",vm:"1",name:"Sensitivity Value",retired:""},"0x00240095":{keyword:"RetestStimulusSeen",vr:"CS",vm:"1",name:"Retest Stimulus Seen",retired:""},"0x00240096":{keyword:"RetestSensitivityValue",vr:"FL",vm:"1",name:"Retest Sensitivity Value",retired:""},"0x00240097":{keyword:"VisualFieldTestPointNormalsSequence",vr:"SQ",vm:"1",name:"Visual Field Test Point Normals Sequence",retired:""},"0x00240098":{keyword:"QuantifiedDefect",vr:"FL",vm:"1",name:"Quantified Defect",retired:""},"0x00240100":{keyword:"AgeCorrectedSensitivityDeviationProbabilityValue",vr:"FL",vm:"1",name:"Age Corrected Sensitivity Deviation Probability Value",retired:""},"0x00240102":{keyword:"GeneralizedDefectCorrectedSensitivityDeviationFlag",vr:"CS",vm:"1",name:"Generalized Defect Corrected Sensitivity Deviation Flag",retired:""},"0x00240103":{keyword:"GeneralizedDefectCorrectedSensitivityDeviationValue",vr:"FL",vm:"1",name:"Generalized Defect Corrected Sensitivity Deviation Value",retired:""},"0x00240104":{keyword:"GeneralizedDefectCorrectedSensitivityDeviationProbabilityValue",vr:"FL",vm:"1",name:"Generalized Defect Corrected Sensitivity Deviation Probability Value",retired:""},"0x00240105":{keyword:"MinimumSensitivityValue",vr:"FL",vm:"1",name:"Minimum Sensitivity Value",retired:""},"0x00240106":{keyword:"BlindSpotLocalized",vr:"CS",vm:"1",name:"Blind Spot Localized",retired:""},"0x00240107":{keyword:"BlindSpotXCoordinate",vr:"FL",vm:"1",name:"Blind Spot X-Coordinate",retired:""},"0x00240108":{keyword:"BlindSpotYCoordinate",vr:"FL",vm:"1",name:"Blind Spot Y-Coordinate",retired:""},"0x00240110":{keyword:"VisualAcuityMeasurementSequence",vr:"SQ",vm:"1",name:"Visual Acuity Measurement Sequence",retired:""},"0x00240112":{keyword:"RefractiveParametersUsedOnPatientSequence",vr:"SQ",vm:"1",name:"Refractive Parameters Used on Patient Sequence",retired:""},"0x00240113":{keyword:"MeasurementLaterality",vr:"CS",vm:"1",name:"Measurement Laterality",retired:""},"0x00240114":{keyword:"OphthalmicPatientClinicalInformationLeftEyeSequence",vr:"SQ",vm:"1",name:"Ophthalmic Patient Clinical Information Left Eye Sequence",retired:""},"0x00240115":{keyword:"OphthalmicPatientClinicalInformationRightEyeSequence",vr:"SQ",vm:"1",name:"Ophthalmic Patient Clinical Information Right Eye Sequence",retired:""},"0x00240117":{keyword:"FovealPointNormativeDataFlag",vr:"CS",vm:"1",name:"Foveal Point Normative Data Flag",retired:""},"0x00240118":{keyword:"FovealPointProbabilityValue",vr:"FL",vm:"1",name:"Foveal Point Probability Value",retired:""},"0x00240120":{keyword:"ScreeningBaselineMeasured",vr:"CS",vm:"1",name:"Screening Baseline Measured",retired:""},"0x00240122":{keyword:"ScreeningBaselineMeasuredSequence",vr:"SQ",vm:"1",name:"Screening Baseline Measured Sequence",retired:""},"0x00240124":{keyword:"ScreeningBaselineType",vr:"CS",vm:"1",name:"Screening Baseline Type",retired:""},"0x00240126":{keyword:"ScreeningBaselineValue",vr:"FL",vm:"1",name:"Screening Baseline Value",retired:""},"0x00240202":{keyword:"AlgorithmSource",vr:"LO",vm:"1",name:"Algorithm Source",retired:""},"0x00240306":{keyword:"DataSetName",vr:"LO",vm:"1",name:"Data Set Name",retired:""},"0x00240307":{keyword:"DataSetVersion",vr:"LO",vm:"1",name:"Data Set Version",retired:""},"0x00240308":{keyword:"DataSetSource",vr:"LO",vm:"1",name:"Data Set Source",retired:""},"0x00240309":{keyword:"DataSetDescription",vr:"LO",vm:"1",name:"Data Set Description",retired:""},"0x00240317":{keyword:"VisualFieldTestReliabilityGlobalIndexSequence",vr:"SQ",vm:"1",name:"Visual Field Test Reliability Global Index Sequence",retired:""},"0x00240320":{keyword:"VisualFieldGlobalResultsIndexSequence",vr:"SQ",vm:"1",name:"Visual Field Global Results Index Sequence",retired:""},"0x00240325":{keyword:"DataObservationSequence",vr:"SQ",vm:"1",name:"Data Observation Sequence",retired:""},"0x00240338":{keyword:"IndexNormalsFlag",vr:"CS",vm:"1",name:"Index Normals Flag",retired:""},"0x00240341":{keyword:"IndexProbability",vr:"FL",vm:"1",name:"Index Probability",retired:""},"0x00240344":{keyword:"IndexProbabilitySequence",vr:"SQ",vm:"1",name:"Index Probability Sequence",retired:""},"0x00280002":{keyword:"SamplesPerPixel",vr:"US",vm:"1",name:"Samples per Pixel",retired:""},"0x00280003":{keyword:"SamplesPerPixelUsed",vr:"US",vm:"1",name:"Samples per Pixel Used",retired:""},"0x00280004":{keyword:"PhotometricInterpretation",vr:"CS",vm:"1",name:"Photometric Interpretation",retired:""},"0x00280005":{keyword:"ImageDimensions",vr:"US",vm:"1",name:"Image Dimensions",retired:"Retired"},"0x00280006":{keyword:"PlanarConfiguration",vr:"US",vm:"1",name:"Planar Configuration",retired:""},"0x00280008":{keyword:"NumberOfFrames",vr:"IS",vm:"1",name:"Number of Frames",retired:""},"0x00280009":{keyword:"FrameIncrementPointer",vr:"AT",vm:"1-n",name:"Frame Increment Pointer",retired:""},"0x0028000A":{keyword:"FrameDimensionPointer",vr:"AT",vm:"1-n",name:"Frame Dimension Pointer",retired:""},"0x00280010":{keyword:"Rows",vr:"US",vm:"1",name:"Rows",retired:""},"0x00280011":{keyword:"Columns",vr:"US",vm:"1",name:"Columns",retired:""},"0x00280012":{keyword:"Planes",vr:"US",vm:"1",name:"Planes",retired:"Retired"},"0x00280014":{keyword:"UltrasoundColorDataPresent",vr:"US",vm:"1",name:"Ultrasound Color Data Present",retired:""},"0x00280020":{keyword:"",vr:"OB",vm:"1",name:"Retired-blank",retired:"Retired"},"0x00280030":{keyword:"PixelSpacing",vr:"DS",vm:"2",name:"Pixel Spacing",retired:""},"0x00280031":{keyword:"ZoomFactor",vr:"DS",vm:"2",name:"Zoom Factor",retired:""},"0x00280032":{keyword:"ZoomCenter",vr:"DS",vm:"2",name:"Zoom Center",retired:""},"0x00280034":{keyword:"PixelAspectRatio",vr:"IS",vm:"2",name:"Pixel Aspect Ratio",retired:""},"0x00280040":{keyword:"ImageFormat",vr:"CS",vm:"1",name:"Image Format",retired:"Retired"},"0x00280050":{keyword:"ManipulatedImage",vr:"LO",vm:"1-n",name:"Manipulated Image",retired:"Retired"},"0x00280051":{keyword:"CorrectedImage",vr:"CS",vm:"1-n",name:"Corrected Image",retired:""},"0x0028005F":{keyword:"CompressionRecognitionCode",vr:"LO",vm:"1",name:"Compression Recognition Code",retired:"Retired"},"0x00280060":{keyword:"CompressionCode",vr:"CS",vm:"1",name:"Compression Code",retired:"Retired"},"0x00280061":{keyword:"CompressionOriginator",vr:"SH",vm:"1",name:"Compression Originator",retired:"Retired"},"0x00280062":{keyword:"CompressionLabel",vr:"LO",vm:"1",name:"Compression Label",retired:"Retired"},"0x00280063":{keyword:"CompressionDescription",vr:"SH",vm:"1",name:"Compression Description",retired:"Retired"},"0x00280065":{keyword:"CompressionSequence",vr:"CS",vm:"1-n",name:"Compression Sequence",retired:"Retired"},"0x00280066":{keyword:"CompressionStepPointers",vr:"AT",vm:"1-n",name:"Compression Step Pointers",retired:"Retired"},"0x00280068":{keyword:"RepeatInterval",vr:"US",vm:"1",name:"Repeat Interval",retired:"Retired"},"0x00280069":{keyword:"BitsGrouped",vr:"US",vm:"1",name:"Bits Grouped",retired:"Retired"},"0x00280070":{keyword:"PerimeterTable",vr:"US",vm:"1-n",name:"Perimeter Table",retired:"Retired"},"0x00280071":{keyword:"PerimeterValue",vr:"US or SS",vm:"1",name:"Perimeter Value",retired:"Retired"},"0x00280080":{keyword:"PredictorRows",vr:"US",vm:"1",name:"Predictor Rows",retired:"Retired"},"0x00280081":{keyword:"PredictorColumns",vr:"US",vm:"1",name:"Predictor Columns",retired:"Retired"},"0x00280082":{keyword:"PredictorConstants",vr:"US",vm:"1-n",name:"Predictor Constants",retired:"Retired"},"0x00280090":{keyword:"BlockedPixels",vr:"CS",vm:"1",name:"Blocked Pixels",retired:"Retired"},"0x00280091":{keyword:"BlockRows",vr:"US",vm:"1",name:"Block Rows",retired:"Retired"},"0x00280092":{keyword:"BlockColumns",vr:"US",vm:"1",name:"Block Columns",retired:"Retired"},"0x00280093":{keyword:"RowOverlap",vr:"US",vm:"1",name:"Row Overlap",retired:"Retired"},"0x00280094":{keyword:"ColumnOverlap",vr:"US",vm:"1",name:"Column Overlap",retired:"Retired"},"0x00280100":{keyword:"BitsAllocated",vr:"US",vm:"1",name:"Bits Allocated",retired:""},"0x00280101":{keyword:"BitsStored",vr:"US",vm:"1",name:"Bits Stored",retired:""},"0x00280102":{keyword:"HighBit",vr:"US",vm:"1",name:"High Bit",retired:""},"0x00280103":{keyword:"PixelRepresentation",vr:"US",vm:"1",name:"Pixel Representation",retired:""},"0x00280104":{keyword:"SmallestValidPixelValue",vr:"US or SS",vm:"1",name:"Smallest Valid Pixel Value",retired:"Retired"},"0x00280105":{keyword:"LargestValidPixelValue",vr:"US or SS",vm:"1",name:"Largest Valid Pixel Value",retired:"Retired"},"0x00280106":{keyword:"SmallestImagePixelValue",vr:"US or SS",vm:"1",name:"Smallest Image Pixel Value",retired:""},"0x00280107":{keyword:"LargestImagePixelValue",vr:"US or SS",vm:"1",name:"Largest Image Pixel Value",retired:""},"0x00280108":{keyword:"SmallestPixelValueInSeries",vr:"US or SS",vm:"1",name:"Smallest Pixel Value in Series",retired:""},"0x00280109":{keyword:"LargestPixelValueInSeries",vr:"US or SS",vm:"1",name:"Largest Pixel Value in Series",retired:""},"0x00280110":{keyword:"SmallestImagePixelValueInPlane",vr:"US or SS",vm:"1",name:"Smallest Image Pixel Value in Plane",retired:"Retired"},"0x00280111":{keyword:"LargestImagePixelValueInPlane",vr:"US or SS",vm:"1",name:"Largest Image Pixel Value in Plane",retired:"Retired"},"0x00280120":{keyword:"PixelPaddingValue",vr:"US or SS",vm:"1",name:"Pixel Padding Value",retired:""},"0x00280121":{keyword:"PixelPaddingRangeLimit",vr:"US or SS",vm:"1",name:"Pixel Padding Range Limit",retired:""},"0x00280122":{keyword:"FloatPixelPaddingValue",vr:"FL",vm:"1",name:"Float Pixel Padding Value",retired:""},"0x00280123":{keyword:"DoubleFloatPixelPaddingValue",vr:"FD",vm:"1",name:"Double Float Pixel Padding Value",retired:""},"0x00280124":{keyword:"FloatPixelPaddingRangeLimit",vr:"FL",vm:"1",name:"Float Pixel Padding Range Limit",retired:""},"0x00280125":{keyword:"DoubleFloatPixelPaddingRangeLimit",vr:"FD",vm:"1",name:"Double Float Pixel Padding Range Limit",retired:""},"0x00280200":{keyword:"ImageLocation",vr:"US",vm:"1",name:"Image Location",retired:"Retired"},"0x00280300":{keyword:"QualityControlImage",vr:"CS",vm:"1",name:"Quality Control Image",retired:""},"0x00280301":{keyword:"BurnedInAnnotation",vr:"CS",vm:"1",name:"Burned In Annotation",retired:""},"0x00280302":{keyword:"RecognizableVisualFeatures",vr:"CS",vm:"1",name:"Recognizable Visual Features",retired:""},"0x00280303":{keyword:"LongitudinalTemporalInformationModified",vr:"CS",vm:"1",name:"Longitudinal Temporal Information Modified",retired:""},"0x00280304":{keyword:"ReferencedColorPaletteInstanceUID",vr:"UI",vm:"1",name:"Referenced Color Palette Instance UID",retired:""},"0x00280400":{keyword:"TransformLabel",vr:"LO",vm:"1",name:"Transform Label",retired:"Retired"},"0x00280401":{keyword:"TransformVersionNumber",vr:"LO",vm:"1",name:"Transform Version Number",retired:"Retired"},"0x00280402":{keyword:"NumberOfTransformSteps",vr:"US",vm:"1",name:"Number of Transform Steps",retired:"Retired"},"0x00280403":{keyword:"SequenceOfCompressedData",vr:"LO",vm:"1-n",name:"Sequence of Compressed Data",retired:"Retired"},"0x00280404":{keyword:"DetailsOfCoefficients",vr:"AT",vm:"1-n",name:"Details of Coefficients",retired:"Retired"},"0x00280700":{keyword:"DCTLabel",vr:"LO",vm:"1",name:"DCT Label",retired:"Retired"},"0x00280701":{keyword:"DataBlockDescription",vr:"CS",vm:"1-n",name:"Data Block Description",retired:"Retired"},"0x00280702":{keyword:"DataBlock",vr:"AT",vm:"1-n",name:"Data Block",retired:"Retired"},"0x00280710":{keyword:"NormalizationFactorFormat",vr:"US",vm:"1",name:"Normalization Factor Format",retired:"Retired"},"0x00280720":{keyword:"ZonalMapNumberFormat",vr:"US",vm:"1",name:"Zonal Map Number Format",retired:"Retired"},"0x00280721":{keyword:"ZonalMapLocation",vr:"AT",vm:"1-n",name:"Zonal Map Location",retired:"Retired"},"0x00280722":{keyword:"ZonalMapFormat",vr:"US",vm:"1",name:"Zonal Map Format",retired:"Retired"},"0x00280730":{keyword:"AdaptiveMapFormat",vr:"US",vm:"1",name:"Adaptive Map Format",retired:"Retired"},"0x00280740":{keyword:"CodeNumberFormat",vr:"US",vm:"1",name:"Code Number Format",retired:"Retired"},"0x00280A02":{keyword:"PixelSpacingCalibrationType",vr:"CS",vm:"1",name:"Pixel Spacing Calibration Type",retired:""},"0x00280A04":{keyword:"PixelSpacingCalibrationDescription",vr:"LO",vm:"1",name:"Pixel Spacing Calibration Description",retired:""},"0x00281040":{keyword:"PixelIntensityRelationship",vr:"CS",vm:"1",name:"Pixel Intensity Relationship",retired:""},"0x00281041":{keyword:"PixelIntensityRelationshipSign",vr:"SS",vm:"1",name:"Pixel Intensity Relationship Sign",retired:""},"0x00281050":{keyword:"WindowCenter",vr:"DS",vm:"1-n",name:"Window Center",retired:""},"0x00281051":{keyword:"WindowWidth",vr:"DS",vm:"1-n",name:"Window Width",retired:""},"0x00281052":{keyword:"RescaleIntercept",vr:"DS",vm:"1",name:"Rescale Intercept",retired:""},"0x00281053":{keyword:"RescaleSlope",vr:"DS",vm:"1",name:"Rescale Slope",retired:""},"0x00281054":{keyword:"RescaleType",vr:"LO",vm:"1",name:"Rescale Type",retired:""},"0x00281055":{keyword:"WindowCenterWidthExplanation",vr:"LO",vm:"1-n",name:"Window Center & Width Explanation",retired:""},"0x00281056":{keyword:"VOILUTFunction",vr:"CS",vm:"1",name:"VOI LUT Function",retired:""},"0x00281080":{keyword:"GrayScale",vr:"CS",vm:"1",name:"Gray Scale",retired:"Retired"},"0x00281090":{keyword:"RecommendedViewingMode",vr:"CS",vm:"1",name:"Recommended Viewing Mode",retired:""},"0x00281100":{keyword:"GrayLookupTableDescriptor",vr:"US or SS",vm:"3",name:"Gray Lookup Table Descriptor",retired:"Retired"},"0x00281101":{keyword:"RedPaletteColorLookupTableDescriptor",vr:"US or SS",vm:"3",name:"Red Palette Color Lookup Table Descriptor",retired:""},"0x00281102":{keyword:"GreenPaletteColorLookupTableDescriptor",vr:"US or SS",vm:"3",name:"Green Palette Color Lookup Table Descriptor",retired:""},"0x00281103":{keyword:"BluePaletteColorLookupTableDescriptor",vr:"US or SS",vm:"3",name:"Blue Palette Color Lookup Table Descriptor",retired:""},"0x00281104":{keyword:"AlphaPaletteColorLookupTableDescriptor",vr:"US",vm:"3",name:"Alpha Palette Color Lookup Table Descriptor",retired:""},"0x00281111":{keyword:"LargeRedPaletteColorLookupTableDescriptor",vr:"US or SS",vm:"4",name:"Large Red Palette Color Lookup Table Descriptor",retired:"Retired"},"0x00281112":{keyword:"LargeGreenPaletteColorLookupTableDescriptor",vr:"US or SS",vm:"4",name:"Large Green Palette Color Lookup Table Descriptor",retired:"Retired"},"0x00281113":{keyword:"LargeBluePaletteColorLookupTableDescriptor",vr:"US or SS",vm:"4",name:"Large Blue Palette Color Lookup Table Descriptor",retired:"Retired"},"0x00281199":{keyword:"PaletteColorLookupTableUID",vr:"UI",vm:"1",name:"Palette Color Lookup Table UID",retired:""},"0x00281200":{keyword:"GrayLookupTableData",vr:"US or SS or OW",vm:"1-n or 1",name:"Gray Lookup Table Data",retired:"Retired"},"0x00281201":{keyword:"RedPaletteColorLookupTableData",vr:"OW",vm:"1",name:"Red Palette Color Lookup Table Data",retired:""},"0x00281202":{keyword:"GreenPaletteColorLookupTableData",vr:"OW",vm:"1",name:"Green Palette Color Lookup Table Data",retired:""},"0x00281203":{keyword:"BluePaletteColorLookupTableData",vr:"OW",vm:"1",name:"Blue Palette Color Lookup Table Data",retired:""},"0x00281204":{keyword:"AlphaPaletteColorLookupTableData",vr:"OW",vm:"1",name:"Alpha Palette Color Lookup Table Data",retired:""},"0x00281211":{keyword:"LargeRedPaletteColorLookupTableData",vr:"OW",vm:"1",name:"Large Red Palette Color Lookup Table Data",retired:"Retired"},"0x00281212":{keyword:"LargeGreenPaletteColorLookupTableData",vr:"OW",vm:"1",name:"Large Green Palette Color Lookup Table Data",retired:"Retired"},"0x00281213":{keyword:"LargeBluePaletteColorLookupTableData",vr:"OW",vm:"1",name:"Large Blue Palette Color Lookup Table Data",retired:"Retired"},"0x00281214":{keyword:"LargePaletteColorLookupTableUID",vr:"UI",vm:"1",name:"Large Palette Color Lookup Table UID",retired:"Retired"},"0x00281221":{keyword:"SegmentedRedPaletteColorLookupTableData",vr:"OW",vm:"1",name:"Segmented Red Palette Color Lookup Table Data",retired:""},"0x00281222":{keyword:"SegmentedGreenPaletteColorLookupTableData",vr:"OW",vm:"1",name:"Segmented Green Palette Color Lookup Table Data",retired:""},"0x00281223":{keyword:"SegmentedBluePaletteColorLookupTableData",vr:"OW",vm:"1",name:"Segmented Blue Palette Color Lookup Table Data",retired:""},"0x00281224":{keyword:"SegmentedAlphaPaletteColorLookupTableData",vr:"OW",vm:"1",name:"Segmented Alpha Palette Color Lookup Table Data",retired:""},"0x00281230":{keyword:"StoredValueColorRangeSequence",vr:"SQ",vm:"1",name:"Stored Value Color Range Sequence",retired:""},"0x00281231":{keyword:"MinimumStoredValueMapped",vr:"FD",vm:"1",name:"Minimum Stored Value Mapped",retired:""},"0x00281232":{keyword:"MaximumStoredValueMapped",vr:"FD",vm:"1",name:"Maximum Stored Value Mapped",retired:""},"0x00281300":{keyword:"BreastImplantPresent",vr:"CS",vm:"1",name:"Breast Implant Present",retired:""},"0x00281350":{keyword:"PartialView",vr:"CS",vm:"1",name:"Partial View",retired:""},"0x00281351":{keyword:"PartialViewDescription",vr:"ST",vm:"1",name:"Partial View Description",retired:""},"0x00281352":{keyword:"PartialViewCodeSequence",vr:"SQ",vm:"1",name:"Partial View Code Sequence",retired:""},"0x0028135A":{keyword:"SpatialLocationsPreserved",vr:"CS",vm:"1",name:"Spatial Locations Preserved",retired:""},"0x00281401":{keyword:"DataFrameAssignmentSequence",vr:"SQ",vm:"1",name:"Data Frame Assignment Sequence",retired:""},"0x00281402":{keyword:"DataPathAssignment",vr:"CS",vm:"1",name:"Data Path Assignment",retired:""},"0x00281403":{keyword:"BitsMappedToColorLookupTable",vr:"US",vm:"1",name:"Bits Mapped to Color Lookup Table",retired:""},"0x00281404":{keyword:"BlendingLUT1Sequence",vr:"SQ",vm:"1",name:"Blending LUT 1 Sequence",retired:""},"0x00281405":{keyword:"BlendingLUT1TransferFunction",vr:"CS",vm:"1",name:"Blending LUT 1 Transfer Function",retired:""},"0x00281406":{keyword:"BlendingWeightConstant",vr:"FD",vm:"1",name:"Blending Weight Constant",retired:""},"0x00281407":{keyword:"BlendingLookupTableDescriptor",vr:"US",vm:"3",name:"Blending Lookup Table Descriptor",retired:""},"0x00281408":{keyword:"BlendingLookupTableData",vr:"OW",vm:"1",name:"Blending Lookup Table Data",retired:""},"0x0028140B":{keyword:"EnhancedPaletteColorLookupTableSequence",vr:"SQ",vm:"1",name:"Enhanced Palette Color Lookup Table Sequence",retired:""},"0x0028140C":{keyword:"BlendingLUT2Sequence",vr:"SQ",vm:"1",name:"Blending LUT 2 Sequence",retired:""},"0x0028140D":{keyword:"BlendingLUT2TransferFunction",vr:"CS",vm:"1",name:"Blending LUT 2 Transfer Function",retired:""},"0x0028140E":{keyword:"DataPathID",vr:"CS",vm:"1",name:"Data Path ID",retired:""},"0x0028140F":{keyword:"RGBLUTTransferFunction",vr:"CS",vm:"1",name:"RGB LUT Transfer Function",retired:""},"0x00281410":{keyword:"AlphaLUTTransferFunction",vr:"CS",vm:"1",name:"Alpha LUT Transfer Function",retired:""},"0x00282000":{keyword:"ICCProfile",vr:"OB",vm:"1",name:"ICC Profile",retired:""},"0x00282002":{keyword:"ColorSpace",vr:"CS",vm:"1",name:"Color Space",retired:""},"0x00282110":{keyword:"LossyImageCompression",vr:"CS",vm:"1",name:"Lossy Image Compression",retired:""},"0x00282112":{keyword:"LossyImageCompressionRatio",vr:"DS",vm:"1-n",name:"Lossy Image Compression Ratio",retired:""},"0x00282114":{keyword:"LossyImageCompressionMethod",vr:"CS",vm:"1-n",name:"Lossy Image Compression Method",retired:""},"0x00283000":{keyword:"ModalityLUTSequence",vr:"SQ",vm:"1",name:"Modality LUT Sequence",retired:""},"0x00283001":{keyword:"VariableModalityLUTSequence",vr:"SQ",vm:"1",name:"Variable Modality LUT Sequence",retired:""},"0x00283002":{keyword:"LUTDescriptor",vr:"US or SS",vm:"3",name:"LUT Descriptor",retired:""},"0x00283003":{keyword:"LUTExplanation",vr:"LO",vm:"1",name:"LUT Explanation",retired:""},"0x00283004":{keyword:"ModalityLUTType",vr:"LO",vm:"1",name:"Modality LUT Type",retired:""},"0x00283006":{keyword:"LUTData",vr:"US or OW",vm:"1-n or 1",name:"LUT Data",retired:""},"0x00283010":{keyword:"VOILUTSequence",vr:"SQ",vm:"1",name:"VOI LUT Sequence",retired:""},"0x00283110":{keyword:"SoftcopyVOILUTSequence",vr:"SQ",vm:"1",name:"Softcopy VOI LUT Sequence",retired:""},"0x00284000":{keyword:"ImagePresentationComments",vr:"LT",vm:"1",name:"Image Presentation Comments",retired:"Retired"},"0x00285000":{keyword:"BiPlaneAcquisitionSequence",vr:"SQ",vm:"1",name:"Bi-Plane Acquisition Sequence",retired:"Retired"},"0x00286010":{keyword:"RepresentativeFrameNumber",vr:"US",vm:"1",name:"Representative Frame Number",retired:""},"0x00286020":{keyword:"FrameNumbersOfInterest",vr:"US",vm:"1-n",name:"Frame Numbers of Interest (FOI)",retired:""},"0x00286022":{keyword:"FrameOfInterestDescription",vr:"LO",vm:"1-n",name:"Frame of Interest Description",retired:""},"0x00286023":{keyword:"FrameOfInterestType",vr:"CS",vm:"1-n",name:"Frame of Interest Type",retired:""},"0x00286030":{keyword:"MaskPointers",vr:"US",vm:"1-n",name:"Mask Pointer(s)",retired:"Retired"},"0x00286040":{keyword:"RWavePointer",vr:"US",vm:"1-n",name:"R Wave Pointer",retired:""},"0x00286100":{keyword:"MaskSubtractionSequence",vr:"SQ",vm:"1",name:"Mask Subtraction Sequence",retired:""},"0x00286101":{keyword:"MaskOperation",vr:"CS",vm:"1",name:"Mask Operation",retired:""},"0x00286102":{keyword:"ApplicableFrameRange",vr:"US",vm:"2-2n",name:"Applicable Frame Range",retired:""},"0x00286110":{keyword:"MaskFrameNumbers",vr:"US",vm:"1-n",name:"Mask Frame Numbers",retired:""},"0x00286112":{keyword:"ContrastFrameAveraging",vr:"US",vm:"1",name:"Contrast Frame Averaging",retired:""},"0x00286114":{keyword:"MaskSubPixelShift",vr:"FL",vm:"2",name:"Mask Sub-pixel Shift",retired:""},"0x00286120":{keyword:"TIDOffset",vr:"SS",vm:"1",name:"TID Offset",retired:""},"0x00286190":{keyword:"MaskOperationExplanation",vr:"ST",vm:"1",name:"Mask Operation Explanation",retired:""},"0x00287000":{keyword:"EquipmentAdministratorSequence",vr:"SQ",vm:"1",name:"Equipment Administrator Sequence",retired:""},"0x00287001":{keyword:"NumberOfDisplaySubsystems",vr:"US",vm:"1",name:"Number of Display Subsystems",retired:""},"0x00287002":{keyword:"CurrentConfigurationID",vr:"US",vm:"1",name:"Current Configuration ID",retired:""},"0x00287003":{keyword:"DisplaySubsystemID",vr:"US",vm:"1",name:"Display Subsystem ID",retired:""},"0x00287004":{keyword:"DisplaySubsystemName",vr:"SH",vm:"1",name:"Display Subsystem Name",retired:""},"0x00287005":{keyword:"DisplaySubsystemDescription",vr:"LO",vm:"1",name:"Display Subsystem Description",retired:""},"0x00287006":{keyword:"SystemStatus",vr:"CS",vm:"1",name:"System Status",retired:""},"0x00287007":{keyword:"SystemStatusComment",vr:"LO",vm:"1",name:"System Status Comment",retired:""},"0x00287008":{keyword:"TargetLuminanceCharacteristicsSequence",vr:"SQ",vm:"1",name:"Target Luminance Characteristics Sequence",retired:""},"0x00287009":{keyword:"LuminanceCharacteristicsID",vr:"US",vm:"1",name:"Luminance Characteristics ID",retired:""},"0x0028700A":{keyword:"DisplaySubsystemConfigurationSequence",vr:"SQ",vm:"1",name:"Display Subsystem Configuration Sequence",retired:""},"0x0028700B":{keyword:"ConfigurationID",vr:"US",vm:"1",name:"Configuration ID",retired:""},"0x0028700C":{keyword:"ConfigurationName",vr:"SH",vm:"1",name:"Configuration Name",retired:""},"0x0028700D":{keyword:"ConfigurationDescription",vr:"LO",vm:"1",name:"Configuration Description",retired:""},"0x0028700E":{keyword:"ReferencedTargetLuminanceCharacteristicsID",vr:"US",vm:"1",name:"Referenced Target Luminance Characteristics ID",retired:""},"0x0028700F":{keyword:"QAResultsSequence",vr:"SQ",vm:"1",name:"QA Results Sequence",retired:""},"0x00287010":{keyword:"DisplaySubsystemQAResultsSequence",vr:"SQ",vm:"1",name:"Display Subsystem QA Results Sequence",retired:""},"0x00287011":{keyword:"ConfigurationQAResultsSequence",vr:"SQ",vm:"1",name:"Configuration QA Results Sequence",retired:""},"0x00287012":{keyword:"MeasurementEquipmentSequence",vr:"SQ",vm:"1",name:"Measurement Equipment Sequence",retired:""},"0x00287013":{keyword:"MeasurementFunctions",vr:"CS",vm:"1-n",name:"Measurement Functions",retired:""},"0x00287014":{keyword:"MeasurementEquipmentType",vr:"CS",vm:"1",name:"Measurement Equipment Type",retired:""},"0x00287015":{keyword:"VisualEvaluationResultSequence",vr:"SQ",vm:"1",name:"Visual Evaluation Result Sequence",retired:""},"0x00287016":{keyword:"DisplayCalibrationResultSequence",vr:"SQ",vm:"1",name:"Display Calibration Result Sequence",retired:""},"0x00287017":{keyword:"DDLValue",vr:"US",vm:"1",name:"DDL Value",retired:""},"0x00287018":{keyword:"CIExyWhitePoint",vr:"FL",vm:"2",name:"CIExy White Point",retired:""},"0x00287019":{keyword:"DisplayFunctionType",vr:"CS",vm:"1",name:"Display Function Type",retired:""},"0x0028701A":{keyword:"GammaValue",vr:"FL",vm:"1",name:"Gamma Value",retired:""},"0x0028701B":{keyword:"NumberOfLuminancePoints",vr:"US",vm:"1",name:"Number of Luminance Points",retired:""},"0x0028701C":{keyword:"LuminanceResponseSequence",vr:"SQ",vm:"1",name:"Luminance Response Sequence",retired:""},"0x0028701D":{keyword:"TargetMinimumLuminance",vr:"FL",vm:"1",name:"Target Minimum Luminance",retired:""},"0x0028701E":{keyword:"TargetMaximumLuminance",vr:"FL",vm:"1",name:"Target Maximum Luminance",retired:""},"0x0028701F":{keyword:"LuminanceValue",vr:"FL",vm:"1",name:"Luminance Value",retired:""},"0x00287020":{keyword:"LuminanceResponseDescription",vr:"LO",vm:"1",name:"Luminance Response Description",retired:""},"0x00287021":{keyword:"WhitePointFlag",vr:"CS",vm:"1",name:"White Point Flag",retired:""},"0x00287022":{keyword:"DisplayDeviceTypeCodeSequence",vr:"SQ",vm:"1",name:"Display Device Type Code Sequence",retired:""},"0x00287023":{keyword:"DisplaySubsystemSequence",vr:"SQ",vm:"1",name:"Display Subsystem Sequence",retired:""},"0x00287024":{keyword:"LuminanceResultSequence",vr:"SQ",vm:"1",name:"Luminance Result Sequence",retired:""},"0x00287025":{keyword:"AmbientLightValueSource",vr:"CS",vm:"1",name:"Ambient Light Value Source",retired:""},"0x00287026":{keyword:"MeasuredCharacteristics",vr:"CS",vm:"1-n",name:"Measured Characteristics",retired:""},"0x00287027":{keyword:"LuminanceUniformityResultSequence",vr:"SQ",vm:"1",name:"Luminance Uniformity Result Sequence",retired:""},"0x00287028":{keyword:"VisualEvaluationTestSequence",vr:"SQ",vm:"1",name:"Visual Evaluation Test Sequence",retired:""},"0x00287029":{keyword:"TestResult",vr:"CS",vm:"1",name:"Test Result",retired:""},"0x0028702A":{keyword:"TestResultComment",vr:"LO",vm:"1",name:"Test Result Comment",retired:""},"0x0028702B":{keyword:"TestImageValidation",vr:"CS",vm:"1",name:"Test Image Validation",retired:""},"0x0028702C":{keyword:"TestPatternCodeSequence",vr:"SQ",vm:"1",name:"Test Pattern Code Sequence",retired:""},"0x0028702D":{keyword:"MeasurementPatternCodeSequence",vr:"SQ",vm:"1",name:"Measurement Pattern Code Sequence",retired:""},"0x0028702E":{keyword:"VisualEvaluationMethodCodeSequence",vr:"SQ",vm:"1",name:"Visual Evaluation Method Code Sequence",retired:""},"0x00287FE0":{keyword:"PixelDataProviderURL",vr:"UR",vm:"1",name:"Pixel Data Provider URL",retired:""},"0x00289001":{keyword:"DataPointRows",vr:"UL",vm:"1",name:"Data Point Rows",retired:""},"0x00289002":{keyword:"DataPointColumns",vr:"UL",vm:"1",name:"Data Point Columns",retired:""},"0x00289003":{keyword:"SignalDomainColumns",vr:"CS",vm:"1",name:"Signal Domain Columns",retired:""},"0x00289099":{keyword:"LargestMonochromePixelValue",vr:"US",vm:"1",name:"Largest Monochrome Pixel Value",retired:"Retired"},"0x00289108":{keyword:"DataRepresentation",vr:"CS",vm:"1",name:"Data Representation",retired:""},"0x00289110":{keyword:"PixelMeasuresSequence",vr:"SQ",vm:"1",name:"Pixel Measures Sequence",retired:""},"0x00289132":{keyword:"FrameVOILUTSequence",vr:"SQ",vm:"1",name:"Frame VOI LUT Sequence",retired:""},"0x00289145":{keyword:"PixelValueTransformationSequence",vr:"SQ",vm:"1",name:"Pixel Value Transformation Sequence",retired:""},"0x00289235":{keyword:"SignalDomainRows",vr:"CS",vm:"1",name:"Signal Domain Rows",retired:""},"0x00289411":{keyword:"DisplayFilterPercentage",vr:"FL",vm:"1",name:"Display Filter Percentage",retired:""},"0x00289415":{keyword:"FramePixelShiftSequence",vr:"SQ",vm:"1",name:"Frame Pixel Shift Sequence",retired:""},"0x00289416":{keyword:"SubtractionItemID",vr:"US",vm:"1",name:"Subtraction Item ID",retired:""},"0x00289422":{keyword:"PixelIntensityRelationshipLUTSequence",vr:"SQ",vm:"1",name:"Pixel Intensity Relationship LUT Sequence",retired:""},"0x00289443":{keyword:"FramePixelDataPropertiesSequence",vr:"SQ",vm:"1",name:"Frame Pixel Data Properties Sequence",retired:""},"0x00289444":{keyword:"GeometricalProperties",vr:"CS",vm:"1",name:"Geometrical Properties",retired:""},"0x00289445":{keyword:"GeometricMaximumDistortion",vr:"FL",vm:"1",name:"Geometric Maximum Distortion",retired:""},"0x00289446":{keyword:"ImageProcessingApplied",vr:"CS",vm:"1-n",name:"Image Processing Applied",retired:""},"0x00289454":{keyword:"MaskSelectionMode",vr:"CS",vm:"1",name:"Mask Selection Mode",retired:""},"0x00289474":{keyword:"LUTFunction",vr:"CS",vm:"1",name:"LUT Function",retired:""},"0x00289478":{keyword:"MaskVisibilityPercentage",vr:"FL",vm:"1",name:"Mask Visibility Percentage",retired:""},"0x00289501":{keyword:"PixelShiftSequence",vr:"SQ",vm:"1",name:"Pixel Shift Sequence",retired:""},"0x00289502":{keyword:"RegionPixelShiftSequence",vr:"SQ",vm:"1",name:"Region Pixel Shift Sequence",retired:""},"0x00289503":{keyword:"VerticesOfTheRegion",vr:"SS",vm:"2-2n",name:"Vertices of the Region",retired:""},"0x00289505":{keyword:"MultiFramePresentationSequence",vr:"SQ",vm:"1",name:"Multi-frame Presentation Sequence",retired:""},"0x00289506":{keyword:"PixelShiftFrameRange",vr:"US",vm:"2-2n",name:"Pixel Shift Frame Range",retired:""},"0x00289507":{keyword:"LUTFrameRange",vr:"US",vm:"2-2n",name:"LUT Frame Range",retired:""},"0x00289520":{keyword:"ImageToEquipmentMappingMatrix",vr:"DS",vm:"16",name:"Image to Equipment Mapping Matrix",retired:""},"0x00289537":{keyword:"EquipmentCoordinateSystemIdentification",vr:"CS",vm:"1",name:"Equipment Coordinate System Identification",retired:""},"0x0032000A":{keyword:"StudyStatusID",vr:"CS",vm:"1",name:"Study Status ID",retired:"Retired"},"0x0032000C":{keyword:"StudyPriorityID",vr:"CS",vm:"1",name:"Study Priority ID",retired:"Retired"},"0x00320012":{keyword:"StudyIDIssuer",vr:"LO",vm:"1",name:"Study ID Issuer",retired:"Retired"},"0x00320032":{keyword:"StudyVerifiedDate",vr:"DA",vm:"1",name:"Study Verified Date",retired:"Retired"},"0x00320033":{keyword:"StudyVerifiedTime",vr:"TM",vm:"1",name:"Study Verified Time",retired:"Retired"},"0x00320034":{keyword:"StudyReadDate",vr:"DA",vm:"1",name:"Study Read Date",retired:"Retired"},"0x00320035":{keyword:"StudyReadTime",vr:"TM",vm:"1",name:"Study Read Time",retired:"Retired"},"0x00321000":{keyword:"ScheduledStudyStartDate",vr:"DA",vm:"1",name:"Scheduled Study Start Date",retired:"Retired"},"0x00321001":{keyword:"ScheduledStudyStartTime",vr:"TM",vm:"1",name:"Scheduled Study Start Time",retired:"Retired"},"0x00321010":{keyword:"ScheduledStudyStopDate",vr:"DA",vm:"1",name:"Scheduled Study Stop Date",retired:"Retired"},"0x00321011":{keyword:"ScheduledStudyStopTime",vr:"TM",vm:"1",name:"Scheduled Study Stop Time",retired:"Retired"},"0x00321020":{keyword:"ScheduledStudyLocation",vr:"LO",vm:"1",name:"Scheduled Study Location",retired:"Retired"},"0x00321021":{keyword:"ScheduledStudyLocationAETitle",vr:"AE",vm:"1-n",name:"Scheduled Study Location AE Title",retired:"Retired"},"0x00321030":{keyword:"ReasonForStudy",vr:"LO",vm:"1",name:"Reason for Study",retired:"Retired"},"0x00321031":{keyword:"RequestingPhysicianIdentificationSequence",vr:"SQ",vm:"1",name:"Requesting Physician Identification Sequence",retired:""},"0x00321032":{keyword:"RequestingPhysician",vr:"PN",vm:"1",name:"Requesting Physician",retired:""},"0x00321033":{keyword:"RequestingService",vr:"LO",vm:"1",name:"Requesting Service",retired:""},"0x00321034":{keyword:"RequestingServiceCodeSequence",vr:"SQ",vm:"1",name:"Requesting Service Code Sequence",retired:""},"0x00321040":{keyword:"StudyArrivalDate",vr:"DA",vm:"1",name:"Study Arrival Date",retired:"Retired"},"0x00321041":{keyword:"StudyArrivalTime",vr:"TM",vm:"1",name:"Study Arrival Time",retired:"Retired"},"0x00321050":{keyword:"StudyCompletionDate",vr:"DA",vm:"1",name:"Study Completion Date",retired:"Retired"},"0x00321051":{keyword:"StudyCompletionTime",vr:"TM",vm:"1",name:"Study Completion Time",retired:"Retired"},"0x00321055":{keyword:"StudyComponentStatusID",vr:"CS",vm:"1",name:"Study Component Status ID",retired:"Retired"},"0x00321060":{keyword:"RequestedProcedureDescription",vr:"LO",vm:"1",name:"Requested Procedure Description",retired:""},"0x00321064":{keyword:"RequestedProcedureCodeSequence",vr:"SQ",vm:"1",name:"Requested Procedure Code Sequence",retired:""},"0x00321065":{keyword:"RequestedLateralityCodeSequence",vr:"SQ",vm:"1",name:"Requested Laterality Code Sequence",retired:""},"0x00321066":{keyword:"ReasonForVisit",vr:"UT",vm:"1",name:"Reason for Visit",retired:""},"0x00321067":{keyword:"ReasonForVisitCodeSequence",vr:"SQ",vm:"1",name:"Reason for Visit Code Sequence",retired:""},"0x00321070":{keyword:"RequestedContrastAgent",vr:"LO",vm:"1",name:"Requested Contrast Agent",retired:""},"0x00324000":{keyword:"StudyComments",vr:"LT",vm:"1",name:"Study Comments",retired:"Retired"},"0x00340001":{keyword:"FlowIdentifierSequence",vr:"SQ",vm:"1",name:"Flow Identifier Sequence",retired:""},"0x00340002":{keyword:"FlowIdentifier",vr:"OB",vm:"1",name:"Flow Identifier",retired:""},"0x00340003":{keyword:"FlowTransferSyntaxUID",vr:"UI",vm:"1",name:"Flow Transfer Syntax UID",retired:""},"0x00340004":{keyword:"FlowRTPSamplingRate",vr:"UL",vm:"1",name:"Flow RTP Sampling Rate",retired:""},"0x00340005":{keyword:"SourceIdentifier",vr:"OB",vm:"1",name:"Source Identifier",retired:""},"0x00340007":{keyword:"FrameOriginTimestamp",vr:"OB",vm:"1",name:"Frame Origin Timestamp",retired:""},"0x00340008":{keyword:"IncludesImagingSubject",vr:"CS",vm:"1",name:"Includes Imaging Subject",retired:""},"0x00340009":{keyword:"FrameUsefulnessGroupSequence",vr:"SQ",vm:"1",name:"Frame Usefulness Group Sequence",retired:""},"0x0034000A":{keyword:"RealTimeBulkDataFlowSequence",vr:"SQ",vm:"1",name:"Real-Time Bulk Data Flow Sequence",retired:""},"0x0034000B":{keyword:"CameraPositionGroupSequence",vr:"SQ",vm:"1",name:"Camera Position Group Sequence",retired:""},"0x0034000C":{keyword:"IncludesInformation",vr:"CS",vm:"1",name:"Includes Information",retired:""},"0x0034000D":{keyword:"TimeOfFrameGroupSequence",vr:"SQ",vm:"1",name:"Time of Frame Group Sequence",retired:""},"0x00380004":{keyword:"ReferencedPatientAliasSequence",vr:"SQ",vm:"1",name:"Referenced Patient Alias Sequence",retired:"Retired"},"0x00380008":{keyword:"VisitStatusID",vr:"CS",vm:"1",name:"Visit Status ID",retired:""},"0x00380010":{keyword:"AdmissionID",vr:"LO",vm:"1",name:"Admission ID",retired:""},"0x00380011":{keyword:"IssuerOfAdmissionID",vr:"LO",vm:"1",name:"Issuer of Admission ID",retired:"Retired"},"0x00380014":{keyword:"IssuerOfAdmissionIDSequence",vr:"SQ",vm:"1",name:"Issuer of Admission ID Sequence",retired:""},"0x00380016":{keyword:"RouteOfAdmissions",vr:"LO",vm:"1",name:"Route of Admissions",retired:""},"0x0038001A":{keyword:"ScheduledAdmissionDate",vr:"DA",vm:"1",name:"Scheduled Admission Date",retired:"Retired"},"0x0038001B":{keyword:"ScheduledAdmissionTime",vr:"TM",vm:"1",name:"Scheduled Admission Time",retired:"Retired"},"0x0038001C":{keyword:"ScheduledDischargeDate",vr:"DA",vm:"1",name:"Scheduled Discharge Date",retired:"Retired"},"0x0038001D":{keyword:"ScheduledDischargeTime",vr:"TM",vm:"1",name:"Scheduled Discharge Time",retired:"Retired"},"0x0038001E":{keyword:"ScheduledPatientInstitutionResidence",vr:"LO",vm:"1",name:"Scheduled Patient Institution Residence",retired:"Retired"},"0x00380020":{keyword:"AdmittingDate",vr:"DA",vm:"1",name:"Admitting Date",retired:""},"0x00380021":{keyword:"AdmittingTime",vr:"TM",vm:"1",name:"Admitting Time",retired:""},"0x00380030":{keyword:"DischargeDate",vr:"DA",vm:"1",name:"Discharge Date",retired:"Retired"},"0x00380032":{keyword:"DischargeTime",vr:"TM",vm:"1",name:"Discharge Time",retired:"Retired"},"0x00380040":{keyword:"DischargeDiagnosisDescription",vr:"LO",vm:"1",name:"Discharge Diagnosis Description",retired:"Retired"},"0x00380044":{keyword:"DischargeDiagnosisCodeSequence",vr:"SQ",vm:"1",name:"Discharge Diagnosis Code Sequence",retired:"Retired"},"0x00380050":{keyword:"SpecialNeeds",vr:"LO",vm:"1",name:"Special Needs",retired:""},"0x00380060":{keyword:"ServiceEpisodeID",vr:"LO",vm:"1",name:"Service Episode ID",retired:""},"0x00380061":{keyword:"IssuerOfServiceEpisodeID",vr:"LO",vm:"1",name:"Issuer of Service Episode ID",retired:"Retired"},"0x00380062":{keyword:"ServiceEpisodeDescription",vr:"LO",vm:"1",name:"Service Episode Description",retired:""},"0x00380064":{keyword:"IssuerOfServiceEpisodeIDSequence",vr:"SQ",vm:"1",name:"Issuer of Service Episode ID Sequence",retired:""},"0x00380100":{keyword:"PertinentDocumentsSequence",vr:"SQ",vm:"1",name:"Pertinent Documents Sequence",retired:""},"0x00380101":{keyword:"PertinentResourcesSequence",vr:"SQ",vm:"1",name:"Pertinent Resources Sequence",retired:""},"0x00380102":{keyword:"ResourceDescription",vr:"LO",vm:"1",name:"Resource Description",retired:""},"0x00380300":{keyword:"CurrentPatientLocation",vr:"LO",vm:"1",name:"Current Patient Location",retired:""},"0x00380400":{keyword:"PatientInstitutionResidence",vr:"LO",vm:"1",name:"Patient's Institution Residence",retired:""},"0x00380500":{keyword:"PatientState",vr:"LO",vm:"1",name:"Patient State",retired:""},"0x00380502":{keyword:"PatientClinicalTrialParticipationSequence",vr:"SQ",vm:"1",name:"Patient Clinical Trial Participation Sequence",retired:""},"0x00384000":{keyword:"VisitComments",vr:"LT",vm:"1",name:"Visit Comments",retired:""},"0x003A0004":{keyword:"WaveformOriginality",vr:"CS",vm:"1",name:"Waveform Originality",retired:""},"0x003A0005":{keyword:"NumberOfWaveformChannels",vr:"US",vm:"1",name:"Number of Waveform Channels",retired:""},"0x003A0010":{keyword:"NumberOfWaveformSamples",vr:"UL",vm:"1",name:"Number of Waveform Samples",retired:""},"0x003A001A":{keyword:"SamplingFrequency",vr:"DS",vm:"1",name:"Sampling Frequency",retired:""},"0x003A0020":{keyword:"MultiplexGroupLabel",vr:"SH",vm:"1",name:"Multiplex Group Label",retired:""},"0x003A0200":{keyword:"ChannelDefinitionSequence",vr:"SQ",vm:"1",name:"Channel Definition Sequence",retired:""},"0x003A0202":{keyword:"WaveformChannelNumber",vr:"IS",vm:"1",name:"Waveform Channel Number",retired:""},"0x003A0203":{keyword:"ChannelLabel",vr:"SH",vm:"1",name:"Channel Label",retired:""},"0x003A0205":{keyword:"ChannelStatus",vr:"CS",vm:"1-n",name:"Channel Status",retired:""},"0x003A0208":{keyword:"ChannelSourceSequence",vr:"SQ",vm:"1",name:"Channel Source Sequence",retired:""},"0x003A0209":{keyword:"ChannelSourceModifiersSequence",vr:"SQ",vm:"1",name:"Channel Source Modifiers Sequence",retired:""},"0x003A020A":{keyword:"SourceWaveformSequence",vr:"SQ",vm:"1",name:"Source Waveform Sequence",retired:""},"0x003A020C":{keyword:"ChannelDerivationDescription",vr:"LO",vm:"1",name:"Channel Derivation Description",retired:""},"0x003A0210":{keyword:"ChannelSensitivity",vr:"DS",vm:"1",name:"Channel Sensitivity",retired:""},"0x003A0211":{keyword:"ChannelSensitivityUnitsSequence",vr:"SQ",vm:"1",name:"Channel Sensitivity Units Sequence",retired:""},"0x003A0212":{keyword:"ChannelSensitivityCorrectionFactor",vr:"DS",vm:"1",name:"Channel Sensitivity Correction Factor",retired:""},"0x003A0213":{keyword:"ChannelBaseline",vr:"DS",vm:"1",name:"Channel Baseline",retired:""},"0x003A0214":{keyword:"ChannelTimeSkew",vr:"DS",vm:"1",name:"Channel Time Skew",retired:""},"0x003A0215":{keyword:"ChannelSampleSkew",vr:"DS",vm:"1",name:"Channel Sample Skew",retired:""},"0x003A0218":{keyword:"ChannelOffset",vr:"DS",vm:"1",name:"Channel Offset",retired:""},"0x003A021A":{keyword:"WaveformBitsStored",vr:"US",vm:"1",name:"Waveform Bits Stored",retired:""},"0x003A0220":{keyword:"FilterLowFrequency",vr:"DS",vm:"1",name:"Filter Low Frequency",retired:""},"0x003A0221":{keyword:"FilterHighFrequency",vr:"DS",vm:"1",name:"Filter High Frequency",retired:""},"0x003A0222":{keyword:"NotchFilterFrequency",vr:"DS",vm:"1",name:"Notch Filter Frequency",retired:""},"0x003A0223":{keyword:"NotchFilterBandwidth",vr:"DS",vm:"1",name:"Notch Filter Bandwidth",retired:""},"0x003A0230":{keyword:"WaveformDataDisplayScale",vr:"FL",vm:"1",name:"Waveform Data Display Scale",retired:""},"0x003A0231":{keyword:"WaveformDisplayBackgroundCIELabValue",vr:"US",vm:"3",name:"Waveform Display Background CIELab Value",retired:""},"0x003A0240":{keyword:"WaveformPresentationGroupSequence",vr:"SQ",vm:"1",name:"Waveform Presentation Group Sequence",retired:""},"0x003A0241":{keyword:"PresentationGroupNumber",vr:"US",vm:"1",name:"Presentation Group Number",retired:""},"0x003A0242":{keyword:"ChannelDisplaySequence",vr:"SQ",vm:"1",name:"Channel Display Sequence",retired:""},"0x003A0244":{keyword:"ChannelRecommendedDisplayCIELabValue",vr:"US",vm:"3",name:"Channel Recommended Display CIELab Value",retired:""},"0x003A0245":{keyword:"ChannelPosition",vr:"FL",vm:"1",name:"Channel Position",retired:""},"0x003A0246":{keyword:"DisplayShadingFlag",vr:"CS",vm:"1",name:"Display Shading Flag",retired:""},"0x003A0247":{keyword:"FractionalChannelDisplayScale",vr:"FL",vm:"1",name:"Fractional Channel Display Scale",retired:""},"0x003A0248":{keyword:"AbsoluteChannelDisplayScale",vr:"FL",vm:"1",name:"Absolute Channel Display Scale",retired:""},"0x003A0300":{keyword:"MultiplexedAudioChannelsDescriptionCodeSequence",vr:"SQ",vm:"1",name:"Multiplexed Audio Channels Description Code Sequence",retired:""},"0x003A0301":{keyword:"ChannelIdentificationCode",vr:"IS",vm:"1",name:"Channel Identification Code",retired:""},"0x003A0302":{keyword:"ChannelMode",vr:"CS",vm:"1",name:"Channel Mode",retired:""},"0x003A0310":{keyword:"MultiplexGroupUID",vr:"UI",vm:"1",name:"Multiplex Group UID",retired:""},"0x003A0311":{keyword:"PowerlineFrequency",vr:"DS",vm:"1",name:"Powerline Frequency",retired:""},"0x003A0312":{keyword:"ChannelImpedanceSequence",vr:"SQ",vm:"1",name:"Channel Impedance Sequence",retired:""},"0x003A0313":{keyword:"ImpedanceValue",vr:"DS",vm:"1",name:"Impedance Value",retired:""},"0x003A0314":{keyword:"ImpedanceMeasurementDateTime",vr:"DT",vm:"1",name:"Impedance Measurement DateTime",retired:""},"0x003A0315":{keyword:"ImpedanceMeasurementFrequency",vr:"DS",vm:"1",name:"Impedance Measurement Frequency",retired:""},"0x003A0316":{keyword:"ImpedanceMeasurementCurrentType",vr:"CS",vm:"1",name:"Impedance Measurement Current Type",retired:""},"0x003A0317":{keyword:"WaveformAmplifierType",vr:"CS",vm:"1",name:"Waveform Amplifier Type",retired:""},"0x003A0318":{keyword:"FilterLowFrequencyCharacteristicsSequence",vr:"SQ",vm:"1",name:"Filter Low Frequency Characteristics Sequence",retired:""},"0x003A0319":{keyword:"FilterHighFrequencyCharacteristicsSequence",vr:"SQ",vm:"1",name:"Filter High Frequency Characteristics Sequence",retired:""},"0x003A0320":{keyword:"SummarizedFilterLookupTable",vr:"SQ",vm:"1",name:"Summarized Filter Lookup Table Sequence",retired:""},"0x003A0321":{keyword:"NotchFilterCharacteristicsSequence",vr:"SQ",vm:"1",name:"Notch Filter Characteristics Sequence",retired:""},"0x003A0322":{keyword:"WaveformFilterType",vr:"CS",vm:"1",name:"Waveform Filter Type",retired:""},"0x003A0323":{keyword:"AnalogFilterCharacteristicsSequence",vr:"SQ",vm:"1",name:"Analog Filter Characteristics Sequence",retired:""},"0x003A0324":{keyword:"AnalogFilterRollOff",vr:"DS",vm:"1",name:"Analog Filter Roll Off",retired:""},"0x003A0325":{keyword:"AnalogFilterType",vr:"SQ",vm:"1",name:"Analog Filter Type Code Sequence",retired:""},"0x003A0326":{keyword:"DigitalFilterCharacteristicsSequence",vr:"SQ",vm:"1",name:"Digital Filter Characteristics Sequence",retired:""},"0x003A0327":{keyword:"DigitalFilterOrder",vr:"IS",vm:"1",name:"Digital Filter Order",retired:""},"0x003A0328":{keyword:"DigitalFilterTypeCodeSequence",vr:"SQ",vm:"1",name:"Digital Filter Type Code Sequence",retired:""},"0x003A0329":{keyword:"WaveformFilterDescription",vr:"ST",vm:"1",name:"Waveform Filter Description",retired:""},"0x003A032A":{keyword:"FilterLookupTableSequence",vr:"SQ",vm:"1",name:"Filter Lookup Table Sequence",retired:""},"0x003A032B":{keyword:"FilterLookupTableDescription",vr:"ST",vm:"1",name:"Filter Lookup Table Description",retired:""},"0x003A032C":{keyword:"FrequencyEncodingCodeSequence",vr:"SQ",vm:"1",name:"Frequency Encoding Code Sequence",retired:""},"0x003A032D":{keyword:"MagnitudeEncodingCodeSequence",vr:"SQ",vm:"1",name:"Magnitude Encoding Code Sequence",retired:""},"0x003A032E":{keyword:"FilterLookupTableData",vr:"OD",vm:"1",name:"Filter Lookup Table Data",retired:""},"0x00400001":{keyword:"ScheduledStationAETitle",vr:"AE",vm:"1-n",name:"Scheduled Station AE Title",retired:""},"0x00400002":{keyword:"ScheduledProcedureStepStartDate",vr:"DA",vm:"1",name:"Scheduled Procedure Step Start Date",retired:""},"0x00400003":{keyword:"ScheduledProcedureStepStartTime",vr:"TM",vm:"1",name:"Scheduled Procedure Step Start Time",retired:""},"0x00400004":{keyword:"ScheduledProcedureStepEndDate",vr:"DA",vm:"1",name:"Scheduled Procedure Step End Date",retired:""},"0x00400005":{keyword:"ScheduledProcedureStepEndTime",vr:"TM",vm:"1",name:"Scheduled Procedure Step End Time",retired:""},"0x00400006":{keyword:"ScheduledPerformingPhysicianName",vr:"PN",vm:"1",name:"Scheduled Performing Physician's Name",retired:""},"0x00400007":{keyword:"ScheduledProcedureStepDescription",vr:"LO",vm:"1",name:"Scheduled Procedure Step Description",retired:""},"0x00400008":{keyword:"ScheduledProtocolCodeSequence",vr:"SQ",vm:"1",name:"Scheduled Protocol Code Sequence",retired:""},"0x00400009":{keyword:"ScheduledProcedureStepID",vr:"SH",vm:"1",name:"Scheduled Procedure Step ID",retired:""},"0x0040000A":{keyword:"StageCodeSequence",vr:"SQ",vm:"1",name:"Stage Code Sequence",retired:""},"0x0040000B":{keyword:"ScheduledPerformingPhysicianIdentificationSequence",vr:"SQ",vm:"1",name:"Scheduled Performing Physician Identification Sequence",retired:""},"0x00400010":{keyword:"ScheduledStationName",vr:"SH",vm:"1-n",name:"Scheduled Station Name",retired:""},"0x00400011":{keyword:"ScheduledProcedureStepLocation",vr:"SH",vm:"1",name:"Scheduled Procedure Step Location",retired:""},"0x00400012":{keyword:"PreMedication",vr:"LO",vm:"1",name:"Pre-Medication",retired:""},"0x00400020":{keyword:"ScheduledProcedureStepStatus",vr:"CS",vm:"1",name:"Scheduled Procedure Step Status",retired:""},"0x00400026":{keyword:"OrderPlacerIdentifierSequence",vr:"SQ",vm:"1",name:"Order Placer Identifier Sequence",retired:""},"0x00400027":{keyword:"OrderFillerIdentifierSequence",vr:"SQ",vm:"1",name:"Order Filler Identifier Sequence",retired:""},"0x00400031":{keyword:"LocalNamespaceEntityID",vr:"UT",vm:"1",name:"Local Namespace Entity ID",retired:""},"0x00400032":{keyword:"UniversalEntityID",vr:"UT",vm:"1",name:"Universal Entity ID",retired:""},"0x00400033":{keyword:"UniversalEntityIDType",vr:"CS",vm:"1",name:"Universal Entity ID Type",retired:""},"0x00400035":{keyword:"IdentifierTypeCode",vr:"CS",vm:"1",name:"Identifier Type Code",retired:""},"0x00400036":{keyword:"AssigningFacilitySequence",vr:"SQ",vm:"1",name:"Assigning Facility Sequence",retired:""},"0x00400039":{keyword:"AssigningJurisdictionCodeSequence",vr:"SQ",vm:"1",name:"Assigning Jurisdiction Code Sequence",retired:""},"0x0040003A":{keyword:"AssigningAgencyOrDepartmentCodeSequence",vr:"SQ",vm:"1",name:"Assigning Agency or Department Code Sequence",retired:""},"0x00400100":{keyword:"ScheduledProcedureStepSequence",vr:"SQ",vm:"1",name:"Scheduled Procedure Step Sequence",retired:""},"0x00400220":{keyword:"ReferencedNonImageCompositeSOPInstanceSequence",vr:"SQ",vm:"1",name:"Referenced Non-Image Composite SOP Instance Sequence",retired:""},"0x00400241":{keyword:"PerformedStationAETitle",vr:"AE",vm:"1",name:"Performed Station AE Title",retired:""},"0x00400242":{keyword:"PerformedStationName",vr:"SH",vm:"1",name:"Performed Station Name",retired:""},"0x00400243":{keyword:"PerformedLocation",vr:"SH",vm:"1",name:"Performed Location",retired:""},"0x00400244":{keyword:"PerformedProcedureStepStartDate",vr:"DA",vm:"1",name:"Performed Procedure Step Start Date",retired:""},"0x00400245":{keyword:"PerformedProcedureStepStartTime",vr:"TM",vm:"1",name:"Performed Procedure Step Start Time",retired:""},"0x00400250":{keyword:"PerformedProcedureStepEndDate",vr:"DA",vm:"1",name:"Performed Procedure Step End Date",retired:""},"0x00400251":{keyword:"PerformedProcedureStepEndTime",vr:"TM",vm:"1",name:"Performed Procedure Step End Time",retired:""},"0x00400252":{keyword:"PerformedProcedureStepStatus",vr:"CS",vm:"1",name:"Performed Procedure Step Status",retired:""},"0x00400253":{keyword:"PerformedProcedureStepID",vr:"SH",vm:"1",name:"Performed Procedure Step ID",retired:""},"0x00400254":{keyword:"PerformedProcedureStepDescription",vr:"LO",vm:"1",name:"Performed Procedure Step Description",retired:""},"0x00400255":{keyword:"PerformedProcedureTypeDescription",vr:"LO",vm:"1",name:"Performed Procedure Type Description",retired:""},"0x00400260":{keyword:"PerformedProtocolCodeSequence",vr:"SQ",vm:"1",name:"Performed Protocol Code Sequence",retired:""},"0x00400261":{keyword:"PerformedProtocolType",vr:"CS",vm:"1",name:"Performed Protocol Type",retired:""},"0x00400270":{keyword:"ScheduledStepAttributesSequence",vr:"SQ",vm:"1",name:"Scheduled Step Attributes Sequence",retired:""},"0x00400275":{keyword:"RequestAttributesSequence",vr:"SQ",vm:"1",name:"Request Attributes Sequence",retired:""},"0x00400280":{keyword:"CommentsOnThePerformedProcedureStep",vr:"ST",vm:"1",name:"Comments on the Performed Procedure Step",retired:""},"0x00400281":{keyword:"PerformedProcedureStepDiscontinuationReasonCodeSequence",vr:"SQ",vm:"1",name:"Performed Procedure Step Discontinuation Reason Code Sequence",retired:""},"0x00400293":{keyword:"QuantitySequence",vr:"SQ",vm:"1",name:"Quantity Sequence",retired:""},"0x00400294":{keyword:"Quantity",vr:"DS",vm:"1",name:"Quantity",retired:""},"0x00400295":{keyword:"MeasuringUnitsSequence",vr:"SQ",vm:"1",name:"Measuring Units Sequence",retired:""},"0x00400296":{keyword:"BillingItemSequence",vr:"SQ",vm:"1",name:"Billing Item Sequence",retired:""},"0x00400300":{keyword:"TotalTimeOfFluoroscopy",vr:"US",vm:"1",name:"Total Time of Fluoroscopy",retired:"Retired"},"0x00400301":{keyword:"TotalNumberOfExposures",vr:"US",vm:"1",name:"Total Number of Exposures",retired:"Retired"},"0x00400302":{keyword:"EntranceDose",vr:"US",vm:"1",name:"Entrance Dose",retired:""},"0x00400303":{keyword:"ExposedArea",vr:"US",vm:"1-2",name:"Exposed Area",retired:""},"0x00400306":{keyword:"DistanceSourceToEntrance",vr:"DS",vm:"1",name:"Distance Source to Entrance",retired:""},"0x00400307":{keyword:"DistanceSourceToSupport",vr:"DS",vm:"1",name:"Distance Source to Support",retired:"Retired"},"0x0040030E":{keyword:"ExposureDoseSequence",vr:"SQ",vm:"1",name:"Exposure Dose Sequence",retired:"Retired"},"0x00400310":{keyword:"CommentsOnRadiationDose",vr:"ST",vm:"1",name:"Comments on Radiation Dose",retired:""},"0x00400312":{keyword:"XRayOutput",vr:"DS",vm:"1",name:"X-Ray Output",retired:""},"0x00400314":{keyword:"HalfValueLayer",vr:"DS",vm:"1",name:"Half Value Layer",retired:""},"0x00400316":{keyword:"OrganDose",vr:"DS",vm:"1",name:"Organ Dose",retired:""},"0x00400318":{keyword:"OrganExposed",vr:"CS",vm:"1",name:"Organ Exposed",retired:""},"0x00400320":{keyword:"BillingProcedureStepSequence",vr:"SQ",vm:"1",name:"Billing Procedure Step Sequence",retired:""},"0x00400321":{keyword:"FilmConsumptionSequence",vr:"SQ",vm:"1",name:"Film Consumption Sequence",retired:""},"0x00400324":{keyword:"BillingSuppliesAndDevicesSequence",vr:"SQ",vm:"1",name:"Billing Supplies and Devices Sequence",retired:""},"0x00400330":{keyword:"ReferencedProcedureStepSequence",vr:"SQ",vm:"1",name:"Referenced Procedure Step Sequence",retired:"Retired"},"0x00400340":{keyword:"PerformedSeriesSequence",vr:"SQ",vm:"1",name:"Performed Series Sequence",retired:""},"0x00400400":{keyword:"CommentsOnTheScheduledProcedureStep",vr:"LT",vm:"1",name:"Comments on the Scheduled Procedure Step",retired:""},"0x00400440":{keyword:"ProtocolContextSequence",vr:"SQ",vm:"1",name:"Protocol Context Sequence",retired:""},"0x00400441":{keyword:"ContentItemModifierSequence",vr:"SQ",vm:"1",name:"Content Item Modifier Sequence",retired:""},"0x00400500":{keyword:"ScheduledSpecimenSequence",vr:"SQ",vm:"1",name:"Scheduled Specimen Sequence",retired:""},"0x0040050A":{keyword:"SpecimenAccessionNumber",vr:"LO",vm:"1",name:"Specimen Accession Number",retired:"Retired"},"0x00400512":{keyword:"ContainerIdentifier",vr:"LO",vm:"1",name:"Container Identifier",retired:""},"0x00400513":{keyword:"IssuerOfTheContainerIdentifierSequence",vr:"SQ",vm:"1",name:"Issuer of the Container Identifier Sequence",retired:""},"0x00400515":{keyword:"AlternateContainerIdentifierSequence",vr:"SQ",vm:"1",name:"Alternate Container Identifier Sequence",retired:""},"0x00400518":{keyword:"ContainerTypeCodeSequence",vr:"SQ",vm:"1",name:"Container Type Code Sequence",retired:""},"0x0040051A":{keyword:"ContainerDescription",vr:"LO",vm:"1",name:"Container Description",retired:""},"0x00400520":{keyword:"ContainerComponentSequence",vr:"SQ",vm:"1",name:"Container Component Sequence",retired:""},"0x00400550":{keyword:"SpecimenSequence",vr:"SQ",vm:"1",name:"Specimen Sequence",retired:"Retired"},"0x00400551":{keyword:"SpecimenIdentifier",vr:"LO",vm:"1",name:"Specimen Identifier",retired:""},"0x00400552":{keyword:"SpecimenDescriptionSequenceTrial",vr:"SQ",vm:"1",name:"Specimen Description Sequence (Trial)",retired:"Retired"},"0x00400553":{keyword:"SpecimenDescriptionTrial",vr:"ST",vm:"1",name:"Specimen Description (Trial)",retired:"Retired"},"0x00400554":{keyword:"SpecimenUID",vr:"UI",vm:"1",name:"Specimen UID",retired:""},"0x00400555":{keyword:"AcquisitionContextSequence",vr:"SQ",vm:"1",name:"Acquisition Context Sequence",retired:""},"0x00400556":{keyword:"AcquisitionContextDescription",vr:"ST",vm:"1",name:"Acquisition Context Description",retired:""},"0x00400560":{keyword:"SpecimenDescriptionSequence",vr:"SQ",vm:"1",name:"Specimen Description Sequence",retired:""},"0x00400562":{keyword:"IssuerOfTheSpecimenIdentifierSequence",vr:"SQ",vm:"1",name:"Issuer of the Specimen Identifier Sequence",retired:""},"0x0040059A":{keyword:"SpecimenTypeCodeSequence",vr:"SQ",vm:"1",name:"Specimen Type Code Sequence",retired:""},"0x00400600":{keyword:"SpecimenShortDescription",vr:"LO",vm:"1",name:"Specimen Short Description",retired:""},"0x00400602":{keyword:"SpecimenDetailedDescription",vr:"UT",vm:"1",name:"Specimen Detailed Description",retired:""},"0x00400610":{keyword:"SpecimenPreparationSequence",vr:"SQ",vm:"1",name:"Specimen Preparation Sequence",retired:""},"0x00400612":{keyword:"SpecimenPreparationStepContentItemSequence",vr:"SQ",vm:"1",name:"Specimen Preparation Step Content Item Sequence",retired:""},"0x00400620":{keyword:"SpecimenLocalizationContentItemSequence",vr:"SQ",vm:"1",name:"Specimen Localization Content Item Sequence",retired:""},"0x004006FA":{keyword:"SlideIdentifier",vr:"LO",vm:"1",name:"Slide Identifier",retired:"Retired"},"0x00400710":{keyword:"WholeSlideMicroscopyImageFrameTypeSequence",vr:"SQ",vm:"1",name:"Whole Slide Microscopy Image Frame Type Sequence",retired:""},"0x0040071A":{keyword:"ImageCenterPointCoordinatesSequence",vr:"SQ",vm:"1",name:"Image Center Point Coordinates Sequence",retired:""},"0x0040072A":{keyword:"XOffsetInSlideCoordinateSystem",vr:"DS",vm:"1",name:"X Offset in Slide Coordinate System",retired:""},"0x0040073A":{keyword:"YOffsetInSlideCoordinateSystem",vr:"DS",vm:"1",name:"Y Offset in Slide Coordinate System",retired:""},"0x0040074A":{keyword:"ZOffsetInSlideCoordinateSystem",vr:"DS",vm:"1",name:"Z Offset in Slide Coordinate System",retired:""},"0x004008D8":{keyword:"PixelSpacingSequence",vr:"SQ",vm:"1",name:"Pixel Spacing Sequence",retired:"Retired"},"0x004008DA":{keyword:"CoordinateSystemAxisCodeSequence",vr:"SQ",vm:"1",name:"Coordinate System Axis Code Sequence",retired:"Retired"},"0x004008EA":{keyword:"MeasurementUnitsCodeSequence",vr:"SQ",vm:"1",name:"Measurement Units Code Sequence",retired:""},"0x004009F8":{keyword:"VitalStainCodeSequenceTrial",vr:"SQ",vm:"1",name:"Vital Stain Code Sequence (Trial)",retired:"Retired"},"0x00401001":{keyword:"RequestedProcedureID",vr:"SH",vm:"1",name:"Requested Procedure ID",retired:""},"0x00401002":{keyword:"ReasonForTheRequestedProcedure",vr:"LO",vm:"1",name:"Reason for the Requested Procedure",retired:""},"0x00401003":{keyword:"RequestedProcedurePriority",vr:"SH",vm:"1",name:"Requested Procedure Priority",retired:""},"0x00401004":{keyword:"PatientTransportArrangements",vr:"LO",vm:"1",name:"Patient Transport Arrangements",retired:""},"0x00401005":{keyword:"RequestedProcedureLocation",vr:"LO",vm:"1",name:"Requested Procedure Location",retired:""},"0x00401006":{keyword:"PlacerOrderNumberProcedure",vr:"SH",vm:"1",name:"Placer Order Number / Procedure",retired:"Retired"},"0x00401007":{keyword:"FillerOrderNumberProcedure",vr:"SH",vm:"1",name:"Filler Order Number / Procedure",retired:"Retired"},"0x00401008":{keyword:"ConfidentialityCode",vr:"LO",vm:"1",name:"Confidentiality Code",retired:""},"0x00401009":{keyword:"ReportingPriority",vr:"SH",vm:"1",name:"Reporting Priority",retired:""},"0x0040100A":{keyword:"ReasonForRequestedProcedureCodeSequence",vr:"SQ",vm:"1",name:"Reason for Requested Procedure Code Sequence",retired:""},"0x00401010":{keyword:"NamesOfIntendedRecipientsOfResults",vr:"PN",vm:"1-n",name:"Names of Intended Recipients of Results",retired:""},"0x00401011":{keyword:"IntendedRecipientsOfResultsIdentificationSequence",vr:"SQ",vm:"1",name:"Intended Recipients of Results Identification Sequence",retired:""},"0x00401012":{keyword:"ReasonForPerformedProcedureCodeSequence",vr:"SQ",vm:"1",name:"Reason For Performed Procedure Code Sequence",retired:""},"0x00401060":{keyword:"RequestedProcedureDescriptionTrial",vr:"LO",vm:"1",name:"Requested Procedure Description (Trial)",retired:"Retired"},"0x00401101":{keyword:"PersonIdentificationCodeSequence",vr:"SQ",vm:"1",name:"Person Identification Code Sequence",retired:""},"0x00401102":{keyword:"PersonAddress",vr:"ST",vm:"1",name:"Person's Address",retired:""},"0x00401103":{keyword:"PersonTelephoneNumbers",vr:"LO",vm:"1-n",name:"Person's Telephone Numbers",retired:""},"0x00401104":{keyword:"PersonTelecomInformation",vr:"LT",vm:"1",name:"Person's Telecom Information",retired:""},"0x00401400":{keyword:"RequestedProcedureComments",vr:"LT",vm:"1",name:"Requested Procedure Comments",retired:""},"0x00402001":{keyword:"ReasonForTheImagingServiceRequest",vr:"LO",vm:"1",name:"Reason for the Imaging Service Request",retired:"Retired"},"0x00402004":{keyword:"IssueDateOfImagingServiceRequest",vr:"DA",vm:"1",name:"Issue Date of Imaging Service Request",retired:""},"0x00402005":{keyword:"IssueTimeOfImagingServiceRequest",vr:"TM",vm:"1",name:"Issue Time of Imaging Service Request",retired:""},"0x00402006":{keyword:"PlacerOrderNumberImagingServiceRequestRetired",vr:"SH",vm:"1",name:"Placer Order Number / Imaging Service Request (Retired)",retired:"Retired"},"0x00402007":{keyword:"FillerOrderNumberImagingServiceRequestRetired",vr:"SH",vm:"1",name:"Filler Order Number / Imaging Service Request (Retired)",retired:"Retired"},"0x00402008":{keyword:"OrderEnteredBy",vr:"PN",vm:"1",name:"Order Entered By",retired:""},"0x00402009":{keyword:"OrderEntererLocation",vr:"SH",vm:"1",name:"Order Enterer's Location",retired:""},"0x00402010":{keyword:"OrderCallbackPhoneNumber",vr:"SH",vm:"1",name:"Order Callback Phone Number",retired:""},"0x00402011":{keyword:"OrderCallbackTelecomInformation",vr:"LT",vm:"1",name:"Order Callback Telecom Information",retired:""},"0x00402016":{keyword:"PlacerOrderNumberImagingServiceRequest",vr:"LO",vm:"1",name:"Placer Order Number / Imaging Service Request",retired:""},"0x00402017":{keyword:"FillerOrderNumberImagingServiceRequest",vr:"LO",vm:"1",name:"Filler Order Number / Imaging Service Request",retired:""},"0x00402400":{keyword:"ImagingServiceRequestComments",vr:"LT",vm:"1",name:"Imaging Service Request Comments",retired:""},"0x00403001":{keyword:"ConfidentialityConstraintOnPatientDataDescription",vr:"LO",vm:"1",name:"Confidentiality Constraint on Patient Data Description",retired:""},"0x00404001":{keyword:"GeneralPurposeScheduledProcedureStepStatus",vr:"CS",vm:"1",name:"General Purpose Scheduled Procedure Step Status",retired:"Retired"},"0x00404002":{keyword:"GeneralPurposePerformedProcedureStepStatus",vr:"CS",vm:"1",name:"General Purpose Performed Procedure Step Status",retired:"Retired"},"0x00404003":{keyword:"GeneralPurposeScheduledProcedureStepPriority",vr:"CS",vm:"1",name:"General Purpose Scheduled Procedure Step Priority",retired:"Retired"},"0x00404004":{keyword:"ScheduledProcessingApplicationsCodeSequence",vr:"SQ",vm:"1",name:"Scheduled Processing Applications Code Sequence",retired:"Retired"},"0x00404005":{keyword:"ScheduledProcedureStepStartDateTime",vr:"DT",vm:"1",name:"Scheduled Procedure Step Start DateTime",retired:""},"0x00404006":{keyword:"MultipleCopiesFlag",vr:"CS",vm:"1",name:"Multiple Copies Flag",retired:"Retired"},"0x00404007":{keyword:"PerformedProcessingApplicationsCodeSequence",vr:"SQ",vm:"1",name:"Performed Processing Applications Code Sequence",retired:"Retired"},"0x00404008":{keyword:"ScheduledProcedureStepExpirationDateTime",vr:"DT",vm:"1",name:"Scheduled Procedure Step Expiration DateTime",retired:""},"0x00404009":{keyword:"HumanPerformerCodeSequence",vr:"SQ",vm:"1",name:"Human Performer Code Sequence",retired:""},"0x00404010":{keyword:"ScheduledProcedureStepModificationDateTime",vr:"DT",vm:"1",name:"Scheduled Procedure Step Modification DateTime",retired:""},"0x00404011":{keyword:"ExpectedCompletionDateTime",vr:"DT",vm:"1",name:"Expected Completion DateTime",retired:""},"0x00404015":{keyword:"ResultingGeneralPurposePerformedProcedureStepsSequence",vr:"SQ",vm:"1",name:"Resulting General Purpose Performed Procedure Steps Sequence",retired:"Retired"},"0x00404016":{keyword:"ReferencedGeneralPurposeScheduledProcedureStepSequence",vr:"SQ",vm:"1",name:"Referenced General Purpose Scheduled Procedure Step Sequence",retired:"Retired"},"0x00404018":{keyword:"ScheduledWorkitemCodeSequence",vr:"SQ",vm:"1",name:"Scheduled Workitem Code Sequence",retired:""},"0x00404019":{keyword:"PerformedWorkitemCodeSequence",vr:"SQ",vm:"1",name:"Performed Workitem Code Sequence",retired:""},"0x00404020":{keyword:"InputAvailabilityFlag",vr:"CS",vm:"1",name:"Input Availability Flag",retired:"Retired"},"0x00404021":{keyword:"InputInformationSequence",vr:"SQ",vm:"1",name:"Input Information Sequence",retired:""},"0x00404022":{keyword:"RelevantInformationSequence",vr:"SQ",vm:"1",name:"Relevant Information Sequence",retired:"Retired"},"0x00404023":{keyword:"ReferencedGeneralPurposeScheduledProcedureStepTransactionUID",vr:"UI",vm:"1",name:"Referenced General Purpose Scheduled Procedure Step Transaction UID",retired:"Retired"},"0x00404025":{keyword:"ScheduledStationNameCodeSequence",vr:"SQ",vm:"1",name:"Scheduled Station Name Code Sequence",retired:""},"0x00404026":{keyword:"ScheduledStationClassCodeSequence",vr:"SQ",vm:"1",name:"Scheduled Station Class Code Sequence",retired:""},"0x00404027":{keyword:"ScheduledStationGeographicLocationCodeSequence",vr:"SQ",vm:"1",name:"Scheduled Station Geographic Location Code Sequence",retired:""},"0x00404028":{keyword:"PerformedStationNameCodeSequence",vr:"SQ",vm:"1",name:"Performed Station Name Code Sequence",retired:""},"0x00404029":{keyword:"PerformedStationClassCodeSequence",vr:"SQ",vm:"1",name:"Performed Station Class Code Sequence",retired:""},"0x00404030":{keyword:"PerformedStationGeographicLocationCodeSequence",vr:"SQ",vm:"1",name:"Performed Station Geographic Location Code Sequence",retired:""},"0x00404031":{keyword:"RequestedSubsequentWorkitemCodeSequence",vr:"SQ",vm:"1",name:"Requested Subsequent Workitem Code Sequence",retired:"Retired"},"0x00404032":{keyword:"NonDICOMOutputCodeSequence",vr:"SQ",vm:"1",name:"Non-DICOM Output Code Sequence",retired:"Retired"},"0x00404033":{keyword:"OutputInformationSequence",vr:"SQ",vm:"1",name:"Output Information Sequence",retired:""},"0x00404034":{keyword:"ScheduledHumanPerformersSequence",vr:"SQ",vm:"1",name:"Scheduled Human Performers Sequence",retired:""},"0x00404035":{keyword:"ActualHumanPerformersSequence",vr:"SQ",vm:"1",name:"Actual Human Performers Sequence",retired:""},"0x00404036":{keyword:"HumanPerformerOrganization",vr:"LO",vm:"1",name:"Human Performer's Organization",retired:""},"0x00404037":{keyword:"HumanPerformerName",vr:"PN",vm:"1",name:"Human Performer's Name",retired:""},"0x00404040":{keyword:"RawDataHandling",vr:"CS",vm:"1",name:"Raw Data Handling",retired:""},"0x00404041":{keyword:"InputReadinessState",vr:"CS",vm:"1",name:"Input Readiness State",retired:""},"0x00404050":{keyword:"PerformedProcedureStepStartDateTime",vr:"DT",vm:"1",name:"Performed Procedure Step Start DateTime",retired:""},"0x00404051":{keyword:"PerformedProcedureStepEndDateTime",vr:"DT",vm:"1",name:"Performed Procedure Step End DateTime",retired:""},"0x00404052":{keyword:"ProcedureStepCancellationDateTime",vr:"DT",vm:"1",name:"Procedure Step Cancellation DateTime",retired:""},"0x00404070":{keyword:"OutputDestinationSequence",vr:"SQ",vm:"1",name:"Output Destination Sequence",retired:""},"0x00404071":{keyword:"DICOMStorageSequence",vr:"SQ",vm:"1",name:"DICOM Storage Sequence",retired:""},"0x00404072":{keyword:"STOWRSStorageSequence",vr:"SQ",vm:"1",name:"STOW-RS Storage Sequence",retired:""},"0x00404073":{keyword:"StorageURL",vr:"UR",vm:"1",name:"Storage URL",retired:""},"0x00404074":{keyword:"XDSStorageSequence",vr:"SQ",vm:"1",name:"XDS Storage Sequence",retired:""},"0x00408302":{keyword:"EntranceDoseInmGy",vr:"DS",vm:"1",name:"Entrance Dose in mGy",retired:""},"0x00408303":{keyword:"EntranceDoseDerivation",vr:"CS",vm:"1",name:"Entrance Dose Derivation",retired:""},"0x00409092":{keyword:"ParametricMapFrameTypeSequence",vr:"SQ",vm:"1",name:"Parametric Map Frame Type Sequence",retired:""},"0x00409094":{keyword:"ReferencedImageRealWorldValueMappingSequence",vr:"SQ",vm:"1",name:"Referenced Image Real World Value Mapping Sequence",retired:""},"0x00409096":{keyword:"RealWorldValueMappingSequence",vr:"SQ",vm:"1",name:"Real World Value Mapping Sequence",retired:""},"0x00409098":{keyword:"PixelValueMappingCodeSequence",vr:"SQ",vm:"1",name:"Pixel Value Mapping Code Sequence",retired:""},"0x00409210":{keyword:"LUTLabel",vr:"SH",vm:"1",name:"LUT Label",retired:""},"0x00409211":{keyword:"RealWorldValueLastValueMapped",vr:"US or SS",vm:"1",name:"Real World Value Last Value Mapped",retired:""},"0x00409212":{keyword:"RealWorldValueLUTData",vr:"FD",vm:"1-n",name:"Real World Value LUT Data",retired:""},"0x00409213":{keyword:"DoubleFloatRealWorldValueLastValueMapped",vr:"FD",vm:"1",name:"Double Float Real World Value Last Value Mapped",retired:""},"0x00409214":{keyword:"DoubleFloatRealWorldValueFirstValueMapped",vr:"FD",vm:"1",name:"Double Float Real World Value First Value Mapped",retired:""},"0x00409216":{keyword:"RealWorldValueFirstValueMapped",vr:"US or SS",vm:"1",name:"Real World Value First Value Mapped",retired:""},"0x00409220":{keyword:"QuantityDefinitionSequence",vr:"SQ",vm:"1",name:"Quantity Definition Sequence",retired:""},"0x00409224":{keyword:"RealWorldValueIntercept",vr:"FD",vm:"1",name:"Real World Value Intercept",retired:""},"0x00409225":{keyword:"RealWorldValueSlope",vr:"FD",vm:"1",name:"Real World Value Slope",retired:""},"0x0040A007":{keyword:"FindingsFlagTrial",vr:"CS",vm:"1",name:"Findings Flag (Trial)",retired:"Retired"},"0x0040A010":{keyword:"RelationshipType",vr:"CS",vm:"1",name:"Relationship Type",retired:""},"0x0040A020":{keyword:"FindingsSequenceTrial",vr:"SQ",vm:"1",name:"Findings Sequence (Trial)",retired:"Retired"},"0x0040A021":{keyword:"FindingsGroupUIDTrial",vr:"UI",vm:"1",name:"Findings Group UID (Trial)",retired:"Retired"},"0x0040A022":{keyword:"ReferencedFindingsGroupUIDTrial",vr:"UI",vm:"1",name:"Referenced Findings Group UID (Trial)",retired:"Retired"},"0x0040A023":{keyword:"FindingsGroupRecordingDateTrial",vr:"DA",vm:"1",name:"Findings Group Recording Date (Trial)",retired:"Retired"},"0x0040A024":{keyword:"FindingsGroupRecordingTimeTrial",vr:"TM",vm:"1",name:"Findings Group Recording Time (Trial)",retired:"Retired"},"0x0040A026":{keyword:"FindingsSourceCategoryCodeSequenceTrial",vr:"SQ",vm:"1",name:"Findings Source Category Code Sequence (Trial)",retired:"Retired"},"0x0040A027":{keyword:"VerifyingOrganization",vr:"LO",vm:"1",name:"Verifying Organization",retired:""},"0x0040A028":{keyword:"DocumentingOrganizationIdentifierCodeSequenceTrial",vr:"SQ",vm:"1",name:"Documenting Organization Identifier Code Sequence (Trial)",retired:"Retired"},"0x0040A030":{keyword:"VerificationDateTime",vr:"DT",vm:"1",name:"Verification DateTime",retired:""},"0x0040A032":{keyword:"ObservationDateTime",vr:"DT",vm:"1",name:"Observation DateTime",retired:""},"0x0040A033":{keyword:"ObservationStartDateTime",vr:"DT",vm:"1",name:"Observation Start DateTime",retired:""},"0x0040A040":{keyword:"ValueType",vr:"CS",vm:"1",name:"Value Type",retired:""},"0x0040A043":{keyword:"ConceptNameCodeSequence",vr:"SQ",vm:"1",name:"Concept Name Code Sequence",retired:""},"0x0040A047":{keyword:"MeasurementPrecisionDescriptionTrial",vr:"LO",vm:"1",name:"Measurement Precision Description (Trial)",retired:"Retired"},"0x0040A050":{keyword:"ContinuityOfContent",vr:"CS",vm:"1",name:"Continuity Of Content",retired:""},"0x0040A057":{keyword:"UrgencyOrPriorityAlertsTrial",vr:"CS",vm:"1-n",name:"Urgency or Priority Alerts (Trial)",retired:"Retired"},"0x0040A060":{keyword:"SequencingIndicatorTrial",vr:"LO",vm:"1",name:"Sequencing Indicator (Trial)",retired:"Retired"},"0x0040A066":{keyword:"DocumentIdentifierCodeSequenceTrial",vr:"SQ",vm:"1",name:"Document Identifier Code Sequence (Trial)",retired:"Retired"},"0x0040A067":{keyword:"DocumentAuthorTrial",vr:"PN",vm:"1",name:"Document Author (Trial)",retired:"Retired"},"0x0040A068":{keyword:"DocumentAuthorIdentifierCodeSequenceTrial",vr:"SQ",vm:"1",name:"Document Author Identifier Code Sequence (Trial)",retired:"Retired"},"0x0040A070":{keyword:"IdentifierCodeSequenceTrial",vr:"SQ",vm:"1",name:"Identifier Code Sequence (Trial)",retired:"Retired"},"0x0040A073":{keyword:"VerifyingObserverSequence",vr:"SQ",vm:"1",name:"Verifying Observer Sequence",retired:""},"0x0040A074":{keyword:"ObjectBinaryIdentifierTrial",vr:"OB",vm:"1",name:"Object Binary Identifier (Trial)",retired:"Retired"},"0x0040A075":{keyword:"VerifyingObserverName",vr:"PN",vm:"1",name:"Verifying Observer Name",retired:""},"0x0040A076":{keyword:"DocumentingObserverIdentifierCodeSequenceTrial",vr:"SQ",vm:"1",name:"Documenting Observer Identifier Code Sequence (Trial)",retired:"Retired"},"0x0040A078":{keyword:"AuthorObserverSequence",vr:"SQ",vm:"1",name:"Author Observer Sequence",retired:""},"0x0040A07A":{keyword:"ParticipantSequence",vr:"SQ",vm:"1",name:"Participant Sequence",retired:""},"0x0040A07C":{keyword:"CustodialOrganizationSequence",vr:"SQ",vm:"1",name:"Custodial Organization Sequence",retired:""},"0x0040A080":{keyword:"ParticipationType",vr:"CS",vm:"1",name:"Participation Type",retired:""},"0x0040A082":{keyword:"ParticipationDateTime",vr:"DT",vm:"1",name:"Participation DateTime",retired:""},"0x0040A084":{keyword:"ObserverType",vr:"CS",vm:"1",name:"Observer Type",retired:""},"0x0040A085":{keyword:"ProcedureIdentifierCodeSequenceTrial",vr:"SQ",vm:"1",name:"Procedure Identifier Code Sequence (Trial)",retired:"Retired"},"0x0040A088":{keyword:"VerifyingObserverIdentificationCodeSequence",vr:"SQ",vm:"1",name:"Verifying Observer Identification Code Sequence",retired:""},"0x0040A089":{keyword:"ObjectDirectoryBinaryIdentifierTrial",vr:"OB",vm:"1",name:"Object Directory Binary Identifier (Trial)",retired:"Retired"},"0x0040A090":{keyword:"EquivalentCDADocumentSequence",vr:"SQ",vm:"1",name:"Equivalent CDA Document Sequence",retired:"Retired"},"0x0040A0B0":{keyword:"ReferencedWaveformChannels",vr:"US",vm:"2-2n",name:"Referenced Waveform Channels",retired:""},"0x0040A110":{keyword:"DateOfDocumentOrVerbalTransactionTrial",vr:"DA",vm:"1",name:"Date of Document or Verbal Transaction (Trial)",retired:"Retired"},"0x0040A112":{keyword:"TimeOfDocumentCreationOrVerbalTransactionTrial",vr:"TM",vm:"1",name:"Time of Document Creation or Verbal Transaction (Trial)",retired:"Retired"},"0x0040A120":{keyword:"DateTime",vr:"DT",vm:"1",name:"DateTime",retired:""},"0x0040A121":{keyword:"Date",vr:"DA",vm:"1",name:"Date",retired:""},"0x0040A122":{keyword:"Time",vr:"TM",vm:"1",name:"Time",retired:""},"0x0040A123":{keyword:"PersonName",vr:"PN",vm:"1",name:"Person Name",retired:""},"0x0040A124":{keyword:"UID",vr:"UI",vm:"1",name:"UID",retired:""},"0x0040A125":{keyword:"ReportStatusIDTrial",vr:"CS",vm:"2",name:"Report Status ID (Trial)",retired:"Retired"},"0x0040A130":{keyword:"TemporalRangeType",vr:"CS",vm:"1",name:"Temporal Range Type",retired:""},"0x0040A132":{keyword:"ReferencedSamplePositions",vr:"UL",vm:"1-n",name:"Referenced Sample Positions",retired:""},"0x0040A136":{keyword:"ReferencedFrameNumbers",vr:"US",vm:"1-n",name:"Referenced Frame Numbers",retired:"Retired"},"0x0040A138":{keyword:"ReferencedTimeOffsets",vr:"DS",vm:"1-n",name:"Referenced Time Offsets",retired:""},"0x0040A13A":{keyword:"ReferencedDateTime",vr:"DT",vm:"1-n",name:"Referenced DateTime",retired:""},"0x0040A160":{keyword:"TextValue",vr:"UT",vm:"1",name:"Text Value",retired:""},"0x0040A161":{keyword:"FloatingPointValue",vr:"FD",vm:"1-n",name:"Floating Point Value",retired:""},"0x0040A162":{keyword:"RationalNumeratorValue",vr:"SL",vm:"1-n",name:"Rational Numerator Value",retired:""},"0x0040A163":{keyword:"RationalDenominatorValue",vr:"UL",vm:"1-n",name:"Rational Denominator Value",retired:""},"0x0040A167":{keyword:"ObservationCategoryCodeSequenceTrial",vr:"SQ",vm:"1",name:"Observation Category Code Sequence (Trial)",retired:"Retired"},"0x0040A168":{keyword:"ConceptCodeSequence",vr:"SQ",vm:"1",name:"Concept Code Sequence",retired:""},"0x0040A16A":{keyword:"BibliographicCitationTrial",vr:"ST",vm:"1",name:"Bibliographic Citation (Trial)",retired:"Retired"},"0x0040A170":{keyword:"PurposeOfReferenceCodeSequence",vr:"SQ",vm:"1",name:"Purpose of Reference Code Sequence",retired:""},"0x0040A171":{keyword:"ObservationUID",vr:"UI",vm:"1",name:"Observation UID",retired:""},"0x0040A172":{keyword:"ReferencedObservationUIDTrial",vr:"UI",vm:"1",name:"Referenced Observation UID (Trial)",retired:"Retired"},"0x0040A173":{keyword:"ReferencedObservationClassTrial",vr:"CS",vm:"1",name:"Referenced Observation Class (Trial)",retired:"Retired"},"0x0040A174":{keyword:"ReferencedObjectObservationClassTrial",vr:"CS",vm:"1",name:"Referenced Object Observation Class (Trial)",retired:"Retired"},"0x0040A180":{keyword:"AnnotationGroupNumber",vr:"US",vm:"1",name:"Annotation Group Number",retired:""},"0x0040A192":{keyword:"ObservationDateTrial",vr:"DA",vm:"1",name:"Observation Date (Trial)",retired:"Retired"},"0x0040A193":{keyword:"ObservationTimeTrial",vr:"TM",vm:"1",name:"Observation Time (Trial)",retired:"Retired"},"0x0040A194":{keyword:"MeasurementAutomationTrial",vr:"CS",vm:"1",name:"Measurement Automation (Trial)",retired:"Retired"},"0x0040A195":{keyword:"ModifierCodeSequence",vr:"SQ",vm:"1",name:"Modifier Code Sequence",retired:""},"0x0040A224":{keyword:"IdentificationDescriptionTrial",vr:"ST",vm:"1",name:"Identification Description (Trial)",retired:"Retired"},"0x0040A290":{keyword:"CoordinatesSetGeometricTypeTrial",vr:"CS",vm:"1",name:"Coordinates Set Geometric Type (Trial)",retired:"Retired"},"0x0040A296":{keyword:"AlgorithmCodeSequenceTrial",vr:"SQ",vm:"1",name:"Algorithm Code Sequence (Trial)",retired:"Retired"},"0x0040A297":{keyword:"AlgorithmDescriptionTrial",vr:"ST",vm:"1",name:"Algorithm Description (Trial)",retired:"Retired"},"0x0040A29A":{keyword:"PixelCoordinatesSetTrial",vr:"SL",vm:"2-2n",name:"Pixel Coordinates Set (Trial)",retired:"Retired"},"0x0040A300":{keyword:"MeasuredValueSequence",vr:"SQ",vm:"1",name:"Measured Value Sequence",retired:""},"0x0040A301":{keyword:"NumericValueQualifierCodeSequence",vr:"SQ",vm:"1",name:"Numeric Value Qualifier Code Sequence",retired:""},"0x0040A307":{keyword:"CurrentObserverTrial",vr:"PN",vm:"1",name:"Current Observer (Trial)",retired:"Retired"},"0x0040A30A":{keyword:"NumericValue",vr:"DS",vm:"1-n",name:"Numeric Value",retired:""},"0x0040A313":{keyword:"ReferencedAccessionSequenceTrial",vr:"SQ",vm:"1",name:"Referenced Accession Sequence (Trial)",retired:"Retired"},"0x0040A33A":{keyword:"ReportStatusCommentTrial",vr:"ST",vm:"1",name:"Report Status Comment (Trial)",retired:"Retired"},"0x0040A340":{keyword:"ProcedureContextSequenceTrial",vr:"SQ",vm:"1",name:"Procedure Context Sequence (Trial)",retired:"Retired"},"0x0040A352":{keyword:"VerbalSourceTrial",vr:"PN",vm:"1",name:"Verbal Source (Trial)",retired:"Retired"},"0x0040A353":{keyword:"AddressTrial",vr:"ST",vm:"1",name:"Address (Trial)",retired:"Retired"},"0x0040A354":{keyword:"TelephoneNumberTrial",vr:"LO",vm:"1",name:"Telephone Number (Trial)",retired:"Retired"},"0x0040A358":{keyword:"VerbalSourceIdentifierCodeSequenceTrial",vr:"SQ",vm:"1",name:"Verbal Source Identifier Code Sequence (Trial)",retired:"Retired"},"0x0040A360":{keyword:"PredecessorDocumentsSequence",vr:"SQ",vm:"1",name:"Predecessor Documents Sequence",retired:""},"0x0040A370":{keyword:"ReferencedRequestSequence",vr:"SQ",vm:"1",name:"Referenced Request Sequence",retired:""},"0x0040A372":{keyword:"PerformedProcedureCodeSequence",vr:"SQ",vm:"1",name:"Performed Procedure Code Sequence",retired:""},"0x0040A375":{keyword:"CurrentRequestedProcedureEvidenceSequence",vr:"SQ",vm:"1",name:"Current Requested Procedure Evidence Sequence",retired:""},"0x0040A380":{keyword:"ReportDetailSequenceTrial",vr:"SQ",vm:"1",name:"Report Detail Sequence (Trial)",retired:"Retired"},"0x0040A385":{keyword:"PertinentOtherEvidenceSequence",vr:"SQ",vm:"1",name:"Pertinent Other Evidence Sequence",retired:""},"0x0040A390":{keyword:"HL7StructuredDocumentReferenceSequence",vr:"SQ",vm:"1",name:"HL7 Structured Document Reference Sequence",retired:""},"0x0040A402":{keyword:"ObservationSubjectUIDTrial",vr:"UI",vm:"1",name:"Observation Subject UID (Trial)",retired:"Retired"},"0x0040A403":{keyword:"ObservationSubjectClassTrial",vr:"CS",vm:"1",name:"Observation Subject Class (Trial)",retired:"Retired"},"0x0040A404":{keyword:"ObservationSubjectTypeCodeSequenceTrial",vr:"SQ",vm:"1",name:"Observation Subject Type Code Sequence (Trial)",retired:"Retired"},"0x0040A491":{keyword:"CompletionFlag",vr:"CS",vm:"1",name:"Completion Flag",retired:""},"0x0040A492":{keyword:"CompletionFlagDescription",vr:"LO",vm:"1",name:"Completion Flag Description",retired:""},"0x0040A493":{keyword:"VerificationFlag",vr:"CS",vm:"1",name:"Verification Flag",retired:""},"0x0040A494":{keyword:"ArchiveRequested",vr:"CS",vm:"1",name:"Archive Requested",retired:""},"0x0040A496":{keyword:"PreliminaryFlag",vr:"CS",vm:"1",name:"Preliminary Flag",retired:""},"0x0040A504":{keyword:"ContentTemplateSequence",vr:"SQ",vm:"1",name:"Content Template Sequence",retired:""},"0x0040A525":{keyword:"IdenticalDocumentsSequence",vr:"SQ",vm:"1",name:"Identical Documents Sequence",retired:""},"0x0040A600":{keyword:"ObservationSubjectContextFlagTrial",vr:"CS",vm:"1",name:"Observation Subject Context Flag (Trial)",retired:"Retired"},"0x0040A601":{keyword:"ObserverContextFlagTrial",vr:"CS",vm:"1",name:"Observer Context Flag (Trial)",retired:"Retired"},"0x0040A603":{keyword:"ProcedureContextFlagTrial",vr:"CS",vm:"1",name:"Procedure Context Flag (Trial)",retired:"Retired"},"0x0040A730":{keyword:"ContentSequence",vr:"SQ",vm:"1",name:"Content Sequence",retired:""},"0x0040A731":{keyword:"RelationshipSequenceTrial",vr:"SQ",vm:"1",name:"Relationship Sequence (Trial)",retired:"Retired"},"0x0040A732":{keyword:"RelationshipTypeCodeSequenceTrial",vr:"SQ",vm:"1",name:"Relationship Type Code Sequence (Trial)",retired:"Retired"},"0x0040A744":{keyword:"LanguageCodeSequenceTrial",vr:"SQ",vm:"1",name:"Language Code Sequence (Trial)",retired:"Retired"},"0x0040A801":{keyword:"TabulatedValuesSequence",vr:"SQ",vm:"1",name:"Tabulated Values Sequence",retired:""},"0x0040A802":{keyword:"NumberOfTableRows",vr:"UL",vm:"1",name:"Number of Table Rows",retired:""},"0x0040A803":{keyword:"NumberOfTableColumns",vr:"UL",vm:"1",name:"Number of Table Columns",retired:""},"0x0040A804":{keyword:"TableRowNumber",vr:"UL",vm:"1",name:"Table Row Number",retired:""},"0x0040A805":{keyword:"TableColumnNumber",vr:"UL",vm:"1",name:"Table Column Number",retired:""},"0x0040A806":{keyword:"TableRowDefinitionSequence",vr:"SQ",vm:"1",name:"Table Row Definition Sequence",retired:""},"0x0040A807":{keyword:"TableColumnDefinitionSequence",vr:"SQ",vm:"1",name:"Table Column Definition Sequence",retired:""},"0x0040A808":{keyword:"CellValuesSequence",vr:"SQ",vm:"1",name:"Cell Values Sequence",retired:""},"0x0040A992":{keyword:"UniformResourceLocatorTrial",vr:"ST",vm:"1",name:"Uniform Resource Locator (Trial)",retired:"Retired"},"0x0040B020":{keyword:"WaveformAnnotationSequence",vr:"SQ",vm:"1",name:"Waveform Annotation Sequence",retired:""},"0x0040DB00":{keyword:"TemplateIdentifier",vr:"CS",vm:"1",name:"Template Identifier",retired:""},"0x0040DB06":{keyword:"TemplateVersion",vr:"DT",vm:"1",name:"Template Version",retired:"Retired"},"0x0040DB07":{keyword:"TemplateLocalVersion",vr:"DT",vm:"1",name:"Template Local Version",retired:"Retired"},"0x0040DB0B":{keyword:"TemplateExtensionFlag",vr:"CS",vm:"1",name:"Template Extension Flag",retired:"Retired"},"0x0040DB0C":{keyword:"TemplateExtensionOrganizationUID",vr:"UI",vm:"1",name:"Template Extension Organization UID",retired:"Retired"},"0x0040DB0D":{keyword:"TemplateExtensionCreatorUID",vr:"UI",vm:"1",name:"Template Extension Creator UID",retired:"Retired"},"0x0040DB73":{keyword:"ReferencedContentItemIdentifier",vr:"UL",vm:"1-n",name:"Referenced Content Item Identifier",retired:""},"0x0040E001":{keyword:"HL7InstanceIdentifier",vr:"ST",vm:"1",name:"HL7 Instance Identifier",retired:""},"0x0040E004":{keyword:"HL7DocumentEffectiveTime",vr:"DT",vm:"1",name:"HL7 Document Effective Time",retired:""},"0x0040E006":{keyword:"HL7DocumentTypeCodeSequence",vr:"SQ",vm:"1",name:"HL7 Document Type Code Sequence",retired:""},"0x0040E008":{keyword:"DocumentClassCodeSequence",vr:"SQ",vm:"1",name:"Document Class Code Sequence",retired:""},"0x0040E010":{keyword:"RetrieveURI",vr:"UR",vm:"1",name:"Retrieve URI",retired:""},"0x0040E011":{keyword:"RetrieveLocationUID",vr:"UI",vm:"1",name:"Retrieve Location UID",retired:""},"0x0040E020":{keyword:"TypeOfInstances",vr:"CS",vm:"1",name:"Type of Instances",retired:""},"0x0040E021":{keyword:"DICOMRetrievalSequence",vr:"SQ",vm:"1",name:"DICOM Retrieval Sequence",retired:""},"0x0040E022":{keyword:"DICOMMediaRetrievalSequence",vr:"SQ",vm:"1",name:"DICOM Media Retrieval Sequence",retired:""},"0x0040E023":{keyword:"WADORetrievalSequence",vr:"SQ",vm:"1",name:"WADO Retrieval Sequence",retired:""},"0x0040E024":{keyword:"XDSRetrievalSequence",vr:"SQ",vm:"1",name:"XDS Retrieval Sequence",retired:""},"0x0040E025":{keyword:"WADORSRetrievalSequence",vr:"SQ",vm:"1",name:"WADO-RS Retrieval Sequence",retired:""},"0x0040E030":{keyword:"RepositoryUniqueID",vr:"UI",vm:"1",name:"Repository Unique ID",retired:""},"0x0040E031":{keyword:"HomeCommunityID",vr:"UI",vm:"1",name:"Home Community ID",retired:""},"0x00420010":{keyword:"DocumentTitle",vr:"ST",vm:"1",name:"Document Title",retired:""},"0x00420011":{keyword:"EncapsulatedDocument",vr:"OB",vm:"1",name:"Encapsulated Document",retired:""},"0x00420012":{keyword:"MIMETypeOfEncapsulatedDocument",vr:"LO",vm:"1",name:"MIME Type of Encapsulated Document",retired:""},"0x00420013":{keyword:"SourceInstanceSequence",vr:"SQ",vm:"1",name:"Source Instance Sequence",retired:""},"0x00420014":{keyword:"ListOfMIMETypes",vr:"LO",vm:"1-n",name:"List of MIME Types",retired:""},"0x00420015":{keyword:"EncapsulatedDocumentLength",vr:"UL",vm:"1",name:"Encapsulated Document Length",retired:""},"0x00440001":{keyword:"ProductPackageIdentifier",vr:"ST",vm:"1",name:"Product Package Identifier",retired:""},"0x00440002":{keyword:"SubstanceAdministrationApproval",vr:"CS",vm:"1",name:"Substance Administration Approval",retired:""},"0x00440003":{keyword:"ApprovalStatusFurtherDescription",vr:"LT",vm:"1",name:"Approval Status Further Description",retired:""},"0x00440004":{keyword:"ApprovalStatusDateTime",vr:"DT",vm:"1",name:"Approval Status DateTime",retired:""},"0x00440007":{keyword:"ProductTypeCodeSequence",vr:"SQ",vm:"1",name:"Product Type Code Sequence",retired:""},"0x00440008":{keyword:"ProductName",vr:"LO",vm:"1-n",name:"Product Name",retired:""},"0x00440009":{keyword:"ProductDescription",vr:"LT",vm:"1",name:"Product Description",retired:""},"0x0044000A":{keyword:"ProductLotIdentifier",vr:"LO",vm:"1",name:"Product Lot Identifier",retired:""},"0x0044000B":{keyword:"ProductExpirationDateTime",vr:"DT",vm:"1",name:"Product Expiration DateTime",retired:""},"0x00440010":{keyword:"SubstanceAdministrationDateTime",vr:"DT",vm:"1",name:"Substance Administration DateTime",retired:""},"0x00440011":{keyword:"SubstanceAdministrationNotes",vr:"LO",vm:"1",name:"Substance Administration Notes",retired:""},"0x00440012":{keyword:"SubstanceAdministrationDeviceID",vr:"LO",vm:"1",name:"Substance Administration Device ID",retired:""},"0x00440013":{keyword:"ProductParameterSequence",vr:"SQ",vm:"1",name:"Product Parameter Sequence",retired:""},"0x00440019":{keyword:"SubstanceAdministrationParameterSequence",vr:"SQ",vm:"1",name:"Substance Administration Parameter Sequence",retired:""},"0x00440100":{keyword:"ApprovalSequence",vr:"SQ",vm:"1",name:"Approval Sequence",retired:""},"0x00440101":{keyword:"AssertionCodeSequence",vr:"SQ",vm:"1",name:"Assertion Code Sequence",retired:""},"0x00440102":{keyword:"AssertionUID",vr:"UI",vm:"1",name:"Assertion UID",retired:""},"0x00440103":{keyword:"AsserterIdentificationSequence",vr:"SQ",vm:"1",name:"Asserter Identification Sequence",retired:""},"0x00440104":{keyword:"AssertionDateTime",vr:"DT",vm:"1",name:"Assertion DateTime",retired:""},"0x00440105":{keyword:"AssertionExpirationDateTime",vr:"DT",vm:"1",name:"Assertion Expiration DateTime",retired:""},"0x00440106":{keyword:"AssertionComments",vr:"UT",vm:"1",name:"Assertion Comments",retired:""},"0x00440107":{keyword:"RelatedAssertionSequence",vr:"SQ",vm:"1",name:"Related Assertion Sequence",retired:""},"0x00440108":{keyword:"ReferencedAssertionUID",vr:"UI",vm:"1",name:"Referenced Assertion UID",retired:""},"0x00440109":{keyword:"ApprovalSubjectSequence",vr:"SQ",vm:"1",name:"Approval Subject Sequence",retired:""},"0x0044010A":{keyword:"OrganizationalRoleCodeSequence",vr:"SQ",vm:"1",name:"Organizational Role Code Sequence",retired:""},"0x00460012":{keyword:"LensDescription",vr:"LO",vm:"1",name:"Lens Description",retired:""},"0x00460014":{keyword:"RightLensSequence",vr:"SQ",vm:"1",name:"Right Lens Sequence",retired:""},"0x00460015":{keyword:"LeftLensSequence",vr:"SQ",vm:"1",name:"Left Lens Sequence",retired:""},"0x00460016":{keyword:"UnspecifiedLateralityLensSequence",vr:"SQ",vm:"1",name:"Unspecified Laterality Lens Sequence",retired:""},"0x00460018":{keyword:"CylinderSequence",vr:"SQ",vm:"1",name:"Cylinder Sequence",retired:""},"0x00460028":{keyword:"PrismSequence",vr:"SQ",vm:"1",name:"Prism Sequence",retired:""},"0x00460030":{keyword:"HorizontalPrismPower",vr:"FD",vm:"1",name:"Horizontal Prism Power",retired:""},"0x00460032":{keyword:"HorizontalPrismBase",vr:"CS",vm:"1",name:"Horizontal Prism Base",retired:""},"0x00460034":{keyword:"VerticalPrismPower",vr:"FD",vm:"1",name:"Vertical Prism Power",retired:""},"0x00460036":{keyword:"VerticalPrismBase",vr:"CS",vm:"1",name:"Vertical Prism Base",retired:""},"0x00460038":{keyword:"LensSegmentType",vr:"CS",vm:"1",name:"Lens Segment Type",retired:""},"0x00460040":{keyword:"OpticalTransmittance",vr:"FD",vm:"1",name:"Optical Transmittance",retired:""},"0x00460042":{keyword:"ChannelWidth",vr:"FD",vm:"1",name:"Channel Width",retired:""},"0x00460044":{keyword:"PupilSize",vr:"FD",vm:"1",name:"Pupil Size",retired:""},"0x00460046":{keyword:"CornealSize",vr:"FD",vm:"1",name:"Corneal Size",retired:""},"0x00460047":{keyword:"CornealSizeSequence",vr:"SQ",vm:"1",name:"Corneal Size Sequence",retired:""},"0x00460050":{keyword:"AutorefractionRightEyeSequence",vr:"SQ",vm:"1",name:"Autorefraction Right Eye Sequence",retired:""},"0x00460052":{keyword:"AutorefractionLeftEyeSequence",vr:"SQ",vm:"1",name:"Autorefraction Left Eye Sequence",retired:""},"0x00460060":{keyword:"DistancePupillaryDistance",vr:"FD",vm:"1",name:"Distance Pupillary Distance",retired:""},"0x00460062":{keyword:"NearPupillaryDistance",vr:"FD",vm:"1",name:"Near Pupillary Distance",retired:""},"0x00460063":{keyword:"IntermediatePupillaryDistance",vr:"FD",vm:"1",name:"Intermediate Pupillary Distance",retired:""},"0x00460064":{keyword:"OtherPupillaryDistance",vr:"FD",vm:"1",name:"Other Pupillary Distance",retired:""},"0x00460070":{keyword:"KeratometryRightEyeSequence",vr:"SQ",vm:"1",name:"Keratometry Right Eye Sequence",retired:""},"0x00460071":{keyword:"KeratometryLeftEyeSequence",vr:"SQ",vm:"1",name:"Keratometry Left Eye Sequence",retired:""},"0x00460074":{keyword:"SteepKeratometricAxisSequence",vr:"SQ",vm:"1",name:"Steep Keratometric Axis Sequence",retired:""},"0x00460075":{keyword:"RadiusOfCurvature",vr:"FD",vm:"1",name:"Radius of Curvature",retired:""},"0x00460076":{keyword:"KeratometricPower",vr:"FD",vm:"1",name:"Keratometric Power",retired:""},"0x00460077":{keyword:"KeratometricAxis",vr:"FD",vm:"1",name:"Keratometric Axis",retired:""},"0x00460080":{keyword:"FlatKeratometricAxisSequence",vr:"SQ",vm:"1",name:"Flat Keratometric Axis Sequence",retired:""},"0x00460092":{keyword:"BackgroundColor",vr:"CS",vm:"1",name:"Background Color",retired:""},"0x00460094":{keyword:"Optotype",vr:"CS",vm:"1",name:"Optotype",retired:""},"0x00460095":{keyword:"OptotypePresentation",vr:"CS",vm:"1",name:"Optotype Presentation",retired:""},"0x00460097":{keyword:"SubjectiveRefractionRightEyeSequence",vr:"SQ",vm:"1",name:"Subjective Refraction Right Eye Sequence",retired:""},"0x00460098":{keyword:"SubjectiveRefractionLeftEyeSequence",vr:"SQ",vm:"1",name:"Subjective Refraction Left Eye Sequence",retired:""},"0x00460100":{keyword:"AddNearSequence",vr:"SQ",vm:"1",name:"Add Near Sequence",retired:""},"0x00460101":{keyword:"AddIntermediateSequence",vr:"SQ",vm:"1",name:"Add Intermediate Sequence",retired:""},"0x00460102":{keyword:"AddOtherSequence",vr:"SQ",vm:"1",name:"Add Other Sequence",retired:""},"0x00460104":{keyword:"AddPower",vr:"FD",vm:"1",name:"Add Power",retired:""},"0x00460106":{keyword:"ViewingDistance",vr:"FD",vm:"1",name:"Viewing Distance",retired:""},"0x00460110":{keyword:"CorneaMeasurementsSequence",vr:"SQ",vm:"1",name:"Cornea Measurements Sequence",retired:""},"0x00460111":{keyword:"SourceOfCorneaMeasurementDataCodeSequence",vr:"SQ",vm:"1",name:"Source of Cornea Measurement Data Code Sequence",retired:""},"0x00460112":{keyword:"SteepCornealAxisSequence",vr:"SQ",vm:"1",name:"Steep Corneal Axis Sequence",retired:""},"0x00460113":{keyword:"FlatCornealAxisSequence",vr:"SQ",vm:"1",name:"Flat Corneal Axis Sequence",retired:""},"0x00460114":{keyword:"CornealPower",vr:"FD",vm:"1",name:"Corneal Power",retired:""},"0x00460115":{keyword:"CornealAxis",vr:"FD",vm:"1",name:"Corneal Axis",retired:""},"0x00460116":{keyword:"CorneaMeasurementMethodCodeSequence",vr:"SQ",vm:"1",name:"Cornea Measurement Method Code Sequence",retired:""},"0x00460117":{keyword:"RefractiveIndexOfCornea",vr:"FL",vm:"1",name:"Refractive Index of Cornea",retired:""},"0x00460118":{keyword:"RefractiveIndexOfAqueousHumor",vr:"FL",vm:"1",name:"Refractive Index of Aqueous Humor",retired:""},"0x00460121":{keyword:"VisualAcuityTypeCodeSequence",vr:"SQ",vm:"1",name:"Visual Acuity Type Code Sequence",retired:""},"0x00460122":{keyword:"VisualAcuityRightEyeSequence",vr:"SQ",vm:"1",name:"Visual Acuity Right Eye Sequence",retired:""},"0x00460123":{keyword:"VisualAcuityLeftEyeSequence",vr:"SQ",vm:"1",name:"Visual Acuity Left Eye Sequence",retired:""},"0x00460124":{keyword:"VisualAcuityBothEyesOpenSequence",vr:"SQ",vm:"1",name:"Visual Acuity Both Eyes Open Sequence",retired:""},"0x00460125":{keyword:"ViewingDistanceType",vr:"CS",vm:"1",name:"Viewing Distance Type",retired:""},"0x00460135":{keyword:"VisualAcuityModifiers",vr:"SS",vm:"2",name:"Visual Acuity Modifiers",retired:""},"0x00460137":{keyword:"DecimalVisualAcuity",vr:"FD",vm:"1",name:"Decimal Visual Acuity",retired:""},"0x00460139":{keyword:"OptotypeDetailedDefinition",vr:"LO",vm:"1",name:"Optotype Detailed Definition",retired:""},"0x00460145":{keyword:"ReferencedRefractiveMeasurementsSequence",vr:"SQ",vm:"1",name:"Referenced Refractive Measurements Sequence",retired:""},"0x00460146":{keyword:"SpherePower",vr:"FD",vm:"1",name:"Sphere Power",retired:""},"0x00460147":{keyword:"CylinderPower",vr:"FD",vm:"1",name:"Cylinder Power",retired:""},"0x00460201":{keyword:"CornealTopographySurface",vr:"CS",vm:"1",name:"Corneal Topography Surface",retired:""},"0x00460202":{keyword:"CornealVertexLocation",vr:"FL",vm:"2",name:"Corneal Vertex Location",retired:""},"0x00460203":{keyword:"PupilCentroidXCoordinate",vr:"FL",vm:"1",name:"Pupil Centroid X-Coordinate",retired:""},"0x00460204":{keyword:"PupilCentroidYCoordinate",vr:"FL",vm:"1",name:"Pupil Centroid Y-Coordinate",retired:""},"0x00460205":{keyword:"EquivalentPupilRadius",vr:"FL",vm:"1",name:"Equivalent Pupil Radius",retired:""},"0x00460207":{keyword:"CornealTopographyMapTypeCodeSequence",vr:"SQ",vm:"1",name:"Corneal Topography Map Type Code Sequence",retired:""},"0x00460208":{keyword:"VerticesOfTheOutlineOfPupil",vr:"IS",vm:"2-2n",name:"Vertices of the Outline of Pupil",retired:""},"0x00460210":{keyword:"CornealTopographyMappingNormalsSequence",vr:"SQ",vm:"1",name:"Corneal Topography Mapping Normals Sequence",retired:""},"0x00460211":{keyword:"MaximumCornealCurvatureSequence",vr:"SQ",vm:"1",name:"Maximum Corneal Curvature Sequence",retired:""},"0x00460212":{keyword:"MaximumCornealCurvature",vr:"FL",vm:"1",name:"Maximum Corneal Curvature",retired:""},"0x00460213":{keyword:"MaximumCornealCurvatureLocation",vr:"FL",vm:"2",name:"Maximum Corneal Curvature Location",retired:""},"0x00460215":{keyword:"MinimumKeratometricSequence",vr:"SQ",vm:"1",name:"Minimum Keratometric Sequence",retired:""},"0x00460218":{keyword:"SimulatedKeratometricCylinderSequence",vr:"SQ",vm:"1",name:"Simulated Keratometric Cylinder Sequence",retired:""},"0x00460220":{keyword:"AverageCornealPower",vr:"FL",vm:"1",name:"Average Corneal Power",retired:""},"0x00460224":{keyword:"CornealISValue",vr:"FL",vm:"1",name:"Corneal I-S Value",retired:""},"0x00460227":{keyword:"AnalyzedArea",vr:"FL",vm:"1",name:"Analyzed Area",retired:""},"0x00460230":{keyword:"SurfaceRegularityIndex",vr:"FL",vm:"1",name:"Surface Regularity Index",retired:""},"0x00460232":{keyword:"SurfaceAsymmetryIndex",vr:"FL",vm:"1",name:"Surface Asymmetry Index",retired:""},"0x00460234":{keyword:"CornealEccentricityIndex",vr:"FL",vm:"1",name:"Corneal Eccentricity Index",retired:""},"0x00460236":{keyword:"KeratoconusPredictionIndex",vr:"FL",vm:"1",name:"Keratoconus Prediction Index",retired:""},"0x00460238":{keyword:"DecimalPotentialVisualAcuity",vr:"FL",vm:"1",name:"Decimal Potential Visual Acuity",retired:""},"0x00460242":{keyword:"CornealTopographyMapQualityEvaluation",vr:"CS",vm:"1",name:"Corneal Topography Map Quality Evaluation",retired:""},"0x00460244":{keyword:"SourceImageCornealProcessedDataSequence",vr:"SQ",vm:"1",name:"Source Image Corneal Processed Data Sequence",retired:""},"0x00460247":{keyword:"CornealPointLocation",vr:"FL",vm:"3",name:"Corneal Point Location",retired:""},"0x00460248":{keyword:"CornealPointEstimated",vr:"CS",vm:"1",name:"Corneal Point Estimated",retired:""},"0x00460249":{keyword:"AxialPower",vr:"FL",vm:"1",name:"Axial Power",retired:""},"0x00460250":{keyword:"TangentialPower",vr:"FL",vm:"1",name:"Tangential Power",retired:""},"0x00460251":{keyword:"RefractivePower",vr:"FL",vm:"1",name:"Refractive Power",retired:""},"0x00460252":{keyword:"RelativeElevation",vr:"FL",vm:"1",name:"Relative Elevation",retired:""},"0x00460253":{keyword:"CornealWavefront",vr:"FL",vm:"1",name:"Corneal Wavefront",retired:""},"0x00480001":{keyword:"ImagedVolumeWidth",vr:"FL",vm:"1",name:"Imaged Volume Width",retired:""},"0x00480002":{keyword:"ImagedVolumeHeight",vr:"FL",vm:"1",name:"Imaged Volume Height",retired:""},"0x00480003":{keyword:"ImagedVolumeDepth",vr:"FL",vm:"1",name:"Imaged Volume Depth",retired:""},"0x00480006":{keyword:"TotalPixelMatrixColumns",vr:"UL",vm:"1",name:"Total Pixel Matrix Columns",retired:""},"0x00480007":{keyword:"TotalPixelMatrixRows",vr:"UL",vm:"1",name:"Total Pixel Matrix Rows",retired:""},"0x00480008":{keyword:"TotalPixelMatrixOriginSequence",vr:"SQ",vm:"1",name:"Total Pixel Matrix Origin Sequence",retired:""},"0x00480010":{keyword:"SpecimenLabelInImage",vr:"CS",vm:"1",name:"Specimen Label in Image",retired:""},"0x00480011":{keyword:"FocusMethod",vr:"CS",vm:"1",name:"Focus Method",retired:""},"0x00480012":{keyword:"ExtendedDepthOfField",vr:"CS",vm:"1",name:"Extended Depth of Field",retired:""},"0x00480013":{keyword:"NumberOfFocalPlanes",vr:"US",vm:"1",name:"Number of Focal Planes",retired:""},"0x00480014":{keyword:"DistanceBetweenFocalPlanes",vr:"FL",vm:"1",name:"Distance Between Focal Planes",retired:""},"0x00480015":{keyword:"RecommendedAbsentPixelCIELabValue",vr:"US",vm:"3",name:"Recommended Absent Pixel CIELab Value",retired:""},"0x00480100":{keyword:"IlluminatorTypeCodeSequence",vr:"SQ",vm:"1",name:"Illuminator Type Code Sequence",retired:""},"0x00480102":{keyword:"ImageOrientationSlide",vr:"DS",vm:"6",name:"Image Orientation (Slide)",retired:""},"0x00480105":{keyword:"OpticalPathSequence",vr:"SQ",vm:"1",name:"Optical Path Sequence",retired:""},"0x00480106":{keyword:"OpticalPathIdentifier",vr:"SH",vm:"1",name:"Optical Path Identifier",retired:""},"0x00480107":{keyword:"OpticalPathDescription",vr:"ST",vm:"1",name:"Optical Path Description",retired:""},"0x00480108":{keyword:"IlluminationColorCodeSequence",vr:"SQ",vm:"1",name:"Illumination Color Code Sequence",retired:""},"0x00480110":{keyword:"SpecimenReferenceSequence",vr:"SQ",vm:"1",name:"Specimen Reference Sequence",retired:""},"0x00480111":{keyword:"CondenserLensPower",vr:"DS",vm:"1",name:"Condenser Lens Power",retired:""},"0x00480112":{keyword:"ObjectiveLensPower",vr:"DS",vm:"1",name:"Objective Lens Power",retired:""},"0x00480113":{keyword:"ObjectiveLensNumericalAperture",vr:"DS",vm:"1",name:"Objective Lens Numerical Aperture",retired:""},"0x00480114":{keyword:"ConfocalMode",vr:"CS",vm:"1",name:"Confocal Mode",retired:""},"0x00480115":{keyword:"TissueLocation",vr:"CS",vm:"1",name:"Tissue Location",retired:""},"0x00480116":{keyword:"ConfocalMicroscopyImageFrameTypeSequence",vr:"SQ",vm:"1",name:"Confocal Microscopy Image Frame Type Sequence",retired:""},"0x00480117":{keyword:"ImageAcquisitionDepth",vr:"FD",vm:"1",name:"Image Acquisition Depth",retired:""},"0x00480120":{keyword:"PaletteColorLookupTableSequence",vr:"SQ",vm:"1",name:"Palette Color Lookup Table Sequence",retired:""},"0x00480200":{keyword:"ReferencedImageNavigationSequence",vr:"SQ",vm:"1",name:"Referenced Image Navigation Sequence",retired:"Retired"},"0x00480201":{keyword:"TopLeftHandCornerOfLocalizerArea",vr:"US",vm:"2",name:"Top Left Hand Corner of Localizer Area",retired:"Retired"},"0x00480202":{keyword:"BottomRightHandCornerOfLocalizerArea",vr:"US",vm:"2",name:"Bottom Right Hand Corner of Localizer Area",retired:"Retired"},"0x00480207":{keyword:"OpticalPathIdentificationSequence",vr:"SQ",vm:"1",name:"Optical Path Identification Sequence",retired:""},"0x0048021A":{keyword:"PlanePositionSlideSequence",vr:"SQ",vm:"1",name:"Plane Position (Slide) Sequence",retired:""},"0x0048021E":{keyword:"ColumnPositionInTotalImagePixelMatrix",vr:"SL",vm:"1",name:"Column Position In Total Image Pixel Matrix",retired:""},"0x0048021F":{keyword:"RowPositionInTotalImagePixelMatrix",vr:"SL",vm:"1",name:"Row Position In Total Image Pixel Matrix",retired:""},"0x00480301":{keyword:"PixelOriginInterpretation",vr:"CS",vm:"1",name:"Pixel Origin Interpretation",retired:""},"0x00480302":{keyword:"NumberOfOpticalPaths",vr:"UL",vm:"1",name:"Number of Optical Paths",retired:""},"0x00480303":{keyword:"TotalPixelMatrixFocalPlanes",vr:"UL",vm:"1",name:"Total Pixel Matrix Focal Planes",retired:""},"0x00500004":{keyword:"CalibrationImage",vr:"CS",vm:"1",name:"Calibration Image",retired:""},"0x00500010":{keyword:"DeviceSequence",vr:"SQ",vm:"1",name:"Device Sequence",retired:""},"0x00500012":{keyword:"ContainerComponentTypeCodeSequence",vr:"SQ",vm:"1",name:"Container Component Type Code Sequence",retired:""},"0x00500013":{keyword:"ContainerComponentThickness",vr:"FD",vm:"1",name:"Container Component Thickness",retired:""},"0x00500014":{keyword:"DeviceLength",vr:"DS",vm:"1",name:"Device Length",retired:""},"0x00500015":{keyword:"ContainerComponentWidth",vr:"FD",vm:"1",name:"Container Component Width",retired:""},"0x00500016":{keyword:"DeviceDiameter",vr:"DS",vm:"1",name:"Device Diameter",retired:""},"0x00500017":{keyword:"DeviceDiameterUnits",vr:"CS",vm:"1",name:"Device Diameter Units",retired:""},"0x00500018":{keyword:"DeviceVolume",vr:"DS",vm:"1",name:"Device Volume",retired:""},"0x00500019":{keyword:"InterMarkerDistance",vr:"DS",vm:"1",name:"Inter-Marker Distance",retired:""},"0x0050001A":{keyword:"ContainerComponentMaterial",vr:"CS",vm:"1",name:"Container Component Material",retired:""},"0x0050001B":{keyword:"ContainerComponentID",vr:"LO",vm:"1",name:"Container Component ID",retired:""},"0x0050001C":{keyword:"ContainerComponentLength",vr:"FD",vm:"1",name:"Container Component Length",retired:""},"0x0050001D":{keyword:"ContainerComponentDiameter",vr:"FD",vm:"1",name:"Container Component Diameter",retired:""},"0x0050001E":{keyword:"ContainerComponentDescription",vr:"LO",vm:"1",name:"Container Component Description",retired:""},"0x00500020":{keyword:"DeviceDescription",vr:"LO",vm:"1",name:"Device Description",retired:""},"0x00500021":{keyword:"LongDeviceDescription",vr:"ST",vm:"1",name:"Long Device Description",retired:""},"0x00520001":{keyword:"ContrastBolusIngredientPercentByVolume",vr:"FL",vm:"1",name:"Contrast/Bolus Ingredient Percent by Volume",retired:""},"0x00520002":{keyword:"OCTFocalDistance",vr:"FD",vm:"1",name:"OCT Focal Distance",retired:""},"0x00520003":{keyword:"BeamSpotSize",vr:"FD",vm:"1",name:"Beam Spot Size",retired:""},"0x00520004":{keyword:"EffectiveRefractiveIndex",vr:"FD",vm:"1",name:"Effective Refractive Index",retired:""},"0x00520006":{keyword:"OCTAcquisitionDomain",vr:"CS",vm:"1",name:"OCT Acquisition Domain",retired:""},"0x00520007":{keyword:"OCTOpticalCenterWavelength",vr:"FD",vm:"1",name:"OCT Optical Center Wavelength",retired:""},"0x00520008":{keyword:"AxialResolution",vr:"FD",vm:"1",name:"Axial Resolution",retired:""},"0x00520009":{keyword:"RangingDepth",vr:"FD",vm:"1",name:"Ranging Depth",retired:""},"0x00520011":{keyword:"ALineRate",vr:"FD",vm:"1",name:"A-line Rate",retired:""},"0x00520012":{keyword:"ALinesPerFrame",vr:"US",vm:"1",name:"A-lines Per Frame",retired:""},"0x00520013":{keyword:"CatheterRotationalRate",vr:"FD",vm:"1",name:"Catheter Rotational Rate",retired:""},"0x00520014":{keyword:"ALinePixelSpacing",vr:"FD",vm:"1",name:"A-line Pixel Spacing",retired:""},"0x00520016":{keyword:"ModeOfPercutaneousAccessSequence",vr:"SQ",vm:"1",name:"Mode of Percutaneous Access Sequence",retired:""},"0x00520025":{keyword:"IntravascularOCTFrameTypeSequence",vr:"SQ",vm:"1",name:"Intravascular OCT Frame Type Sequence",retired:""},"0x00520026":{keyword:"OCTZOffsetApplied",vr:"CS",vm:"1",name:"OCT Z Offset Applied",retired:""},"0x00520027":{keyword:"IntravascularFrameContentSequence",vr:"SQ",vm:"1",name:"Intravascular Frame Content Sequence",retired:""},"0x00520028":{keyword:"IntravascularLongitudinalDistance",vr:"FD",vm:"1",name:"Intravascular Longitudinal Distance",retired:""},"0x00520029":{keyword:"IntravascularOCTFrameContentSequence",vr:"SQ",vm:"1",name:"Intravascular OCT Frame Content Sequence",retired:""},"0x00520030":{keyword:"OCTZOffsetCorrection",vr:"SS",vm:"1",name:"OCT Z Offset Correction",retired:""},"0x00520031":{keyword:"CatheterDirectionOfRotation",vr:"CS",vm:"1",name:"Catheter Direction of Rotation",retired:""},"0x00520033":{keyword:"SeamLineLocation",vr:"FD",vm:"1",name:"Seam Line Location",retired:""},"0x00520034":{keyword:"FirstALineLocation",vr:"FD",vm:"1",name:"First A-line Location",retired:""},"0x00520036":{keyword:"SeamLineIndex",vr:"US",vm:"1",name:"Seam Line Index",retired:""},"0x00520038":{keyword:"NumberOfPaddedALines",vr:"US",vm:"1",name:"Number of Padded A-lines",retired:""},"0x00520039":{keyword:"InterpolationType",vr:"CS",vm:"1",name:"Interpolation Type",retired:""},"0x0052003A":{keyword:"RefractiveIndexApplied",vr:"CS",vm:"1",name:"Refractive Index Applied",retired:""},"0x00540010":{keyword:"EnergyWindowVector",vr:"US",vm:"1-n",name:"Energy Window Vector",retired:""},"0x00540011":{keyword:"NumberOfEnergyWindows",vr:"US",vm:"1",name:"Number of Energy Windows",retired:""},"0x00540012":{keyword:"EnergyWindowInformationSequence",vr:"SQ",vm:"1",name:"Energy Window Information Sequence",retired:""},"0x00540013":{keyword:"EnergyWindowRangeSequence",vr:"SQ",vm:"1",name:"Energy Window Range Sequence",retired:""},"0x00540014":{keyword:"EnergyWindowLowerLimit",vr:"DS",vm:"1",name:"Energy Window Lower Limit",retired:""},"0x00540015":{keyword:"EnergyWindowUpperLimit",vr:"DS",vm:"1",name:"Energy Window Upper Limit",retired:""},"0x00540016":{keyword:"RadiopharmaceuticalInformationSequence",vr:"SQ",vm:"1",name:"Radiopharmaceutical Information Sequence",retired:""},"0x00540017":{keyword:"ResidualSyringeCounts",vr:"IS",vm:"1",name:"Residual Syringe Counts",retired:""},"0x00540018":{keyword:"EnergyWindowName",vr:"SH",vm:"1",name:"Energy Window Name",retired:""},"0x00540020":{keyword:"DetectorVector",vr:"US",vm:"1-n",name:"Detector Vector",retired:""},"0x00540021":{keyword:"NumberOfDetectors",vr:"US",vm:"1",name:"Number of Detectors",retired:""},"0x00540022":{keyword:"DetectorInformationSequence",vr:"SQ",vm:"1",name:"Detector Information Sequence",retired:""},"0x00540030":{keyword:"PhaseVector",vr:"US",vm:"1-n",name:"Phase Vector",retired:""},"0x00540031":{keyword:"NumberOfPhases",vr:"US",vm:"1",name:"Number of Phases",retired:""},"0x00540032":{keyword:"PhaseInformationSequence",vr:"SQ",vm:"1",name:"Phase Information Sequence",retired:""},"0x00540033":{keyword:"NumberOfFramesInPhase",vr:"US",vm:"1",name:"Number of Frames in Phase",retired:""},"0x00540036":{keyword:"PhaseDelay",vr:"IS",vm:"1",name:"Phase Delay",retired:""},"0x00540038":{keyword:"PauseBetweenFrames",vr:"IS",vm:"1",name:"Pause Between Frames",retired:""},"0x00540039":{keyword:"PhaseDescription",vr:"CS",vm:"1",name:"Phase Description",retired:""},"0x00540050":{keyword:"RotationVector",vr:"US",vm:"1-n",name:"Rotation Vector",retired:""},"0x00540051":{keyword:"NumberOfRotations",vr:"US",vm:"1",name:"Number of Rotations",retired:""},"0x00540052":{keyword:"RotationInformationSequence",vr:"SQ",vm:"1",name:"Rotation Information Sequence",retired:""},"0x00540053":{keyword:"NumberOfFramesInRotation",vr:"US",vm:"1",name:"Number of Frames in Rotation",retired:""},"0x00540060":{keyword:"RRIntervalVector",vr:"US",vm:"1-n",name:"R-R Interval Vector",retired:""},"0x00540061":{keyword:"NumberOfRRIntervals",vr:"US",vm:"1",name:"Number of R-R Intervals",retired:""},"0x00540062":{keyword:"GatedInformationSequence",vr:"SQ",vm:"1",name:"Gated Information Sequence",retired:""},"0x00540063":{keyword:"DataInformationSequence",vr:"SQ",vm:"1",name:"Data Information Sequence",retired:""},"0x00540070":{keyword:"TimeSlotVector",vr:"US",vm:"1-n",name:"Time Slot Vector",retired:""},"0x00540071":{keyword:"NumberOfTimeSlots",vr:"US",vm:"1",name:"Number of Time Slots",retired:""},"0x00540072":{keyword:"TimeSlotInformationSequence",vr:"SQ",vm:"1",name:"Time Slot Information Sequence",retired:""},"0x00540073":{keyword:"TimeSlotTime",vr:"DS",vm:"1",name:"Time Slot Time",retired:""},"0x00540080":{keyword:"SliceVector",vr:"US",vm:"1-n",name:"Slice Vector",retired:""},"0x00540081":{keyword:"NumberOfSlices",vr:"US",vm:"1",name:"Number of Slices",retired:""},"0x00540090":{keyword:"AngularViewVector",vr:"US",vm:"1-n",name:"Angular View Vector",retired:""},"0x00540100":{keyword:"TimeSliceVector",vr:"US",vm:"1-n",name:"Time Slice Vector",retired:""},"0x00540101":{keyword:"NumberOfTimeSlices",vr:"US",vm:"1",name:"Number of Time Slices",retired:""},"0x00540200":{keyword:"StartAngle",vr:"DS",vm:"1",name:"Start Angle",retired:""},"0x00540202":{keyword:"TypeOfDetectorMotion",vr:"CS",vm:"1",name:"Type of Detector Motion",retired:""},"0x00540210":{keyword:"TriggerVector",vr:"IS",vm:"1-n",name:"Trigger Vector",retired:""},"0x00540211":{keyword:"NumberOfTriggersInPhase",vr:"US",vm:"1",name:"Number of Triggers in Phase",retired:""},"0x00540220":{keyword:"ViewCodeSequence",vr:"SQ",vm:"1",name:"View Code Sequence",retired:""},"0x00540222":{keyword:"ViewModifierCodeSequence",vr:"SQ",vm:"1",name:"View Modifier Code Sequence",retired:""},"0x00540300":{keyword:"RadionuclideCodeSequence",vr:"SQ",vm:"1",name:"Radionuclide Code Sequence",retired:""},"0x00540302":{keyword:"AdministrationRouteCodeSequence",vr:"SQ",vm:"1",name:"Administration Route Code Sequence",retired:""},"0x00540304":{keyword:"RadiopharmaceuticalCodeSequence",vr:"SQ",vm:"1",name:"Radiopharmaceutical Code Sequence",retired:""},"0x00540306":{keyword:"CalibrationDataSequence",vr:"SQ",vm:"1",name:"Calibration Data Sequence",retired:""},"0x00540308":{keyword:"EnergyWindowNumber",vr:"US",vm:"1",name:"Energy Window Number",retired:""},"0x00540400":{keyword:"ImageID",vr:"SH",vm:"1",name:"Image ID",retired:""},"0x00540410":{keyword:"PatientOrientationCodeSequence",vr:"SQ",vm:"1",name:"Patient Orientation Code Sequence",retired:""},"0x00540412":{keyword:"PatientOrientationModifierCodeSequence",vr:"SQ",vm:"1",name:"Patient Orientation Modifier Code Sequence",retired:""},"0x00540414":{keyword:"PatientGantryRelationshipCodeSequence",vr:"SQ",vm:"1",name:"Patient Gantry Relationship Code Sequence",retired:""},"0x00540500":{keyword:"SliceProgressionDirection",vr:"CS",vm:"1",name:"Slice Progression Direction",retired:""},"0x00540501":{keyword:"ScanProgressionDirection",vr:"CS",vm:"1",name:"Scan Progression Direction",retired:""},"0x00541000":{keyword:"SeriesType",vr:"CS",vm:"2",name:"Series Type",retired:""},"0x00541001":{keyword:"Units",vr:"CS",vm:"1",name:"Units",retired:""},"0x00541002":{keyword:"CountsSource",vr:"CS",vm:"1",name:"Counts Source",retired:""},"0x00541004":{keyword:"ReprojectionMethod",vr:"CS",vm:"1",name:"Reprojection Method",retired:""},"0x00541006":{keyword:"SUVType",vr:"CS",vm:"1",name:"SUV Type",retired:""},"0x00541100":{keyword:"RandomsCorrectionMethod",vr:"CS",vm:"1",name:"Randoms Correction Method",retired:""},"0x00541101":{keyword:"AttenuationCorrectionMethod",vr:"LO",vm:"1",name:"Attenuation Correction Method",retired:""},"0x00541102":{keyword:"DecayCorrection",vr:"CS",vm:"1",name:"Decay Correction",retired:""},"0x00541103":{keyword:"ReconstructionMethod",vr:"LO",vm:"1",name:"Reconstruction Method",retired:""},"0x00541104":{keyword:"DetectorLinesOfResponseUsed",vr:"LO",vm:"1",name:"Detector Lines of Response Used",retired:""},"0x00541105":{keyword:"ScatterCorrectionMethod",vr:"LO",vm:"1",name:"Scatter Correction Method",retired:""},"0x00541200":{keyword:"AxialAcceptance",vr:"DS",vm:"1",name:"Axial Acceptance",retired:""},"0x00541201":{keyword:"AxialMash",vr:"IS",vm:"2",name:"Axial Mash",retired:""},"0x00541202":{keyword:"TransverseMash",vr:"IS",vm:"1",name:"Transverse Mash",retired:""},"0x00541203":{keyword:"DetectorElementSize",vr:"DS",vm:"2",name:"Detector Element Size",retired:""},"0x00541210":{keyword:"CoincidenceWindowWidth",vr:"DS",vm:"1",name:"Coincidence Window Width",retired:""},"0x00541220":{keyword:"SecondaryCountsType",vr:"CS",vm:"1-n",name:"Secondary Counts Type",retired:""},"0x00541300":{keyword:"FrameReferenceTime",vr:"DS",vm:"1",name:"Frame Reference Time",retired:""},"0x00541310":{keyword:"PrimaryPromptsCountsAccumulated",vr:"IS",vm:"1",name:"Primary (Prompts) Counts Accumulated",retired:""},"0x00541311":{keyword:"SecondaryCountsAccumulated",vr:"IS",vm:"1-n",name:"Secondary Counts Accumulated",retired:""},"0x00541320":{keyword:"SliceSensitivityFactor",vr:"DS",vm:"1",name:"Slice Sensitivity Factor",retired:""},"0x00541321":{keyword:"DecayFactor",vr:"DS",vm:"1",name:"Decay Factor",retired:""},"0x00541322":{keyword:"DoseCalibrationFactor",vr:"DS",vm:"1",name:"Dose Calibration Factor",retired:""},"0x00541323":{keyword:"ScatterFractionFactor",vr:"DS",vm:"1",name:"Scatter Fraction Factor",retired:""},"0x00541324":{keyword:"DeadTimeFactor",vr:"DS",vm:"1",name:"Dead Time Factor",retired:""},"0x00541330":{keyword:"ImageIndex",vr:"US",vm:"1",name:"Image Index",retired:""},"0x00541400":{keyword:"CountsIncluded",vr:"CS",vm:"1-n",name:"Counts Included",retired:"Retired"},"0x00541401":{keyword:"DeadTimeCorrectionFlag",vr:"CS",vm:"1",name:"Dead Time Correction Flag",retired:"Retired"},"0x00603000":{keyword:"HistogramSequence",vr:"SQ",vm:"1",name:"Histogram Sequence",retired:""},"0x00603002":{keyword:"HistogramNumberOfBins",vr:"US",vm:"1",name:"Histogram Number of Bins",retired:""},"0x00603004":{keyword:"HistogramFirstBinValue",vr:"US or SS",vm:"1",name:"Histogram First Bin Value",retired:""},"0x00603006":{keyword:"HistogramLastBinValue",vr:"US or SS",vm:"1",name:"Histogram Last Bin Value",retired:""},"0x00603008":{keyword:"HistogramBinWidth",vr:"US",vm:"1",name:"Histogram Bin Width",retired:""},"0x00603010":{keyword:"HistogramExplanation",vr:"LO",vm:"1",name:"Histogram Explanation",retired:""},"0x00603020":{keyword:"HistogramData",vr:"UL",vm:"1-n",name:"Histogram Data",retired:""},"0x00620001":{keyword:"SegmentationType",vr:"CS",vm:"1",name:"Segmentation Type",retired:""},"0x00620002":{keyword:"SegmentSequence",vr:"SQ",vm:"1",name:"Segment Sequence",retired:""},"0x00620003":{keyword:"SegmentedPropertyCategoryCodeSequence",vr:"SQ",vm:"1",name:"Segmented Property Category Code Sequence",retired:""},"0x00620004":{keyword:"SegmentNumber",vr:"US",vm:"1",name:"Segment Number",retired:""},"0x00620005":{keyword:"SegmentLabel",vr:"LO",vm:"1",name:"Segment Label",retired:""},"0x00620006":{keyword:"SegmentDescription",vr:"ST",vm:"1",name:"Segment Description",retired:""},"0x00620007":{keyword:"SegmentationAlgorithmIdentificationSequence",vr:"SQ",vm:"1",name:"Segmentation Algorithm Identification Sequence",retired:""},"0x00620008":{keyword:"SegmentAlgorithmType",vr:"CS",vm:"1",name:"Segment Algorithm Type",retired:""},"0x00620009":{keyword:"SegmentAlgorithmName",vr:"LO",vm:"1-n",name:"Segment Algorithm Name",retired:""},"0x0062000A":{keyword:"SegmentIdentificationSequence",vr:"SQ",vm:"1",name:"Segment Identification Sequence",retired:""},"0x0062000B":{keyword:"ReferencedSegmentNumber",vr:"US",vm:"1-n",name:"Referenced Segment Number",retired:""},"0x0062000C":{keyword:"RecommendedDisplayGrayscaleValue",vr:"US",vm:"1",name:"Recommended Display Grayscale Value",retired:""},"0x0062000D":{keyword:"RecommendedDisplayCIELabValue",vr:"US",vm:"3",name:"Recommended Display CIELab Value",retired:""},"0x0062000E":{keyword:"MaximumFractionalValue",vr:"US",vm:"1",name:"Maximum Fractional Value",retired:""},"0x0062000F":{keyword:"SegmentedPropertyTypeCodeSequence",vr:"SQ",vm:"1",name:"Segmented Property Type Code Sequence",retired:""},"0x00620010":{keyword:"SegmentationFractionalType",vr:"CS",vm:"1",name:"Segmentation Fractional Type",retired:""},"0x00620011":{keyword:"SegmentedPropertyTypeModifierCodeSequence",vr:"SQ",vm:"1",name:"Segmented Property Type Modifier Code Sequence",retired:""},"0x00620012":{keyword:"UsedSegmentsSequence",vr:"SQ",vm:"1",name:"Used Segments Sequence",retired:""},"0x00620013":{keyword:"SegmentsOverlap",vr:"CS",vm:"1",name:"Segments Overlap",retired:""},"0x00620020":{keyword:"TrackingID",vr:"UT",vm:"1",name:"Tracking ID",retired:""},"0x00620021":{keyword:"TrackingUID",vr:"UI",vm:"1",name:"Tracking UID",retired:""},"0x00640002":{keyword:"DeformableRegistrationSequence",vr:"SQ",vm:"1",name:"Deformable Registration Sequence",retired:""},"0x00640003":{keyword:"SourceFrameOfReferenceUID",vr:"UI",vm:"1",name:"Source Frame of Reference UID",retired:""},"0x00640005":{keyword:"DeformableRegistrationGridSequence",vr:"SQ",vm:"1",name:"Deformable Registration Grid Sequence",retired:""},"0x00640007":{keyword:"GridDimensions",vr:"UL",vm:"3",name:"Grid Dimensions",retired:""},"0x00640008":{keyword:"GridResolution",vr:"FD",vm:"3",name:"Grid Resolution",retired:""},"0x00640009":{keyword:"VectorGridData",vr:"OF",vm:"1",name:"Vector Grid Data",retired:""},"0x0064000F":{keyword:"PreDeformationMatrixRegistrationSequence",vr:"SQ",vm:"1",name:"Pre Deformation Matrix Registration Sequence",retired:""},"0x00640010":{keyword:"PostDeformationMatrixRegistrationSequence",vr:"SQ",vm:"1",name:"Post Deformation Matrix Registration Sequence",retired:""},"0x00660001":{keyword:"NumberOfSurfaces",vr:"UL",vm:"1",name:"Number of Surfaces",retired:""},"0x00660002":{keyword:"SurfaceSequence",vr:"SQ",vm:"1",name:"Surface Sequence",retired:""},"0x00660003":{keyword:"SurfaceNumber",vr:"UL",vm:"1",name:"Surface Number",retired:""},"0x00660004":{keyword:"SurfaceComments",vr:"LT",vm:"1",name:"Surface Comments",retired:""},"0x00660009":{keyword:"SurfaceProcessing",vr:"CS",vm:"1",name:"Surface Processing",retired:""},"0x0066000A":{keyword:"SurfaceProcessingRatio",vr:"FL",vm:"1",name:"Surface Processing Ratio",retired:""},"0x0066000B":{keyword:"SurfaceProcessingDescription",vr:"LO",vm:"1",name:"Surface Processing Description",retired:""},"0x0066000C":{keyword:"RecommendedPresentationOpacity",vr:"FL",vm:"1",name:"Recommended Presentation Opacity",retired:""},"0x0066000D":{keyword:"RecommendedPresentationType",vr:"CS",vm:"1",name:"Recommended Presentation Type",retired:""},"0x0066000E":{keyword:"FiniteVolume",vr:"CS",vm:"1",name:"Finite Volume",retired:""},"0x00660010":{keyword:"Manifold",vr:"CS",vm:"1",name:"Manifold",retired:""},"0x00660011":{keyword:"SurfacePointsSequence",vr:"SQ",vm:"1",name:"Surface Points Sequence",retired:""},"0x00660012":{keyword:"SurfacePointsNormalsSequence",vr:"SQ",vm:"1",name:"Surface Points Normals Sequence",retired:""},"0x00660013":{keyword:"SurfaceMeshPrimitivesSequence",vr:"SQ",vm:"1",name:"Surface Mesh Primitives Sequence",retired:""},"0x00660015":{keyword:"NumberOfSurfacePoints",vr:"UL",vm:"1",name:"Number of Surface Points",retired:""},"0x00660016":{keyword:"PointCoordinatesData",vr:"OF",vm:"1",name:"Point Coordinates Data",retired:""},"0x00660017":{keyword:"PointPositionAccuracy",vr:"FL",vm:"3",name:"Point Position Accuracy",retired:""},"0x00660018":{keyword:"MeanPointDistance",vr:"FL",vm:"1",name:"Mean Point Distance",retired:""},"0x00660019":{keyword:"MaximumPointDistance",vr:"FL",vm:"1",name:"Maximum Point Distance",retired:""},"0x0066001A":{keyword:"PointsBoundingBoxCoordinates",vr:"FL",vm:"6",name:"Points Bounding Box Coordinates",retired:""},"0x0066001B":{keyword:"AxisOfRotation",vr:"FL",vm:"3",name:"Axis of Rotation",retired:""},"0x0066001C":{keyword:"CenterOfRotation",vr:"FL",vm:"3",name:"Center of Rotation",retired:""},"0x0066001E":{keyword:"NumberOfVectors",vr:"UL",vm:"1",name:"Number of Vectors",retired:""},"0x0066001F":{keyword:"VectorDimensionality",vr:"US",vm:"1",name:"Vector Dimensionality",retired:""},"0x00660020":{keyword:"VectorAccuracy",vr:"FL",vm:"1-n",name:"Vector Accuracy",retired:""},"0x00660021":{keyword:"VectorCoordinateData",vr:"OF",vm:"1",name:"Vector Coordinate Data",retired:""},"0x00660022":{keyword:"DoublePointCoordinatesData",vr:"OD",vm:"1",name:"Double Point Coordinates Data",retired:""},"0x00660023":{keyword:"TrianglePointIndexList",vr:"OW",vm:"1",name:"Triangle Point Index List",retired:"Retired"},"0x00660024":{keyword:"EdgePointIndexList",vr:"OW",vm:"1",name:"Edge Point Index List",retired:"Retired"},"0x00660025":{keyword:"VertexPointIndexList",vr:"OW",vm:"1",name:"Vertex Point Index List",retired:"Retired"},"0x00660026":{keyword:"TriangleStripSequence",vr:"SQ",vm:"1",name:"Triangle Strip Sequence",retired:""},"0x00660027":{keyword:"TriangleFanSequence",vr:"SQ",vm:"1",name:"Triangle Fan Sequence",retired:""},"0x00660028":{keyword:"LineSequence",vr:"SQ",vm:"1",name:"Line Sequence",retired:""},"0x00660029":{keyword:"PrimitivePointIndexList",vr:"OW",vm:"1",name:"Primitive Point Index List",retired:"Retired"},"0x0066002A":{keyword:"SurfaceCount",vr:"UL",vm:"1",name:"Surface Count",retired:""},"0x0066002B":{keyword:"ReferencedSurfaceSequence",vr:"SQ",vm:"1",name:"Referenced Surface Sequence",retired:""},"0x0066002C":{keyword:"ReferencedSurfaceNumber",vr:"UL",vm:"1",name:"Referenced Surface Number",retired:""},"0x0066002D":{keyword:"SegmentSurfaceGenerationAlgorithmIdentificationSequence",vr:"SQ",vm:"1",name:"Segment Surface Generation Algorithm Identification Sequence",retired:""},"0x0066002E":{keyword:"SegmentSurfaceSourceInstanceSequence",vr:"SQ",vm:"1",name:"Segment Surface Source Instance Sequence",retired:""},"0x0066002F":{keyword:"AlgorithmFamilyCodeSequence",vr:"SQ",vm:"1",name:"Algorithm Family Code Sequence",retired:""},"0x00660030":{keyword:"AlgorithmNameCodeSequence",vr:"SQ",vm:"1",name:"Algorithm Name Code Sequence",retired:""},"0x00660031":{keyword:"AlgorithmVersion",vr:"LO",vm:"1",name:"Algorithm Version",retired:""},"0x00660032":{keyword:"AlgorithmParameters",vr:"LT",vm:"1",name:"Algorithm Parameters",retired:""},"0x00660034":{keyword:"FacetSequence",vr:"SQ",vm:"1",name:"Facet Sequence",retired:""},"0x00660035":{keyword:"SurfaceProcessingAlgorithmIdentificationSequence",vr:"SQ",vm:"1",name:"Surface Processing Algorithm Identification Sequence",retired:""},"0x00660036":{keyword:"AlgorithmName",vr:"LO",vm:"1",name:"Algorithm Name",retired:""},"0x00660037":{keyword:"RecommendedPointRadius",vr:"FL",vm:"1",name:"Recommended Point Radius",retired:""},"0x00660038":{keyword:"RecommendedLineThickness",vr:"FL",vm:"1",name:"Recommended Line Thickness",retired:""},"0x00660040":{keyword:"LongPrimitivePointIndexList",vr:"OL",vm:"1",name:"Long Primitive Point Index List",retired:""},"0x00660041":{keyword:"LongTrianglePointIndexList",vr:"OL",vm:"1",name:"Long Triangle Point Index List",retired:""},"0x00660042":{keyword:"LongEdgePointIndexList",vr:"OL",vm:"1",name:"Long Edge Point Index List",retired:""},"0x00660043":{keyword:"LongVertexPointIndexList",vr:"OL",vm:"1",name:"Long Vertex Point Index List",retired:""},"0x00660101":{keyword:"TrackSetSequence",vr:"SQ",vm:"1",name:"Track Set Sequence",retired:""},"0x00660102":{keyword:"TrackSequence",vr:"SQ",vm:"1",name:"Track Sequence",retired:""},"0x00660103":{keyword:"RecommendedDisplayCIELabValueList",vr:"OW",vm:"1",name:"Recommended Display CIELab Value List",retired:""},"0x00660104":{keyword:"TrackingAlgorithmIdentificationSequence",vr:"SQ",vm:"1",name:"Tracking Algorithm Identification Sequence",retired:""},"0x00660105":{keyword:"TrackSetNumber",vr:"UL",vm:"1",name:"Track Set Number",retired:""},"0x00660106":{keyword:"TrackSetLabel",vr:"LO",vm:"1",name:"Track Set Label",retired:""},"0x00660107":{keyword:"TrackSetDescription",vr:"UT",vm:"1",name:"Track Set Description",retired:""},"0x00660108":{keyword:"TrackSetAnatomicalTypeCodeSequence",vr:"SQ",vm:"1",name:"Track Set Anatomical Type Code Sequence",retired:""},"0x00660121":{keyword:"MeasurementsSequence",vr:"SQ",vm:"1",name:"Measurements Sequence",retired:""},"0x00660124":{keyword:"TrackSetStatisticsSequence",vr:"SQ",vm:"1",name:"Track Set Statistics Sequence",retired:""},"0x00660125":{keyword:"FloatingPointValues",vr:"OF",vm:"1",name:"Floating Point Values",retired:""},"0x00660129":{keyword:"TrackPointIndexList",vr:"OL",vm:"1",name:"Track Point Index List",retired:""},"0x00660130":{keyword:"TrackStatisticsSequence",vr:"SQ",vm:"1",name:"Track Statistics Sequence",retired:""},"0x00660132":{keyword:"MeasurementValuesSequence",vr:"SQ",vm:"1",name:"Measurement Values Sequence",retired:""},"0x00660133":{keyword:"DiffusionAcquisitionCodeSequence",vr:"SQ",vm:"1",name:"Diffusion Acquisition Code Sequence",retired:""},"0x00660134":{keyword:"DiffusionModelCodeSequence",vr:"SQ",vm:"1",name:"Diffusion Model Code Sequence",retired:""},"0x00686210":{keyword:"ImplantSize",vr:"LO",vm:"1",name:"Implant Size",retired:""},"0x00686221":{keyword:"ImplantTemplateVersion",vr:"LO",vm:"1",name:"Implant Template Version",retired:""},"0x00686222":{keyword:"ReplacedImplantTemplateSequence",vr:"SQ",vm:"1",name:"Replaced Implant Template Sequence",retired:""},"0x00686223":{keyword:"ImplantType",vr:"CS",vm:"1",name:"Implant Type",retired:""},"0x00686224":{keyword:"DerivationImplantTemplateSequence",vr:"SQ",vm:"1",name:"Derivation Implant Template Sequence",retired:""},"0x00686225":{keyword:"OriginalImplantTemplateSequence",vr:"SQ",vm:"1",name:"Original Implant Template Sequence",retired:""},"0x00686226":{keyword:"EffectiveDateTime",vr:"DT",vm:"1",name:"Effective DateTime",retired:""},"0x00686230":{keyword:"ImplantTargetAnatomySequence",vr:"SQ",vm:"1",name:"Implant Target Anatomy Sequence",retired:""},"0x00686260":{keyword:"InformationFromManufacturerSequence",vr:"SQ",vm:"1",name:"Information From Manufacturer Sequence",retired:""},"0x00686265":{keyword:"NotificationFromManufacturerSequence",vr:"SQ",vm:"1",name:"Notification From Manufacturer Sequence",retired:""},"0x00686270":{keyword:"InformationIssueDateTime",vr:"DT",vm:"1",name:"Information Issue DateTime",retired:""},"0x00686280":{keyword:"InformationSummary",vr:"ST",vm:"1",name:"Information Summary",retired:""},"0x006862A0":{keyword:"ImplantRegulatoryDisapprovalCodeSequence",vr:"SQ",vm:"1",name:"Implant Regulatory Disapproval Code Sequence",retired:""},"0x006862A5":{keyword:"OverallTemplateSpatialTolerance",vr:"FD",vm:"1",name:"Overall Template Spatial Tolerance",retired:""},"0x006862C0":{keyword:"HPGLDocumentSequence",vr:"SQ",vm:"1",name:"HPGL Document Sequence",retired:""},"0x006862D0":{keyword:"HPGLDocumentID",vr:"US",vm:"1",name:"HPGL Document ID",retired:""},"0x006862D5":{keyword:"HPGLDocumentLabel",vr:"LO",vm:"1",name:"HPGL Document Label",retired:""},"0x006862E0":{keyword:"ViewOrientationCodeSequence",vr:"SQ",vm:"1",name:"View Orientation Code Sequence",retired:""},"0x006862F0":{keyword:"ViewOrientationModifierCodeSequence",vr:"SQ",vm:"1",name:"View Orientation Modifier Code Sequence",retired:""},"0x006862F2":{keyword:"HPGLDocumentScaling",vr:"FD",vm:"1",name:"HPGL Document Scaling",retired:""},"0x00686300":{keyword:"HPGLDocument",vr:"OB",vm:"1",name:"HPGL Document",retired:""},"0x00686310":{keyword:"HPGLContourPenNumber",vr:"US",vm:"1",name:"HPGL Contour Pen Number",retired:""},"0x00686320":{keyword:"HPGLPenSequence",vr:"SQ",vm:"1",name:"HPGL Pen Sequence",retired:""},"0x00686330":{keyword:"HPGLPenNumber",vr:"US",vm:"1",name:"HPGL Pen Number",retired:""},"0x00686340":{keyword:"HPGLPenLabel",vr:"LO",vm:"1",name:"HPGL Pen Label",retired:""},"0x00686345":{keyword:"HPGLPenDescription",vr:"ST",vm:"1",name:"HPGL Pen Description",retired:""},"0x00686346":{keyword:"RecommendedRotationPoint",vr:"FD",vm:"2",name:"Recommended Rotation Point",retired:""},"0x00686347":{keyword:"BoundingRectangle",vr:"FD",vm:"4",name:"Bounding Rectangle",retired:""},"0x00686350":{keyword:"ImplantTemplate3DModelSurfaceNumber",vr:"US",vm:"1-n",name:"Implant Template 3D Model Surface Number",retired:""},"0x00686360":{keyword:"SurfaceModelDescriptionSequence",vr:"SQ",vm:"1",name:"Surface Model Description Sequence",retired:""},"0x00686380":{keyword:"SurfaceModelLabel",vr:"LO",vm:"1",name:"Surface Model Label",retired:""},"0x00686390":{keyword:"SurfaceModelScalingFactor",vr:"FD",vm:"1",name:"Surface Model Scaling Factor",retired:""},"0x006863A0":{keyword:"MaterialsCodeSequence",vr:"SQ",vm:"1",name:"Materials Code Sequence",retired:""},"0x006863A4":{keyword:"CoatingMaterialsCodeSequence",vr:"SQ",vm:"1",name:"Coating Materials Code Sequence",retired:""},"0x006863A8":{keyword:"ImplantTypeCodeSequence",vr:"SQ",vm:"1",name:"Implant Type Code Sequence",retired:""},"0x006863AC":{keyword:"FixationMethodCodeSequence",vr:"SQ",vm:"1",name:"Fixation Method Code Sequence",retired:""},"0x006863B0":{keyword:"MatingFeatureSetsSequence",vr:"SQ",vm:"1",name:"Mating Feature Sets Sequence",retired:""},"0x006863C0":{keyword:"MatingFeatureSetID",vr:"US",vm:"1",name:"Mating Feature Set ID",retired:""},"0x006863D0":{keyword:"MatingFeatureSetLabel",vr:"LO",vm:"1",name:"Mating Feature Set Label",retired:""},"0x006863E0":{keyword:"MatingFeatureSequence",vr:"SQ",vm:"1",name:"Mating Feature Sequence",retired:""},"0x006863F0":{keyword:"MatingFeatureID",vr:"US",vm:"1",name:"Mating Feature ID",retired:""},"0x00686400":{keyword:"MatingFeatureDegreeOfFreedomSequence",vr:"SQ",vm:"1",name:"Mating Feature Degree of Freedom Sequence",retired:""},"0x00686410":{keyword:"DegreeOfFreedomID",vr:"US",vm:"1",name:"Degree of Freedom ID",retired:""},"0x00686420":{keyword:"DegreeOfFreedomType",vr:"CS",vm:"1",name:"Degree of Freedom Type",retired:""},"0x00686430":{keyword:"TwoDMatingFeatureCoordinatesSequence",vr:"SQ",vm:"1",name:"2D Mating Feature Coordinates Sequence",retired:""},"0x00686440":{keyword:"ReferencedHPGLDocumentID",vr:"US",vm:"1",name:"Referenced HPGL Document ID",retired:""},"0x00686450":{keyword:"TwoDMatingPoint",vr:"FD",vm:"2",name:"2D Mating Point",retired:""},"0x00686460":{keyword:"TwoDMatingAxes",vr:"FD",vm:"4",name:"2D Mating Axes",retired:""},"0x00686470":{keyword:"TwoDDegreeOfFreedomSequence",vr:"SQ",vm:"1",name:"2D Degree of Freedom Sequence",retired:""},"0x00686490":{keyword:"ThreeDDegreeOfFreedomAxis",vr:"FD",vm:"3",name:"3D Degree of Freedom Axis",retired:""},"0x006864A0":{keyword:"RangeOfFreedom",vr:"FD",vm:"2",name:"Range of Freedom",retired:""},"0x006864C0":{keyword:"ThreeDMatingPoint",vr:"FD",vm:"3",name:"3D Mating Point",retired:""},"0x006864D0":{keyword:"ThreeDMatingAxes",vr:"FD",vm:"9",name:"3D Mating Axes",retired:""},"0x006864F0":{keyword:"TwoDDegreeOfFreedomAxis",vr:"FD",vm:"3",name:"2D Degree of Freedom Axis",retired:""},"0x00686500":{keyword:"PlanningLandmarkPointSequence",vr:"SQ",vm:"1",name:"Planning Landmark Point Sequence",retired:""},"0x00686510":{keyword:"PlanningLandmarkLineSequence",vr:"SQ",vm:"1",name:"Planning Landmark Line Sequence",retired:""},"0x00686520":{keyword:"PlanningLandmarkPlaneSequence",vr:"SQ",vm:"1",name:"Planning Landmark Plane Sequence",retired:""},"0x00686530":{keyword:"PlanningLandmarkID",vr:"US",vm:"1",name:"Planning Landmark ID",retired:""},"0x00686540":{keyword:"PlanningLandmarkDescription",vr:"LO",vm:"1",name:"Planning Landmark Description",retired:""},"0x00686545":{keyword:"PlanningLandmarkIdentificationCodeSequence",vr:"SQ",vm:"1",name:"Planning Landmark Identification Code Sequence",retired:""},"0x00686550":{keyword:"TwoDPointCoordinatesSequence",vr:"SQ",vm:"1",name:"2D Point Coordinates Sequence",retired:""},"0x00686560":{keyword:"TwoDPointCoordinates",vr:"FD",vm:"2",name:"2D Point Coordinates",retired:""},"0x00686590":{keyword:"ThreeDPointCoordinates",vr:"FD",vm:"3",name:"3D Point Coordinates",retired:""},"0x006865A0":{keyword:"TwoDLineCoordinatesSequence",vr:"SQ",vm:"1",name:"2D Line Coordinates Sequence",retired:""},"0x006865B0":{keyword:"TwoDLineCoordinates",vr:"FD",vm:"4",name:"2D Line Coordinates",retired:""},"0x006865D0":{keyword:"ThreeDLineCoordinates",vr:"FD",vm:"6",name:"3D Line Coordinates",retired:""},"0x006865E0":{keyword:"TwoDPlaneCoordinatesSequence",vr:"SQ",vm:"1",name:"2D Plane Coordinates Sequence",retired:""},"0x006865F0":{keyword:"TwoDPlaneIntersection",vr:"FD",vm:"4",name:"2D Plane Intersection",retired:""},"0x00686610":{keyword:"ThreeDPlaneOrigin",vr:"FD",vm:"3",name:"3D Plane Origin",retired:""},"0x00686620":{keyword:"ThreeDPlaneNormal",vr:"FD",vm:"3",name:"3D Plane Normal",retired:""},"0x00687001":{keyword:"ModelModification",vr:"CS",vm:"1",name:"Model Modification",retired:""},"0x00687002":{keyword:"ModelMirroring",vr:"CS",vm:"1",name:"Model Mirroring",retired:""},"0x00687003":{keyword:"ModelUsageCodeSequence",vr:"SQ",vm:"1",name:"Model Usage Code Sequence",retired:""},"0x00687004":{keyword:"ModelGroupUID",vr:"UI",vm:"1",name:"Model Group UID",retired:""},"0x00687005":{keyword:"RelativeURIReferenceWithinEncapsulatedDocument",vr:"UR",vm:"1",name:"Relative URI Reference Within Encapsulated Document",retired:""},"0x006A0001":{keyword:"AnnotationCoordinateType",vr:"CS",vm:"1",name:"Annotation Coordinate Type",retired:""},"0x006A0002":{keyword:"AnnotationGroupSequence",vr:"SQ",vm:"1",name:"Annotation Group Sequence",retired:""},"0x006A0003":{keyword:"AnnotationGroupUID",vr:"UI",vm:"1",name:"Annotation Group UID",retired:""},"0x006A0005":{keyword:"AnnotationGroupLabel",vr:"LO",vm:"1",name:"Annotation Group Label",retired:""},"0x006A0006":{keyword:"AnnotationGroupDescription",vr:"UT",vm:"1",name:"Annotation Group Description",retired:""},"0x006A0007":{keyword:"AnnotationGroupGenerationType",vr:"CS",vm:"1",name:"Annotation Group Generation Type",retired:""},"0x006A0008":{keyword:"AnnotationGroupAlgorithmIdentificationSequence",vr:"SQ",vm:"1",name:"Annotation Group Algorithm Identification Sequence",retired:""},"0x006A0009":{keyword:"AnnotationPropertyCategoryCodeSequence",vr:"SQ",vm:"1",name:"Annotation Property Category Code Sequence",retired:""},"0x006A000A":{keyword:"AnnotationPropertyTypeCodeSequence",vr:"SQ",vm:"1",name:"Annotation Property Type Code Sequence",retired:""},"0x006A000B":{keyword:"AnnotationPropertyTypeModifierCodeSequence",vr:"SQ",vm:"1",name:"Annotation Property Type Modifier Code Sequence",retired:""},"0x006A000C":{keyword:"NumberOfAnnotations",vr:"UL",vm:"1",name:"Number of Annotations",retired:""},"0x006A000D":{keyword:"AnnotationAppliesToAllOpticalPaths",vr:"CS",vm:"1",name:"Annotation Applies to All Optical Paths",retired:""},"0x006A000E":{keyword:"ReferencedOpticalPathIdentifier",vr:"SH",vm:"1-n",name:"Referenced Optical Path Identifier",retired:""},"0x006A000F":{keyword:"AnnotationAppliesToAllZPlanes",vr:"CS",vm:"1",name:"Annotation Applies to All Z Planes",retired:""},"0x006A0010":{keyword:"CommonZCoordinateValue",vr:"FD",vm:"1-n",name:"Common Z Coordinate Value",retired:""},"0x006A0011":{keyword:"AnnotationIndexList",vr:"OL",vm:"1",name:"Annotation Index List",retired:""},"0x00700001":{keyword:"GraphicAnnotationSequence",vr:"SQ",vm:"1",name:"Graphic Annotation Sequence",retired:""},"0x00700002":{keyword:"GraphicLayer",vr:"CS",vm:"1",name:"Graphic Layer",retired:""},"0x00700003":{keyword:"BoundingBoxAnnotationUnits",vr:"CS",vm:"1",name:"Bounding Box Annotation Units",retired:""},"0x00700004":{keyword:"AnchorPointAnnotationUnits",vr:"CS",vm:"1",name:"Anchor Point Annotation Units",retired:""},"0x00700005":{keyword:"GraphicAnnotationUnits",vr:"CS",vm:"1",name:"Graphic Annotation Units",retired:""},"0x00700006":{keyword:"UnformattedTextValue",vr:"ST",vm:"1",name:"Unformatted Text Value",retired:""},"0x00700008":{keyword:"TextObjectSequence",vr:"SQ",vm:"1",name:"Text Object Sequence",retired:""},"0x00700009":{keyword:"GraphicObjectSequence",vr:"SQ",vm:"1",name:"Graphic Object Sequence",retired:""},"0x00700010":{keyword:"BoundingBoxTopLeftHandCorner",vr:"FL",vm:"2",name:"Bounding Box Top Left Hand Corner",retired:""},"0x00700011":{keyword:"BoundingBoxBottomRightHandCorner",vr:"FL",vm:"2",name:"Bounding Box Bottom Right Hand Corner",retired:""},"0x00700012":{keyword:"BoundingBoxTextHorizontalJustification",vr:"CS",vm:"1",name:"Bounding Box Text Horizontal Justification",retired:""},"0x00700014":{keyword:"AnchorPoint",vr:"FL",vm:"2",name:"Anchor Point",retired:""},"0x00700015":{keyword:"AnchorPointVisibility",vr:"CS",vm:"1",name:"Anchor Point Visibility",retired:""},"0x00700020":{keyword:"GraphicDimensions",vr:"US",vm:"1",name:"Graphic Dimensions",retired:""},"0x00700021":{keyword:"NumberOfGraphicPoints",vr:"US",vm:"1",name:"Number of Graphic Points",retired:""},"0x00700022":{keyword:"GraphicData",vr:"FL",vm:"2-n",name:"Graphic Data",retired:""},"0x00700023":{keyword:"GraphicType",vr:"CS",vm:"1",name:"Graphic Type",retired:""},"0x00700024":{keyword:"GraphicFilled",vr:"CS",vm:"1",name:"Graphic Filled",retired:""},"0x00700040":{keyword:"ImageRotationRetired",vr:"IS",vm:"1",name:"Image Rotation (Retired)",retired:"Retired"},"0x00700041":{keyword:"ImageHorizontalFlip",vr:"CS",vm:"1",name:"Image Horizontal Flip",retired:""},"0x00700042":{keyword:"ImageRotation",vr:"US",vm:"1",name:"Image Rotation",retired:""},"0x00700050":{keyword:"DisplayedAreaTopLeftHandCornerTrial",vr:"US",vm:"2",name:"Displayed Area Top Left Hand Corner (Trial)",retired:"Retired"},"0x00700051":{keyword:"DisplayedAreaBottomRightHandCornerTrial",vr:"US",vm:"2",name:"Displayed Area Bottom Right Hand Corner (Trial)",retired:"Retired"},"0x00700052":{keyword:"DisplayedAreaTopLeftHandCorner",vr:"SL",vm:"2",name:"Displayed Area Top Left Hand Corner",retired:""},"0x00700053":{keyword:"DisplayedAreaBottomRightHandCorner",vr:"SL",vm:"2",name:"Displayed Area Bottom Right Hand Corner",retired:""},"0x0070005A":{keyword:"DisplayedAreaSelectionSequence",vr:"SQ",vm:"1",name:"Displayed Area Selection Sequence",retired:""},"0x00700060":{keyword:"GraphicLayerSequence",vr:"SQ",vm:"1",name:"Graphic Layer Sequence",retired:""},"0x00700062":{keyword:"GraphicLayerOrder",vr:"IS",vm:"1",name:"Graphic Layer Order",retired:""},"0x00700066":{keyword:"GraphicLayerRecommendedDisplayGrayscaleValue",vr:"US",vm:"1",name:"Graphic Layer Recommended Display Grayscale Value",retired:""},"0x00700067":{keyword:"GraphicLayerRecommendedDisplayRGBValue",vr:"US",vm:"3",name:"Graphic Layer Recommended Display RGB Value",retired:"Retired"},"0x00700068":{keyword:"GraphicLayerDescription",vr:"LO",vm:"1",name:"Graphic Layer Description",retired:""},"0x00700080":{keyword:"ContentLabel",vr:"CS",vm:"1",name:"Content Label",retired:""},"0x00700081":{keyword:"ContentDescription",vr:"LO",vm:"1",name:"Content Description",retired:""},"0x00700082":{keyword:"PresentationCreationDate",vr:"DA",vm:"1",name:"Presentation Creation Date",retired:""},"0x00700083":{keyword:"PresentationCreationTime",vr:"TM",vm:"1",name:"Presentation Creation Time",retired:""},"0x00700084":{keyword:"ContentCreatorName",vr:"PN",vm:"1",name:"Content Creator's Name",retired:""},"0x00700086":{keyword:"ContentCreatorIdentificationCodeSequence",vr:"SQ",vm:"1",name:"Content Creator's Identification Code Sequence",retired:""},"0x00700087":{keyword:"AlternateContentDescriptionSequence",vr:"SQ",vm:"1",name:"Alternate Content Description Sequence",retired:""},"0x00700100":{keyword:"PresentationSizeMode",vr:"CS",vm:"1",name:"Presentation Size Mode",retired:""},"0x00700101":{keyword:"PresentationPixelSpacing",vr:"DS",vm:"2",name:"Presentation Pixel Spacing",retired:""},"0x00700102":{keyword:"PresentationPixelAspectRatio",vr:"IS",vm:"2",name:"Presentation Pixel Aspect Ratio",retired:""},"0x00700103":{keyword:"PresentationPixelMagnificationRatio",vr:"FL",vm:"1",name:"Presentation Pixel Magnification Ratio",retired:""},"0x00700207":{keyword:"GraphicGroupLabel",vr:"LO",vm:"1",name:"Graphic Group Label",retired:""},"0x00700208":{keyword:"GraphicGroupDescription",vr:"ST",vm:"1",name:"Graphic Group Description",retired:""},"0x00700209":{keyword:"CompoundGraphicSequence",vr:"SQ",vm:"1",name:"Compound Graphic Sequence",retired:""},"0x00700226":{keyword:"CompoundGraphicInstanceID",vr:"UL",vm:"1",name:"Compound Graphic Instance ID",retired:""},"0x00700227":{keyword:"FontName",vr:"LO",vm:"1",name:"Font Name",retired:""},"0x00700228":{keyword:"FontNameType",vr:"CS",vm:"1",name:"Font Name Type",retired:""},"0x00700229":{keyword:"CSSFontName",vr:"LO",vm:"1",name:"CSS Font Name",retired:""},"0x00700230":{keyword:"RotationAngle",vr:"FD",vm:"1",name:"Rotation Angle",retired:""},"0x00700231":{keyword:"TextStyleSequence",vr:"SQ",vm:"1",name:"Text Style Sequence",retired:""},"0x00700232":{keyword:"LineStyleSequence",vr:"SQ",vm:"1",name:"Line Style Sequence",retired:""},"0x00700233":{keyword:"FillStyleSequence",vr:"SQ",vm:"1",name:"Fill Style Sequence",retired:""},"0x00700234":{keyword:"GraphicGroupSequence",vr:"SQ",vm:"1",name:"Graphic Group Sequence",retired:""},"0x00700241":{keyword:"TextColorCIELabValue",vr:"US",vm:"3",name:"Text Color CIELab Value",retired:""},"0x00700242":{keyword:"HorizontalAlignment",vr:"CS",vm:"1",name:"Horizontal Alignment",retired:""},"0x00700243":{keyword:"VerticalAlignment",vr:"CS",vm:"1",name:"Vertical Alignment",retired:""},"0x00700244":{keyword:"ShadowStyle",vr:"CS",vm:"1",name:"Shadow Style",retired:""},"0x00700245":{keyword:"ShadowOffsetX",vr:"FL",vm:"1",name:"Shadow Offset X",retired:""},"0x00700246":{keyword:"ShadowOffsetY",vr:"FL",vm:"1",name:"Shadow Offset Y",retired:""},"0x00700247":{keyword:"ShadowColorCIELabValue",vr:"US",vm:"3",name:"Shadow Color CIELab Value",retired:""},"0x00700248":{keyword:"Underlined",vr:"CS",vm:"1",name:"Underlined",retired:""},"0x00700249":{keyword:"Bold",vr:"CS",vm:"1",name:"Bold",retired:""},"0x00700250":{keyword:"Italic",vr:"CS",vm:"1",name:"Italic",retired:""},"0x00700251":{keyword:"PatternOnColorCIELabValue",vr:"US",vm:"3",name:"Pattern On Color CIELab Value",retired:""},"0x00700252":{keyword:"PatternOffColorCIELabValue",vr:"US",vm:"3",name:"Pattern Off Color CIELab Value",retired:""},"0x00700253":{keyword:"LineThickness",vr:"FL",vm:"1",name:"Line Thickness",retired:""},"0x00700254":{keyword:"LineDashingStyle",vr:"CS",vm:"1",name:"Line Dashing Style",retired:""},"0x00700255":{keyword:"LinePattern",vr:"UL",vm:"1",name:"Line Pattern",retired:""},"0x00700256":{keyword:"FillPattern",vr:"OB",vm:"1",name:"Fill Pattern",retired:""},"0x00700257":{keyword:"FillMode",vr:"CS",vm:"1",name:"Fill Mode",retired:""},"0x00700258":{keyword:"ShadowOpacity",vr:"FL",vm:"1",name:"Shadow Opacity",retired:""},"0x00700261":{keyword:"GapLength",vr:"FL",vm:"1",name:"Gap Length",retired:""},"0x00700262":{keyword:"DiameterOfVisibility",vr:"FL",vm:"1",name:"Diameter of Visibility",retired:""},"0x00700273":{keyword:"RotationPoint",vr:"FL",vm:"2",name:"Rotation Point",retired:""},"0x00700274":{keyword:"TickAlignment",vr:"CS",vm:"1",name:"Tick Alignment",retired:""},"0x00700278":{keyword:"ShowTickLabel",vr:"CS",vm:"1",name:"Show Tick Label",retired:""},"0x00700279":{keyword:"TickLabelAlignment",vr:"CS",vm:"1",name:"Tick Label Alignment",retired:""},"0x00700282":{keyword:"CompoundGraphicUnits",vr:"CS",vm:"1",name:"Compound Graphic Units",retired:""},"0x00700284":{keyword:"PatternOnOpacity",vr:"FL",vm:"1",name:"Pattern On Opacity",retired:""},"0x00700285":{keyword:"PatternOffOpacity",vr:"FL",vm:"1",name:"Pattern Off Opacity",retired:""},"0x00700287":{keyword:"MajorTicksSequence",vr:"SQ",vm:"1",name:"Major Ticks Sequence",retired:""},"0x00700288":{keyword:"TickPosition",vr:"FL",vm:"1",name:"Tick Position",retired:""},"0x00700289":{keyword:"TickLabel",vr:"SH",vm:"1",name:"Tick Label",retired:""},"0x00700294":{keyword:"CompoundGraphicType",vr:"CS",vm:"1",name:"Compound Graphic Type",retired:""},"0x00700295":{keyword:"GraphicGroupID",vr:"UL",vm:"1",name:"Graphic Group ID",retired:""},"0x00700306":{keyword:"ShapeType",vr:"CS",vm:"1",name:"Shape Type",retired:""},"0x00700308":{keyword:"RegistrationSequence",vr:"SQ",vm:"1",name:"Registration Sequence",retired:""},"0x00700309":{keyword:"MatrixRegistrationSequence",vr:"SQ",vm:"1",name:"Matrix Registration Sequence",retired:""},"0x0070030A":{keyword:"MatrixSequence",vr:"SQ",vm:"1",name:"Matrix Sequence",retired:""},"0x0070030B":{keyword:"FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix",vr:"FD",vm:"16",name:"Frame of Reference to Displayed Coordinate System Transformation Matrix",retired:""},"0x0070030C":{keyword:"FrameOfReferenceTransformationMatrixType",vr:"CS",vm:"1",name:"Frame of Reference Transformation Matrix Type",retired:""},"0x0070030D":{keyword:"RegistrationTypeCodeSequence",vr:"SQ",vm:"1",name:"Registration Type Code Sequence",retired:""},"0x0070030F":{keyword:"FiducialDescription",vr:"ST",vm:"1",name:"Fiducial Description",retired:""},"0x00700310":{keyword:"FiducialIdentifier",vr:"SH",vm:"1",name:"Fiducial Identifier",retired:""},"0x00700311":{keyword:"FiducialIdentifierCodeSequence",vr:"SQ",vm:"1",name:"Fiducial Identifier Code Sequence",retired:""},"0x00700312":{keyword:"ContourUncertaintyRadius",vr:"FD",vm:"1",name:"Contour Uncertainty Radius",retired:""},"0x00700314":{keyword:"UsedFiducialsSequence",vr:"SQ",vm:"1",name:"Used Fiducials Sequence",retired:""},"0x00700315":{keyword:"UsedRTStructureSetROISequence",vr:"SQ",vm:"1",name:"Used RT Structure Set ROI Sequence",retired:""},"0x00700318":{keyword:"GraphicCoordinatesDataSequence",vr:"SQ",vm:"1",name:"Graphic Coordinates Data Sequence",retired:""},"0x0070031A":{keyword:"FiducialUID",vr:"UI",vm:"1",name:"Fiducial UID",retired:""},"0x0070031B":{keyword:"ReferencedFiducialUID",vr:"UI",vm:"1",name:"Referenced Fiducial UID",retired:""},"0x0070031C":{keyword:"FiducialSetSequence",vr:"SQ",vm:"1",name:"Fiducial Set Sequence",retired:""},"0x0070031E":{keyword:"FiducialSequence",vr:"SQ",vm:"1",name:"Fiducial Sequence",retired:""},"0x0070031F":{keyword:"FiducialsPropertyCategoryCodeSequence",vr:"SQ",vm:"1",name:"Fiducials Property Category Code Sequence",retired:""},"0x00700401":{keyword:"GraphicLayerRecommendedDisplayCIELabValue",vr:"US",vm:"3",name:"Graphic Layer Recommended Display CIELab Value",retired:""},"0x00700402":{keyword:"BlendingSequence",vr:"SQ",vm:"1",name:"Blending Sequence",retired:""},"0x00700403":{keyword:"RelativeOpacity",vr:"FL",vm:"1",name:"Relative Opacity",retired:""},"0x00700404":{keyword:"ReferencedSpatialRegistrationSequence",vr:"SQ",vm:"1",name:"Referenced Spatial Registration Sequence",retired:""},"0x00700405":{keyword:"BlendingPosition",vr:"CS",vm:"1",name:"Blending Position",retired:""},"0x00701101":{keyword:"PresentationDisplayCollectionUID",vr:"UI",vm:"1",name:"Presentation Display Collection UID",retired:""},"0x00701102":{keyword:"PresentationSequenceCollectionUID",vr:"UI",vm:"1",name:"Presentation Sequence Collection UID",retired:""},"0x00701103":{keyword:"PresentationSequencePositionIndex",vr:"US",vm:"1",name:"Presentation Sequence Position Index",retired:""},"0x00701104":{keyword:"RenderedImageReferenceSequence",vr:"SQ",vm:"1",name:"Rendered Image Reference Sequence",retired:""},"0x00701201":{keyword:"VolumetricPresentationStateInputSequence",vr:"SQ",vm:"1",name:"Volumetric Presentation State Input Sequence",retired:""},"0x00701202":{keyword:"PresentationInputType",vr:"CS",vm:"1",name:"Presentation Input Type",retired:""},"0x00701203":{keyword:"InputSequencePositionIndex",vr:"US",vm:"1",name:"Input Sequence Position Index",retired:""},"0x00701204":{keyword:"Crop",vr:"CS",vm:"1",name:"Crop",retired:""},"0x00701205":{keyword:"CroppingSpecificationIndex",vr:"US",vm:"1-n",name:"Cropping Specification Index",retired:""},"0x00701206":{keyword:"CompositingMethod",vr:"CS",vm:"1",name:"Compositing Method",retired:"Retired"},"0x00701207":{keyword:"VolumetricPresentationInputNumber",vr:"US",vm:"1",name:"Volumetric Presentation Input Number",retired:""},"0x00701208":{keyword:"ImageVolumeGeometry",vr:"CS",vm:"1",name:"Image Volume Geometry",retired:""},"0x00701209":{keyword:"VolumetricPresentationInputSetUID",vr:"UI",vm:"1",name:"Volumetric Presentation Input Set UID",retired:""},"0x0070120A":{keyword:"VolumetricPresentationInputSetSequence",vr:"SQ",vm:"1",name:"Volumetric Presentation Input Set Sequence",retired:""},"0x0070120B":{keyword:"GlobalCrop",vr:"CS",vm:"1",name:"Global Crop",retired:""},"0x0070120C":{keyword:"GlobalCroppingSpecificationIndex",vr:"US",vm:"1-n",name:"Global Cropping Specification Index",retired:""},"0x0070120D":{keyword:"RenderingMethod",vr:"CS",vm:"1",name:"Rendering Method",retired:""},"0x00701301":{keyword:"VolumeCroppingSequence",vr:"SQ",vm:"1",name:"Volume Cropping Sequence",retired:""},"0x00701302":{keyword:"VolumeCroppingMethod",vr:"CS",vm:"1",name:"Volume Cropping Method",retired:""},"0x00701303":{keyword:"BoundingBoxCrop",vr:"FD",vm:"6",name:"Bounding Box Crop",retired:""},"0x00701304":{keyword:"ObliqueCroppingPlaneSequence",vr:"SQ",vm:"1",name:"Oblique Cropping Plane Sequence",retired:""},"0x00701305":{keyword:"Plane",vr:"FD",vm:"4",name:"Plane",retired:""},"0x00701306":{keyword:"PlaneNormal",vr:"FD",vm:"3",name:"Plane Normal",retired:""},"0x00701309":{keyword:"CroppingSpecificationNumber",vr:"US",vm:"1",name:"Cropping Specification Number",retired:""},"0x00701501":{keyword:"MultiPlanarReconstructionStyle",vr:"CS",vm:"1",name:"Multi-Planar Reconstruction Style",retired:""},"0x00701502":{keyword:"MPRThicknessType",vr:"CS",vm:"1",name:"MPR Thickness Type",retired:""},"0x00701503":{keyword:"MPRSlabThickness",vr:"FD",vm:"1",name:"MPR Slab Thickness",retired:""},"0x00701505":{keyword:"MPRTopLeftHandCorner",vr:"FD",vm:"3",name:"MPR Top Left Hand Corner",retired:""},"0x00701507":{keyword:"MPRViewWidthDirection",vr:"FD",vm:"3",name:"MPR View Width Direction",retired:""},"0x00701508":{keyword:"MPRViewWidth",vr:"FD",vm:"1",name:"MPR View Width",retired:""},"0x0070150C":{keyword:"NumberOfVolumetricCurvePoints",vr:"UL",vm:"1",name:"Number of Volumetric Curve Points",retired:""},"0x0070150D":{keyword:"VolumetricCurvePoints",vr:"OD",vm:"1",name:"Volumetric Curve Points",retired:""},"0x00701511":{keyword:"MPRViewHeightDirection",vr:"FD",vm:"3",name:"MPR View Height Direction",retired:""},"0x00701512":{keyword:"MPRViewHeight",vr:"FD",vm:"1",name:"MPR View Height",retired:""},"0x00701602":{keyword:"RenderProjection",vr:"CS",vm:"1",name:"Render Projection",retired:""},"0x00701603":{keyword:"ViewpointPosition",vr:"FD",vm:"3",name:"Viewpoint Position",retired:""},"0x00701604":{keyword:"ViewpointLookAtPoint",vr:"FD",vm:"3",name:"Viewpoint LookAt Point",retired:""},"0x00701605":{keyword:"ViewpointUpDirection",vr:"FD",vm:"3",name:"Viewpoint Up Direction",retired:""},"0x00701606":{keyword:"RenderFieldOfView",vr:"FD",vm:"6",name:"Render Field of View",retired:""},"0x00701607":{keyword:"SamplingStepSize",vr:"FD",vm:"1",name:"Sampling Step Size",retired:""},"0x00701701":{keyword:"ShadingStyle",vr:"CS",vm:"1",name:"Shading Style",retired:""},"0x00701702":{keyword:"AmbientReflectionIntensity",vr:"FD",vm:"1",name:"Ambient Reflection Intensity",retired:""},"0x00701703":{keyword:"LightDirection",vr:"FD",vm:"3",name:"Light Direction",retired:""},"0x00701704":{keyword:"DiffuseReflectionIntensity",vr:"FD",vm:"1",name:"Diffuse Reflection Intensity",retired:""},"0x00701705":{keyword:"SpecularReflectionIntensity",vr:"FD",vm:"1",name:"Specular Reflection Intensity",retired:""},"0x00701706":{keyword:"Shininess",vr:"FD",vm:"1",name:"Shininess",retired:""},"0x00701801":{keyword:"PresentationStateClassificationComponentSequence",vr:"SQ",vm:"1",name:"Presentation State Classification Component Sequence",retired:""},"0x00701802":{keyword:"ComponentType",vr:"CS",vm:"1",name:"Component Type",retired:""},"0x00701803":{keyword:"ComponentInputSequence",vr:"SQ",vm:"1",name:"Component Input Sequence",retired:""},"0x00701804":{keyword:"VolumetricPresentationInputIndex",vr:"US",vm:"1",name:"Volumetric Presentation Input Index",retired:""},"0x00701805":{keyword:"PresentationStateCompositorComponentSequence",vr:"SQ",vm:"1",name:"Presentation State Compositor Component Sequence",retired:""},"0x00701806":{keyword:"WeightingTransferFunctionSequence",vr:"SQ",vm:"1",name:"Weighting Transfer Function Sequence",retired:""},"0x00701807":{keyword:"WeightingLookupTableDescriptor",vr:"US",vm:"3",name:"Weighting Lookup Table Descriptor",retired:""},"0x00701808":{keyword:"WeightingLookupTableData",vr:"OB",vm:"1",name:"Weighting Lookup Table Data",retired:""},"0x00701901":{keyword:"VolumetricAnnotationSequence",vr:"SQ",vm:"1",name:"Volumetric Annotation Sequence",retired:""},"0x00701903":{keyword:"ReferencedStructuredContextSequence",vr:"SQ",vm:"1",name:"Referenced Structured Context Sequence",retired:""},"0x00701904":{keyword:"ReferencedContentItem",vr:"UI",vm:"1",name:"Referenced Content Item",retired:""},"0x00701905":{keyword:"VolumetricPresentationInputAnnotationSequence",vr:"SQ",vm:"1",name:"Volumetric Presentation Input Annotation Sequence",retired:""},"0x00701907":{keyword:"AnnotationClipping",vr:"CS",vm:"1",name:"Annotation Clipping",retired:""},"0x00701A01":{keyword:"PresentationAnimationStyle",vr:"CS",vm:"1",name:"Presentation Animation Style",retired:""},"0x00701A03":{keyword:"RecommendedAnimationRate",vr:"FD",vm:"1",name:"Recommended Animation Rate",retired:""},"0x00701A04":{keyword:"AnimationCurveSequence",vr:"SQ",vm:"1",name:"Animation Curve Sequence",retired:""},"0x00701A05":{keyword:"AnimationStepSize",vr:"FD",vm:"1",name:"Animation Step Size",retired:""},"0x00701A06":{keyword:"SwivelRange",vr:"FD",vm:"1",name:"Swivel Range",retired:""},"0x00701A07":{keyword:"VolumetricCurveUpDirections",vr:"OD",vm:"1",name:"Volumetric Curve Up Directions",retired:""},"0x00701A08":{keyword:"VolumeStreamSequence",vr:"SQ",vm:"1",name:"Volume Stream Sequence",retired:""},"0x00701A09":{keyword:"RGBATransferFunctionDescription",vr:"LO",vm:"1",name:"RGBA Transfer Function Description",retired:""},"0x00701B01":{keyword:"AdvancedBlendingSequence",vr:"SQ",vm:"1",name:"Advanced Blending Sequence",retired:""},"0x00701B02":{keyword:"BlendingInputNumber",vr:"US",vm:"1",name:"Blending Input Number",retired:""},"0x00701B03":{keyword:"BlendingDisplayInputSequence",vr:"SQ",vm:"1",name:"Blending Display Input Sequence",retired:""},"0x00701B04":{keyword:"BlendingDisplaySequence",vr:"SQ",vm:"1",name:"Blending Display Sequence",retired:""},"0x00701B06":{keyword:"BlendingMode",vr:"CS",vm:"1",name:"Blending Mode",retired:""},"0x00701B07":{keyword:"TimeSeriesBlending",vr:"CS",vm:"1",name:"Time Series Blending",retired:""},"0x00701B08":{keyword:"GeometryForDisplay",vr:"CS",vm:"1",name:"Geometry for Display",retired:""},"0x00701B11":{keyword:"ThresholdSequence",vr:"SQ",vm:"1",name:"Threshold Sequence",retired:""},"0x00701B12":{keyword:"ThresholdValueSequence",vr:"SQ",vm:"1",name:"Threshold Value Sequence",retired:""},"0x00701B13":{keyword:"ThresholdType",vr:"CS",vm:"1",name:"Threshold Type",retired:""},"0x00701B14":{keyword:"ThresholdValue",vr:"FD",vm:"1",name:"Threshold Value",retired:""},"0x00720002":{keyword:"HangingProtocolName",vr:"SH",vm:"1",name:"Hanging Protocol Name",retired:""},"0x00720004":{keyword:"HangingProtocolDescription",vr:"LO",vm:"1",name:"Hanging Protocol Description",retired:""},"0x00720006":{keyword:"HangingProtocolLevel",vr:"CS",vm:"1",name:"Hanging Protocol Level",retired:""},"0x00720008":{keyword:"HangingProtocolCreator",vr:"LO",vm:"1",name:"Hanging Protocol Creator",retired:""},"0x0072000A":{keyword:"HangingProtocolCreationDateTime",vr:"DT",vm:"1",name:"Hanging Protocol Creation DateTime",retired:""},"0x0072000C":{keyword:"HangingProtocolDefinitionSequence",vr:"SQ",vm:"1",name:"Hanging Protocol Definition Sequence",retired:""},"0x0072000E":{keyword:"HangingProtocolUserIdentificationCodeSequence",vr:"SQ",vm:"1",name:"Hanging Protocol User Identification Code Sequence",retired:""},"0x00720010":{keyword:"HangingProtocolUserGroupName",vr:"LO",vm:"1",name:"Hanging Protocol User Group Name",retired:""},"0x00720012":{keyword:"SourceHangingProtocolSequence",vr:"SQ",vm:"1",name:"Source Hanging Protocol Sequence",retired:""},"0x00720014":{keyword:"NumberOfPriorsReferenced",vr:"US",vm:"1",name:"Number of Priors Referenced",retired:""},"0x00720020":{keyword:"ImageSetsSequence",vr:"SQ",vm:"1",name:"Image Sets Sequence",retired:""},"0x00720022":{keyword:"ImageSetSelectorSequence",vr:"SQ",vm:"1",name:"Image Set Selector Sequence",retired:""},"0x00720024":{keyword:"ImageSetSelectorUsageFlag",vr:"CS",vm:"1",name:"Image Set Selector Usage Flag",retired:""},"0x00720026":{keyword:"SelectorAttribute",vr:"AT",vm:"1",name:"Selector Attribute",retired:""},"0x00720028":{keyword:"SelectorValueNumber",vr:"US",vm:"1",name:"Selector Value Number",retired:""},"0x00720030":{keyword:"TimeBasedImageSetsSequence",vr:"SQ",vm:"1",name:"Time Based Image Sets Sequence",retired:""},"0x00720032":{keyword:"ImageSetNumber",vr:"US",vm:"1",name:"Image Set Number",retired:""},"0x00720034":{keyword:"ImageSetSelectorCategory",vr:"CS",vm:"1",name:"Image Set Selector Category",retired:""},"0x00720038":{keyword:"RelativeTime",vr:"US",vm:"2",name:"Relative Time",retired:""},"0x0072003A":{keyword:"RelativeTimeUnits",vr:"CS",vm:"1",name:"Relative Time Units",retired:""},"0x0072003C":{keyword:"AbstractPriorValue",vr:"SS",vm:"2",name:"Abstract Prior Value",retired:""},"0x0072003E":{keyword:"AbstractPriorCodeSequence",vr:"SQ",vm:"1",name:"Abstract Prior Code Sequence",retired:""},"0x00720040":{keyword:"ImageSetLabel",vr:"LO",vm:"1",name:"Image Set Label",retired:""},"0x00720050":{keyword:"SelectorAttributeVR",vr:"CS",vm:"1",name:"Selector Attribute VR",retired:""},"0x00720052":{keyword:"SelectorSequencePointer",vr:"AT",vm:"1-n",name:"Selector Sequence Pointer",retired:""},"0x00720054":{keyword:"SelectorSequencePointerPrivateCreator",vr:"LO",vm:"1-n",name:"Selector Sequence Pointer Private Creator",retired:""},"0x00720056":{keyword:"SelectorAttributePrivateCreator",vr:"LO",vm:"1",name:"Selector Attribute Private Creator",retired:""},"0x0072005E":{keyword:"SelectorAEValue",vr:"AE",vm:"1-n",name:"Selector AE Value",retired:""},"0x0072005F":{keyword:"SelectorASValue",vr:"AS",vm:"1-n",name:"Selector AS Value",retired:""},"0x00720060":{keyword:"SelectorATValue",vr:"AT",vm:"1-n",name:"Selector AT Value",retired:""},"0x00720061":{keyword:"SelectorDAValue",vr:"DA",vm:"1-n",name:"Selector DA Value",retired:""},"0x00720062":{keyword:"SelectorCSValue",vr:"CS",vm:"1-n",name:"Selector CS Value",retired:""},"0x00720063":{keyword:"SelectorDTValue",vr:"DT",vm:"1-n",name:"Selector DT Value",retired:""},"0x00720064":{keyword:"SelectorISValue",vr:"IS",vm:"1-n",name:"Selector IS Value",retired:""},"0x00720065":{keyword:"SelectorOBValue",vr:"OB",vm:"1",name:"Selector OB Value",retired:""},"0x00720066":{keyword:"SelectorLOValue",vr:"LO",vm:"1-n",name:"Selector LO Value",retired:""},"0x00720067":{keyword:"SelectorOFValue",vr:"OF",vm:"1",name:"Selector OF Value",retired:""},"0x00720068":{keyword:"SelectorLTValue",vr:"LT",vm:"1",name:"Selector LT Value",retired:""},"0x00720069":{keyword:"SelectorOWValue",vr:"OW",vm:"1",name:"Selector OW Value",retired:""},"0x0072006A":{keyword:"SelectorPNValue",vr:"PN",vm:"1-n",name:"Selector PN Value",retired:""},"0x0072006B":{keyword:"SelectorTMValue",vr:"TM",vm:"1-n",name:"Selector TM Value",retired:""},"0x0072006C":{keyword:"SelectorSHValue",vr:"SH",vm:"1-n",name:"Selector SH Value",retired:""},"0x0072006D":{keyword:"SelectorUNValue",vr:"UN",vm:"1",name:"Selector UN Value",retired:""},"0x0072006E":{keyword:"SelectorSTValue",vr:"ST",vm:"1",name:"Selector ST Value",retired:""},"0x0072006F":{keyword:"SelectorUCValue",vr:"UC",vm:"1-n",name:"Selector UC Value",retired:""},"0x00720070":{keyword:"SelectorUTValue",vr:"UT",vm:"1",name:"Selector UT Value",retired:""},"0x00720071":{keyword:"SelectorURValue",vr:"UR",vm:"1",name:"Selector UR Value",retired:""},"0x00720072":{keyword:"SelectorDSValue",vr:"DS",vm:"1-n",name:"Selector DS Value",retired:""},"0x00720073":{keyword:"SelectorODValue",vr:"OD",vm:"1",name:"Selector OD Value",retired:""},"0x00720074":{keyword:"SelectorFDValue",vr:"FD",vm:"1-n",name:"Selector FD Value",retired:""},"0x00720075":{keyword:"SelectorOLValue",vr:"OL",vm:"1",name:"Selector OL Value",retired:""},"0x00720076":{keyword:"SelectorFLValue",vr:"FL",vm:"1-n",name:"Selector FL Value",retired:""},"0x00720078":{keyword:"SelectorULValue",vr:"UL",vm:"1-n",name:"Selector UL Value",retired:""},"0x0072007A":{keyword:"SelectorUSValue",vr:"US",vm:"1-n",name:"Selector US Value",retired:""},"0x0072007C":{keyword:"SelectorSLValue",vr:"SL",vm:"1-n",name:"Selector SL Value",retired:""},"0x0072007E":{keyword:"SelectorSSValue",vr:"SS",vm:"1-n",name:"Selector SS Value",retired:""},"0x0072007F":{keyword:"SelectorUIValue",vr:"UI",vm:"1-n",name:"Selector UI Value",retired:""},"0x00720080":{keyword:"SelectorCodeSequenceValue",vr:"SQ",vm:"1",name:"Selector Code Sequence Value",retired:""},"0x00720081":{keyword:"SelectorOVValue",vr:"OV",vm:"1",name:"Selector OV Value",retired:""},"0x00720082":{keyword:"SelectorSVValue",vr:"SV",vm:"1-n",name:"Selector SV Value",retired:""},"0x00720083":{keyword:"SelectorUVValue",vr:"UV",vm:"1-n",name:"Selector UV Value",retired:""},"0x00720100":{keyword:"NumberOfScreens",vr:"US",vm:"1",name:"Number of Screens",retired:""},"0x00720102":{keyword:"NominalScreenDefinitionSequence",vr:"SQ",vm:"1",name:"Nominal Screen Definition Sequence",retired:""},"0x00720104":{keyword:"NumberOfVerticalPixels",vr:"US",vm:"1",name:"Number of Vertical Pixels",retired:""},"0x00720106":{keyword:"NumberOfHorizontalPixels",vr:"US",vm:"1",name:"Number of Horizontal Pixels",retired:""},"0x00720108":{keyword:"DisplayEnvironmentSpatialPosition",vr:"FD",vm:"4",name:"Display Environment Spatial Position",retired:""},"0x0072010A":{keyword:"ScreenMinimumGrayscaleBitDepth",vr:"US",vm:"1",name:"Screen Minimum Grayscale Bit Depth",retired:""},"0x0072010C":{keyword:"ScreenMinimumColorBitDepth",vr:"US",vm:"1",name:"Screen Minimum Color Bit Depth",retired:""},"0x0072010E":{keyword:"ApplicationMaximumRepaintTime",vr:"US",vm:"1",name:"Application Maximum Repaint Time",retired:""},"0x00720200":{keyword:"DisplaySetsSequence",vr:"SQ",vm:"1",name:"Display Sets Sequence",retired:""},"0x00720202":{keyword:"DisplaySetNumber",vr:"US",vm:"1",name:"Display Set Number",retired:""},"0x00720203":{keyword:"DisplaySetLabel",vr:"LO",vm:"1",name:"Display Set Label",retired:""},"0x00720204":{keyword:"DisplaySetPresentationGroup",vr:"US",vm:"1",name:"Display Set Presentation Group",retired:""},"0x00720206":{keyword:"DisplaySetPresentationGroupDescription",vr:"LO",vm:"1",name:"Display Set Presentation Group Description",retired:""},"0x00720208":{keyword:"PartialDataDisplayHandling",vr:"CS",vm:"1",name:"Partial Data Display Handling",retired:""},"0x00720210":{keyword:"SynchronizedScrollingSequence",vr:"SQ",vm:"1",name:"Synchronized Scrolling Sequence",retired:""},"0x00720212":{keyword:"DisplaySetScrollingGroup",vr:"US",vm:"2-n",name:"Display Set Scrolling Group",retired:""},"0x00720214":{keyword:"NavigationIndicatorSequence",vr:"SQ",vm:"1",name:"Navigation Indicator Sequence",retired:""},"0x00720216":{keyword:"NavigationDisplaySet",vr:"US",vm:"1",name:"Navigation Display Set",retired:""},"0x00720218":{keyword:"ReferenceDisplaySets",vr:"US",vm:"1-n",name:"Reference Display Sets",retired:""},"0x00720300":{keyword:"ImageBoxesSequence",vr:"SQ",vm:"1",name:"Image Boxes Sequence",retired:""},"0x00720302":{keyword:"ImageBoxNumber",vr:"US",vm:"1",name:"Image Box Number",retired:""},"0x00720304":{keyword:"ImageBoxLayoutType",vr:"CS",vm:"1",name:"Image Box Layout Type",retired:""},"0x00720306":{keyword:"ImageBoxTileHorizontalDimension",vr:"US",vm:"1",name:"Image Box Tile Horizontal Dimension",retired:""},"0x00720308":{keyword:"ImageBoxTileVerticalDimension",vr:"US",vm:"1",name:"Image Box Tile Vertical Dimension",retired:""},"0x00720310":{keyword:"ImageBoxScrollDirection",vr:"CS",vm:"1",name:"Image Box Scroll Direction",retired:""},"0x00720312":{keyword:"ImageBoxSmallScrollType",vr:"CS",vm:"1",name:"Image Box Small Scroll Type",retired:""},"0x00720314":{keyword:"ImageBoxSmallScrollAmount",vr:"US",vm:"1",name:"Image Box Small Scroll Amount",retired:""},"0x00720316":{keyword:"ImageBoxLargeScrollType",vr:"CS",vm:"1",name:"Image Box Large Scroll Type",retired:""},"0x00720318":{keyword:"ImageBoxLargeScrollAmount",vr:"US",vm:"1",name:"Image Box Large Scroll Amount",retired:""},"0x00720320":{keyword:"ImageBoxOverlapPriority",vr:"US",vm:"1",name:"Image Box Overlap Priority",retired:""},"0x00720330":{keyword:"CineRelativeToRealTime",vr:"FD",vm:"1",name:"Cine Relative to Real-Time",retired:""},"0x00720400":{keyword:"FilterOperationsSequence",vr:"SQ",vm:"1",name:"Filter Operations Sequence",retired:""},"0x00720402":{keyword:"FilterByCategory",vr:"CS",vm:"1",name:"Filter-by Category",retired:""},"0x00720404":{keyword:"FilterByAttributePresence",vr:"CS",vm:"1",name:"Filter-by Attribute Presence",retired:""},"0x00720406":{keyword:"FilterByOperator",vr:"CS",vm:"1",name:"Filter-by Operator",retired:""},"0x00720420":{keyword:"StructuredDisplayBackgroundCIELabValue",vr:"US",vm:"3",name:"Structured Display Background CIELab Value",retired:""},"0x00720421":{keyword:"EmptyImageBoxCIELabValue",vr:"US",vm:"3",name:"Empty Image Box CIELab Value",retired:""},"0x00720422":{keyword:"StructuredDisplayImageBoxSequence",vr:"SQ",vm:"1",name:"Structured Display Image Box Sequence",retired:""},"0x00720424":{keyword:"StructuredDisplayTextBoxSequence",vr:"SQ",vm:"1",name:"Structured Display Text Box Sequence",retired:""},"0x00720427":{keyword:"ReferencedFirstFrameSequence",vr:"SQ",vm:"1",name:"Referenced First Frame Sequence",retired:""},"0x00720430":{keyword:"ImageBoxSynchronizationSequence",vr:"SQ",vm:"1",name:"Image Box Synchronization Sequence",retired:""},"0x00720432":{keyword:"SynchronizedImageBoxList",vr:"US",vm:"2-n",name:"Synchronized Image Box List",retired:""},"0x00720434":{keyword:"TypeOfSynchronization",vr:"CS",vm:"1",name:"Type of Synchronization",retired:""},"0x00720500":{keyword:"BlendingOperationType",vr:"CS",vm:"1",name:"Blending Operation Type",retired:""},"0x00720510":{keyword:"ReformattingOperationType",vr:"CS",vm:"1",name:"Reformatting Operation Type",retired:""},"0x00720512":{keyword:"ReformattingThickness",vr:"FD",vm:"1",name:"Reformatting Thickness",retired:""},"0x00720514":{keyword:"ReformattingInterval",vr:"FD",vm:"1",name:"Reformatting Interval",retired:""},"0x00720516":{keyword:"ReformattingOperationInitialViewDirection",vr:"CS",vm:"1",name:"Reformatting Operation Initial View Direction",retired:""},"0x00720520":{keyword:"ThreeDRenderingType",vr:"CS",vm:"1-n",name:"3D Rendering Type",retired:""},"0x00720600":{keyword:"SortingOperationsSequence",vr:"SQ",vm:"1",name:"Sorting Operations Sequence",retired:""},"0x00720602":{keyword:"SortByCategory",vr:"CS",vm:"1",name:"Sort-by Category",retired:""},"0x00720604":{keyword:"SortingDirection",vr:"CS",vm:"1",name:"Sorting Direction",retired:""},"0x00720700":{keyword:"DisplaySetPatientOrientation",vr:"CS",vm:"2",name:"Display Set Patient Orientation",retired:""},"0x00720702":{keyword:"VOIType",vr:"CS",vm:"1",name:"VOI Type",retired:""},"0x00720704":{keyword:"PseudoColorType",vr:"CS",vm:"1",name:"Pseudo-Color Type",retired:""},"0x00720705":{keyword:"PseudoColorPaletteInstanceReferenceSequence",vr:"SQ",vm:"1",name:"Pseudo-Color Palette Instance Reference Sequence",retired:""},"0x00720706":{keyword:"ShowGrayscaleInverted",vr:"CS",vm:"1",name:"Show Grayscale Inverted",retired:""},"0x00720710":{keyword:"ShowImageTrueSizeFlag",vr:"CS",vm:"1",name:"Show Image True Size Flag",retired:""},"0x00720712":{keyword:"ShowGraphicAnnotationFlag",vr:"CS",vm:"1",name:"Show Graphic Annotation Flag",retired:""},"0x00720714":{keyword:"ShowPatientDemographicsFlag",vr:"CS",vm:"1",name:"Show Patient Demographics Flag",retired:""},"0x00720716":{keyword:"ShowAcquisitionTechniquesFlag",vr:"CS",vm:"1",name:"Show Acquisition Techniques Flag",retired:""},"0x00720717":{keyword:"DisplaySetHorizontalJustification",vr:"CS",vm:"1",name:"Display Set Horizontal Justification",retired:""},"0x00720718":{keyword:"DisplaySetVerticalJustification",vr:"CS",vm:"1",name:"Display Set Vertical Justification",retired:""},"0x00740120":{keyword:"ContinuationStartMeterset",vr:"FD",vm:"1",name:"Continuation Start Meterset",retired:""},"0x00740121":{keyword:"ContinuationEndMeterset",vr:"FD",vm:"1",name:"Continuation End Meterset",retired:""},"0x00741000":{keyword:"ProcedureStepState",vr:"CS",vm:"1",name:"Procedure Step State",retired:""},"0x00741002":{keyword:"ProcedureStepProgressInformationSequence",vr:"SQ",vm:"1",name:"Procedure Step Progress Information Sequence",retired:""},"0x00741004":{keyword:"ProcedureStepProgress",vr:"DS",vm:"1",name:"Procedure Step Progress",retired:""},"0x00741006":{keyword:"ProcedureStepProgressDescription",vr:"ST",vm:"1",name:"Procedure Step Progress Description",retired:""},"0x00741007":{keyword:"ProcedureStepProgressParametersSequence",vr:"SQ",vm:"1",name:"Procedure Step Progress Parameters Sequence",retired:""},"0x00741008":{keyword:"ProcedureStepCommunicationsURISequence",vr:"SQ",vm:"1",name:"Procedure Step Communications URI Sequence",retired:""},"0x0074100A":{keyword:"ContactURI",vr:"UR",vm:"1",name:"Contact URI",retired:""},"0x0074100C":{keyword:"ContactDisplayName",vr:"LO",vm:"1",name:"Contact Display Name",retired:""},"0x0074100E":{keyword:"ProcedureStepDiscontinuationReasonCodeSequence",vr:"SQ",vm:"1",name:"Procedure Step Discontinuation Reason Code Sequence",retired:""},"0x00741020":{keyword:"BeamTaskSequence",vr:"SQ",vm:"1",name:"Beam Task Sequence",retired:""},"0x00741022":{keyword:"BeamTaskType",vr:"CS",vm:"1",name:"Beam Task Type",retired:""},"0x00741024":{keyword:"BeamOrderIndexTrial",vr:"IS",vm:"1",name:"Beam Order Index (Trial)",retired:"Retired"},"0x00741025":{keyword:"AutosequenceFlag",vr:"CS",vm:"1",name:"Autosequence Flag",retired:""},"0x00741026":{keyword:"TableTopVerticalAdjustedPosition",vr:"FD",vm:"1",name:"Table Top Vertical Adjusted Position",retired:""},"0x00741027":{keyword:"TableTopLongitudinalAdjustedPosition",vr:"FD",vm:"1",name:"Table Top Longitudinal Adjusted Position",retired:""},"0x00741028":{keyword:"TableTopLateralAdjustedPosition",vr:"FD",vm:"1",name:"Table Top Lateral Adjusted Position",retired:""},"0x0074102A":{keyword:"PatientSupportAdjustedAngle",vr:"FD",vm:"1",name:"Patient Support Adjusted Angle",retired:""},"0x0074102B":{keyword:"TableTopEccentricAdjustedAngle",vr:"FD",vm:"1",name:"Table Top Eccentric Adjusted Angle",retired:""},"0x0074102C":{keyword:"TableTopPitchAdjustedAngle",vr:"FD",vm:"1",name:"Table Top Pitch Adjusted Angle",retired:""},"0x0074102D":{keyword:"TableTopRollAdjustedAngle",vr:"FD",vm:"1",name:"Table Top Roll Adjusted Angle",retired:""},"0x00741030":{keyword:"DeliveryVerificationImageSequence",vr:"SQ",vm:"1",name:"Delivery Verification Image Sequence",retired:""},"0x00741032":{keyword:"VerificationImageTiming",vr:"CS",vm:"1",name:"Verification Image Timing",retired:""},"0x00741034":{keyword:"DoubleExposureFlag",vr:"CS",vm:"1",name:"Double Exposure Flag",retired:""},"0x00741036":{keyword:"DoubleExposureOrdering",vr:"CS",vm:"1",name:"Double Exposure Ordering",retired:""},"0x00741038":{keyword:"DoubleExposureMetersetTrial",vr:"DS",vm:"1",name:"Double Exposure Meterset (Trial)",retired:"Retired"},"0x0074103A":{keyword:"DoubleExposureFieldDeltaTrial",vr:"DS",vm:"4",name:"Double Exposure Field Delta (Trial)",retired:"Retired"},"0x00741040":{keyword:"RelatedReferenceRTImageSequence",vr:"SQ",vm:"1",name:"Related Reference RT Image Sequence",retired:""},"0x00741042":{keyword:"GeneralMachineVerificationSequence",vr:"SQ",vm:"1",name:"General Machine Verification Sequence",retired:""},"0x00741044":{keyword:"ConventionalMachineVerificationSequence",vr:"SQ",vm:"1",name:"Conventional Machine Verification Sequence",retired:""},"0x00741046":{keyword:"IonMachineVerificationSequence",vr:"SQ",vm:"1",name:"Ion Machine Verification Sequence",retired:""},"0x00741048":{keyword:"FailedAttributesSequence",vr:"SQ",vm:"1",name:"Failed Attributes Sequence",retired:""},"0x0074104A":{keyword:"OverriddenAttributesSequence",vr:"SQ",vm:"1",name:"Overridden Attributes Sequence",retired:""},"0x0074104C":{keyword:"ConventionalControlPointVerificationSequence",vr:"SQ",vm:"1",name:"Conventional Control Point Verification Sequence",retired:""},"0x0074104E":{keyword:"IonControlPointVerificationSequence",vr:"SQ",vm:"1",name:"Ion Control Point Verification Sequence",retired:""},"0x00741050":{keyword:"AttributeOccurrenceSequence",vr:"SQ",vm:"1",name:"Attribute Occurrence Sequence",retired:""},"0x00741052":{keyword:"AttributeOccurrencePointer",vr:"AT",vm:"1",name:"Attribute Occurrence Pointer",retired:""},"0x00741054":{keyword:"AttributeItemSelector",vr:"UL",vm:"1",name:"Attribute Item Selector",retired:""},"0x00741056":{keyword:"AttributeOccurrencePrivateCreator",vr:"LO",vm:"1",name:"Attribute Occurrence Private Creator",retired:""},"0x00741057":{keyword:"SelectorSequencePointerItems",vr:"IS",vm:"1-n",name:"Selector Sequence Pointer Items",retired:""},"0x00741200":{keyword:"ScheduledProcedureStepPriority",vr:"CS",vm:"1",name:"Scheduled Procedure Step Priority",retired:""},"0x00741202":{keyword:"WorklistLabel",vr:"LO",vm:"1",name:"Worklist Label",retired:""},"0x00741204":{keyword:"ProcedureStepLabel",vr:"LO",vm:"1",name:"Procedure Step Label",retired:""},"0x00741210":{keyword:"ScheduledProcessingParametersSequence",vr:"SQ",vm:"1",name:"Scheduled Processing Parameters Sequence",retired:""},"0x00741212":{keyword:"PerformedProcessingParametersSequence",vr:"SQ",vm:"1",name:"Performed Processing Parameters Sequence",retired:""},"0x00741216":{keyword:"UnifiedProcedureStepPerformedProcedureSequence",vr:"SQ",vm:"1",name:"Unified Procedure Step Performed Procedure Sequence",retired:""},"0x00741220":{keyword:"RelatedProcedureStepSequence",vr:"SQ",vm:"1",name:"Related Procedure Step Sequence",retired:"Retired"},"0x00741222":{keyword:"ProcedureStepRelationshipType",vr:"LO",vm:"1",name:"Procedure Step Relationship Type",retired:"Retired"},"0x00741224":{keyword:"ReplacedProcedureStepSequence",vr:"SQ",vm:"1",name:"Replaced Procedure Step Sequence",retired:""},"0x00741230":{keyword:"DeletionLock",vr:"LO",vm:"1",name:"Deletion Lock",retired:""},"0x00741234":{keyword:"ReceivingAE",vr:"AE",vm:"1",name:"Receiving AE",retired:""},"0x00741236":{keyword:"RequestingAE",vr:"AE",vm:"1",name:"Requesting AE",retired:""},"0x00741238":{keyword:"ReasonForCancellation",vr:"LT",vm:"1",name:"Reason for Cancellation",retired:""},"0x00741242":{keyword:"SCPStatus",vr:"CS",vm:"1",name:"SCP Status",retired:""},"0x00741244":{keyword:"SubscriptionListStatus",vr:"CS",vm:"1",name:"Subscription List Status",retired:""},"0x00741246":{keyword:"UnifiedProcedureStepListStatus",vr:"CS",vm:"1",name:"Unified Procedure Step List Status",retired:""},"0x00741324":{keyword:"BeamOrderIndex",vr:"UL",vm:"1",name:"Beam Order Index",retired:""},"0x00741338":{keyword:"DoubleExposureMeterset",vr:"FD",vm:"1",name:"Double Exposure Meterset",retired:""},"0x0074133A":{keyword:"DoubleExposureFieldDelta",vr:"FD",vm:"4",name:"Double Exposure Field Delta",retired:""},"0x00741401":{keyword:"BrachyTaskSequence",vr:"SQ",vm:"1",name:"Brachy Task Sequence",retired:""},"0x00741402":{keyword:"ContinuationStartTotalReferenceAirKerma",vr:"DS",vm:"1",name:"Continuation Start Total Reference Air Kerma",retired:""},"0x00741403":{keyword:"ContinuationEndTotalReferenceAirKerma",vr:"DS",vm:"1",name:"Continuation End Total Reference Air Kerma",retired:""},"0x00741404":{keyword:"ContinuationPulseNumber",vr:"IS",vm:"1",name:"Continuation Pulse Number",retired:""},"0x00741405":{keyword:"ChannelDeliveryOrderSequence",vr:"SQ",vm:"1",name:"Channel Delivery Order Sequence",retired:""},"0x00741406":{keyword:"ReferencedChannelNumber",vr:"IS",vm:"1",name:"Referenced Channel Number",retired:""},"0x00741407":{keyword:"StartCumulativeTimeWeight",vr:"DS",vm:"1",name:"Start Cumulative Time Weight",retired:""},"0x00741408":{keyword:"EndCumulativeTimeWeight",vr:"DS",vm:"1",name:"End Cumulative Time Weight",retired:""},"0x00741409":{keyword:"OmittedChannelSequence",vr:"SQ",vm:"1",name:"Omitted Channel Sequence",retired:""},"0x0074140A":{keyword:"ReasonForChannelOmission",vr:"CS",vm:"1",name:"Reason for Channel Omission",retired:""},"0x0074140B":{keyword:"ReasonForChannelOmissionDescription",vr:"LO",vm:"1",name:"Reason for Channel Omission Description",retired:""},"0x0074140C":{keyword:"ChannelDeliveryOrderIndex",vr:"IS",vm:"1",name:"Channel Delivery Order Index",retired:""},"0x0074140D":{keyword:"ChannelDeliveryContinuationSequence",vr:"SQ",vm:"1",name:"Channel Delivery Continuation Sequence",retired:""},"0x0074140E":{keyword:"OmittedApplicationSetupSequence",vr:"SQ",vm:"1",name:"Omitted Application Setup Sequence",retired:""},"0x00760001":{keyword:"ImplantAssemblyTemplateName",vr:"LO",vm:"1",name:"Implant Assembly Template Name",retired:""},"0x00760003":{keyword:"ImplantAssemblyTemplateIssuer",vr:"LO",vm:"1",name:"Implant Assembly Template Issuer",retired:""},"0x00760006":{keyword:"ImplantAssemblyTemplateVersion",vr:"LO",vm:"1",name:"Implant Assembly Template Version",retired:""},"0x00760008":{keyword:"ReplacedImplantAssemblyTemplateSequence",vr:"SQ",vm:"1",name:"Replaced Implant Assembly Template Sequence",retired:""},"0x0076000A":{keyword:"ImplantAssemblyTemplateType",vr:"CS",vm:"1",name:"Implant Assembly Template Type",retired:""},"0x0076000C":{keyword:"OriginalImplantAssemblyTemplateSequence",vr:"SQ",vm:"1",name:"Original Implant Assembly Template Sequence",retired:""},"0x0076000E":{keyword:"DerivationImplantAssemblyTemplateSequence",vr:"SQ",vm:"1",name:"Derivation Implant Assembly Template Sequence",retired:""},"0x00760010":{keyword:"ImplantAssemblyTemplateTargetAnatomySequence",vr:"SQ",vm:"1",name:"Implant Assembly Template Target Anatomy Sequence",retired:""},"0x00760020":{keyword:"ProcedureTypeCodeSequence",vr:"SQ",vm:"1",name:"Procedure Type Code Sequence",retired:""},"0x00760030":{keyword:"SurgicalTechnique",vr:"LO",vm:"1",name:"Surgical Technique",retired:""},"0x00760032":{keyword:"ComponentTypesSequence",vr:"SQ",vm:"1",name:"Component Types Sequence",retired:""},"0x00760034":{keyword:"ComponentTypeCodeSequence",vr:"SQ",vm:"1",name:"Component Type Code Sequence",retired:""},"0x00760036":{keyword:"ExclusiveComponentType",vr:"CS",vm:"1",name:"Exclusive Component Type",retired:""},"0x00760038":{keyword:"MandatoryComponentType",vr:"CS",vm:"1",name:"Mandatory Component Type",retired:""},"0x00760040":{keyword:"ComponentSequence",vr:"SQ",vm:"1",name:"Component Sequence",retired:""},"0x00760055":{keyword:"ComponentID",vr:"US",vm:"1",name:"Component ID",retired:""},"0x00760060":{keyword:"ComponentAssemblySequence",vr:"SQ",vm:"1",name:"Component Assembly Sequence",retired:""},"0x00760070":{keyword:"Component1ReferencedID",vr:"US",vm:"1",name:"Component 1 Referenced ID",retired:""},"0x00760080":{keyword:"Component1ReferencedMatingFeatureSetID",vr:"US",vm:"1",name:"Component 1 Referenced Mating Feature Set ID",retired:""},"0x00760090":{keyword:"Component1ReferencedMatingFeatureID",vr:"US",vm:"1",name:"Component 1 Referenced Mating Feature ID",retired:""},"0x007600A0":{keyword:"Component2ReferencedID",vr:"US",vm:"1",name:"Component 2 Referenced ID",retired:""},"0x007600B0":{keyword:"Component2ReferencedMatingFeatureSetID",vr:"US",vm:"1",name:"Component 2 Referenced Mating Feature Set ID",retired:""},"0x007600C0":{keyword:"Component2ReferencedMatingFeatureID",vr:"US",vm:"1",name:"Component 2 Referenced Mating Feature ID",retired:""},"0x00780001":{keyword:"ImplantTemplateGroupName",vr:"LO",vm:"1",name:"Implant Template Group Name",retired:""},"0x00780010":{keyword:"ImplantTemplateGroupDescription",vr:"ST",vm:"1",name:"Implant Template Group Description",retired:""},"0x00780020":{keyword:"ImplantTemplateGroupIssuer",vr:"LO",vm:"1",name:"Implant Template Group Issuer",retired:""},"0x00780024":{keyword:"ImplantTemplateGroupVersion",vr:"LO",vm:"1",name:"Implant Template Group Version",retired:""},"0x00780026":{keyword:"ReplacedImplantTemplateGroupSequence",vr:"SQ",vm:"1",name:"Replaced Implant Template Group Sequence",retired:""},"0x00780028":{keyword:"ImplantTemplateGroupTargetAnatomySequence",vr:"SQ",vm:"1",name:"Implant Template Group Target Anatomy Sequence",retired:""},"0x0078002A":{keyword:"ImplantTemplateGroupMembersSequence",vr:"SQ",vm:"1",name:"Implant Template Group Members Sequence",retired:""},"0x0078002E":{keyword:"ImplantTemplateGroupMemberID",vr:"US",vm:"1",name:"Implant Template Group Member ID",retired:""},"0x00780050":{keyword:"ThreeDImplantTemplateGroupMemberMatchingPoint",vr:"FD",vm:"3",name:"3D Implant Template Group Member Matching Point",retired:""},"0x00780060":{keyword:"ThreeDImplantTemplateGroupMemberMatchingAxes",vr:"FD",vm:"9",name:"3D Implant Template Group Member Matching Axes",retired:""},"0x00780070":{keyword:"ImplantTemplateGroupMemberMatching2DCoordinatesSequence",vr:"SQ",vm:"1",name:"Implant Template Group Member Matching 2D Coordinates Sequence",retired:""},"0x00780090":{keyword:"TwoDImplantTemplateGroupMemberMatchingPoint",vr:"FD",vm:"2",name:"2D Implant Template Group Member Matching Point",retired:""},"0x007800A0":{keyword:"TwoDImplantTemplateGroupMemberMatchingAxes",vr:"FD",vm:"4",name:"2D Implant Template Group Member Matching Axes",retired:""},"0x007800B0":{keyword:"ImplantTemplateGroupVariationDimensionSequence",vr:"SQ",vm:"1",name:"Implant Template Group Variation Dimension Sequence",retired:""},"0x007800B2":{keyword:"ImplantTemplateGroupVariationDimensionName",vr:"LO",vm:"1",name:"Implant Template Group Variation Dimension Name",retired:""},"0x007800B4":{keyword:"ImplantTemplateGroupVariationDimensionRankSequence",vr:"SQ",vm:"1",name:"Implant Template Group Variation Dimension Rank Sequence",retired:""},"0x007800B6":{keyword:"ReferencedImplantTemplateGroupMemberID",vr:"US",vm:"1",name:"Referenced Implant Template Group Member ID",retired:""},"0x007800B8":{keyword:"ImplantTemplateGroupVariationDimensionRank",vr:"US",vm:"1",name:"Implant Template Group Variation Dimension Rank",retired:""},"0x00800001":{keyword:"SurfaceScanAcquisitionTypeCodeSequence",vr:"SQ",vm:"1",name:"Surface Scan Acquisition Type Code Sequence",retired:""},"0x00800002":{keyword:"SurfaceScanModeCodeSequence",vr:"SQ",vm:"1",name:"Surface Scan Mode Code Sequence",retired:""},"0x00800003":{keyword:"RegistrationMethodCodeSequence",vr:"SQ",vm:"1",name:"Registration Method Code Sequence",retired:""},"0x00800004":{keyword:"ShotDurationTime",vr:"FD",vm:"1",name:"Shot Duration Time",retired:""},"0x00800005":{keyword:"ShotOffsetTime",vr:"FD",vm:"1",name:"Shot Offset Time",retired:""},"0x00800006":{keyword:"SurfacePointPresentationValueData",vr:"US",vm:"1-n",name:"Surface Point Presentation Value Data",retired:""},"0x00800007":{keyword:"SurfacePointColorCIELabValueData",vr:"US",vm:"3-3n",name:"Surface Point Color CIELab Value Data",retired:""},"0x00800008":{keyword:"UVMappingSequence",vr:"SQ",vm:"1",name:"UV Mapping Sequence",retired:""},"0x00800009":{keyword:"TextureLabel",vr:"SH",vm:"1",name:"Texture Label",retired:""},"0x00800010":{keyword:"UValueData",vr:"OF",vm:"1",name:"U Value Data",retired:""},"0x00800011":{keyword:"VValueData",vr:"OF",vm:"1",name:"V Value Data",retired:""},"0x00800012":{keyword:"ReferencedTextureSequence",vr:"SQ",vm:"1",name:"Referenced Texture Sequence",retired:""},"0x00800013":{keyword:"ReferencedSurfaceDataSequence",vr:"SQ",vm:"1",name:"Referenced Surface Data Sequence",retired:""},"0x00820001":{keyword:"AssessmentSummary",vr:"CS",vm:"1",name:"Assessment Summary",retired:""},"0x00820003":{keyword:"AssessmentSummaryDescription",vr:"UT",vm:"1",name:"Assessment Summary Description",retired:""},"0x00820004":{keyword:"AssessedSOPInstanceSequence",vr:"SQ",vm:"1",name:"Assessed SOP Instance Sequence",retired:""},"0x00820005":{keyword:"ReferencedComparisonSOPInstanceSequence",vr:"SQ",vm:"1",name:"Referenced Comparison SOP Instance Sequence",retired:""},"0x00820006":{keyword:"NumberOfAssessmentObservations",vr:"UL",vm:"1",name:"Number of Assessment Observations",retired:""},"0x00820007":{keyword:"AssessmentObservationsSequence",vr:"SQ",vm:"1",name:"Assessment Observations Sequence",retired:""},"0x00820008":{keyword:"ObservationSignificance",vr:"CS",vm:"1",name:"Observation Significance",retired:""},"0x0082000A":{keyword:"ObservationDescription",vr:"UT",vm:"1",name:"Observation Description",retired:""},"0x0082000C":{keyword:"StructuredConstraintObservationSequence",vr:"SQ",vm:"1",name:"Structured Constraint Observation Sequence",retired:""},"0x00820010":{keyword:"AssessedAttributeValueSequence",vr:"SQ",vm:"1",name:"Assessed Attribute Value Sequence",retired:""},"0x00820016":{keyword:"AssessmentSetID",vr:"LO",vm:"1",name:"Assessment Set ID",retired:""},"0x00820017":{keyword:"AssessmentRequesterSequence",vr:"SQ",vm:"1",name:"Assessment Requester Sequence",retired:""},"0x00820018":{keyword:"SelectorAttributeName",vr:"LO",vm:"1",name:"Selector Attribute Name",retired:""},"0x00820019":{keyword:"SelectorAttributeKeyword",vr:"LO",vm:"1",name:"Selector Attribute Keyword",retired:""},"0x00820021":{keyword:"AssessmentTypeCodeSequence",vr:"SQ",vm:"1",name:"Assessment Type Code Sequence",retired:""},"0x00820022":{keyword:"ObservationBasisCodeSequence",vr:"SQ",vm:"1",name:"Observation Basis Code Sequence",retired:""},"0x00820023":{keyword:"AssessmentLabel",vr:"LO",vm:"1",name:"Assessment Label",retired:""},"0x00820032":{keyword:"ConstraintType",vr:"CS",vm:"1",name:"Constraint Type",retired:""},"0x00820033":{keyword:"SpecificationSelectionGuidance",vr:"UT",vm:"1",name:"Specification Selection Guidance",retired:""},"0x00820034":{keyword:"ConstraintValueSequence",vr:"SQ",vm:"1",name:"Constraint Value Sequence",retired:""},"0x00820035":{keyword:"RecommendedDefaultValueSequence",vr:"SQ",vm:"1",name:"Recommended Default Value Sequence",retired:""},"0x00820036":{keyword:"ConstraintViolationSignificance",vr:"CS",vm:"1",name:"Constraint Violation Significance",retired:""},"0x00820037":{keyword:"ConstraintViolationCondition",vr:"UT",vm:"1",name:"Constraint Violation Condition",retired:""},"0x00820038":{keyword:"ModifiableConstraintFlag",vr:"CS",vm:"1",name:"Modifiable Constraint Flag",retired:""},"0x00880130":{keyword:"StorageMediaFileSetID",vr:"SH",vm:"1",name:"Storage Media File-set ID",retired:""},"0x00880140":{keyword:"StorageMediaFileSetUID",vr:"UI",vm:"1",name:"Storage Media File-set UID",retired:""},"0x00880200":{keyword:"IconImageSequence",vr:"SQ",vm:"1",name:"Icon Image Sequence",retired:""},"0x00880904":{keyword:"TopicTitle",vr:"LO",vm:"1",name:"Topic Title",retired:"Retired"},"0x00880906":{keyword:"TopicSubject",vr:"ST",vm:"1",name:"Topic Subject",retired:"Retired"},"0x00880910":{keyword:"TopicAuthor",vr:"LO",vm:"1",name:"Topic Author",retired:"Retired"},"0x00880912":{keyword:"TopicKeywords",vr:"LO",vm:"1-32",name:"Topic Keywords",retired:"Retired"},"0x01000410":{keyword:"SOPInstanceStatus",vr:"CS",vm:"1",name:"SOP Instance Status",retired:""},"0x01000420":{keyword:"SOPAuthorizationDateTime",vr:"DT",vm:"1",name:"SOP Authorization DateTime",retired:""},"0x01000424":{keyword:"SOPAuthorizationComment",vr:"LT",vm:"1",name:"SOP Authorization Comment",retired:""},"0x01000426":{keyword:"AuthorizationEquipmentCertificationNumber",vr:"LO",vm:"1",name:"Authorization Equipment Certification Number",retired:""},"0x04000005":{keyword:"MACIDNumber",vr:"US",vm:"1",name:"MAC ID Number",retired:""},"0x04000010":{keyword:"MACCalculationTransferSyntaxUID",vr:"UI",vm:"1",name:"MAC Calculation Transfer Syntax UID",retired:""},"0x04000015":{keyword:"MACAlgorithm",vr:"CS",vm:"1",name:"MAC Algorithm",retired:""},"0x04000020":{keyword:"DataElementsSigned",vr:"AT",vm:"1-n",name:"Data Elements Signed",retired:""},"0x04000100":{keyword:"DigitalSignatureUID",vr:"UI",vm:"1",name:"Digital Signature UID",retired:""},"0x04000105":{keyword:"DigitalSignatureDateTime",vr:"DT",vm:"1",name:"Digital Signature DateTime",retired:""},"0x04000110":{keyword:"CertificateType",vr:"CS",vm:"1",name:"Certificate Type",retired:""},"0x04000115":{keyword:"CertificateOfSigner",vr:"OB",vm:"1",name:"Certificate of Signer",retired:""},"0x04000120":{keyword:"Signature",vr:"OB",vm:"1",name:"Signature",retired:""},"0x04000305":{keyword:"CertifiedTimestampType",vr:"CS",vm:"1",name:"Certified Timestamp Type",retired:""},"0x04000310":{keyword:"CertifiedTimestamp",vr:"OB",vm:"1",name:"Certified Timestamp",retired:""},"0x04000315":{keyword:"",vr:"FL",vm:"1",name:"",retired:"Retired"},"0x04000401":{keyword:"DigitalSignaturePurposeCodeSequence",vr:"SQ",vm:"1",name:"Digital Signature Purpose Code Sequence",retired:""},"0x04000402":{keyword:"ReferencedDigitalSignatureSequence",vr:"SQ",vm:"1",name:"Referenced Digital Signature Sequence",retired:""},"0x04000403":{keyword:"ReferencedSOPInstanceMACSequence",vr:"SQ",vm:"1",name:"Referenced SOP Instance MAC Sequence",retired:""},"0x04000404":{keyword:"MAC",vr:"OB",vm:"1",name:"MAC",retired:""},"0x04000500":{keyword:"EncryptedAttributesSequence",vr:"SQ",vm:"1",name:"Encrypted Attributes Sequence",retired:""},"0x04000510":{keyword:"EncryptedContentTransferSyntaxUID",vr:"UI",vm:"1",name:"Encrypted Content Transfer Syntax UID",retired:""},"0x04000520":{keyword:"EncryptedContent",vr:"OB",vm:"1",name:"Encrypted Content",retired:""},"0x04000550":{keyword:"ModifiedAttributesSequence",vr:"SQ",vm:"1",name:"Modified Attributes Sequence",retired:""},"0x04000551":{keyword:"NonconformingModifiedAttributesSequence",vr:"SQ",vm:"1",name:"Nonconforming Modified Attributes Sequence",retired:""},"0x04000552":{keyword:"NonconformingDataElementValue",vr:"OB",vm:"1",name:"Nonconforming Data Element Value",retired:""},"0x04000561":{keyword:"OriginalAttributesSequence",vr:"SQ",vm:"1",name:"Original Attributes Sequence",retired:""},"0x04000562":{keyword:"AttributeModificationDateTime",vr:"DT",vm:"1",name:"Attribute Modification DateTime",retired:""},"0x04000563":{keyword:"ModifyingSystem",vr:"LO",vm:"1",name:"Modifying System",retired:""},"0x04000564":{keyword:"SourceOfPreviousValues",vr:"LO",vm:"1",name:"Source of Previous Values",retired:""},"0x04000565":{keyword:"ReasonForTheAttributeModification",vr:"CS",vm:"1",name:"Reason for the Attribute Modification",retired:""},"0x04000600":{keyword:"InstanceOriginStatus",vr:"CS",vm:"1",name:"Instance Origin Status",retired:""},"0x20000010":{keyword:"NumberOfCopies",vr:"IS",vm:"1",name:"Number of Copies",retired:""},"0x2000001E":{keyword:"PrinterConfigurationSequence",vr:"SQ",vm:"1",name:"Printer Configuration Sequence",retired:""},"0x20000020":{keyword:"PrintPriority",vr:"CS",vm:"1",name:"Print Priority",retired:""},"0x20000030":{keyword:"MediumType",vr:"CS",vm:"1",name:"Medium Type",retired:""},"0x20000040":{keyword:"FilmDestination",vr:"CS",vm:"1",name:"Film Destination",retired:""},"0x20000050":{keyword:"FilmSessionLabel",vr:"LO",vm:"1",name:"Film Session Label",retired:""},"0x20000060":{keyword:"MemoryAllocation",vr:"IS",vm:"1",name:"Memory Allocation",retired:""},"0x20000061":{keyword:"MaximumMemoryAllocation",vr:"IS",vm:"1",name:"Maximum Memory Allocation",retired:""},"0x20000062":{keyword:"ColorImagePrintingFlag",vr:"CS",vm:"1",name:"Color Image Printing Flag",retired:"Retired"},"0x20000063":{keyword:"CollationFlag",vr:"CS",vm:"1",name:"Collation Flag",retired:"Retired"},"0x20000065":{keyword:"AnnotationFlag",vr:"CS",vm:"1",name:"Annotation Flag",retired:"Retired"},"0x20000067":{keyword:"ImageOverlayFlag",vr:"CS",vm:"1",name:"Image Overlay Flag",retired:"Retired"},"0x20000069":{keyword:"PresentationLUTFlag",vr:"CS",vm:"1",name:"Presentation LUT Flag",retired:"Retired"},"0x2000006A":{keyword:"ImageBoxPresentationLUTFlag",vr:"CS",vm:"1",name:"Image Box Presentation LUT Flag",retired:"Retired"},"0x200000A0":{keyword:"MemoryBitDepth",vr:"US",vm:"1",name:"Memory Bit Depth",retired:""},"0x200000A1":{keyword:"PrintingBitDepth",vr:"US",vm:"1",name:"Printing Bit Depth",retired:""},"0x200000A2":{keyword:"MediaInstalledSequence",vr:"SQ",vm:"1",name:"Media Installed Sequence",retired:""},"0x200000A4":{keyword:"OtherMediaAvailableSequence",vr:"SQ",vm:"1",name:"Other Media Available Sequence",retired:""},"0x200000A8":{keyword:"SupportedImageDisplayFormatsSequence",vr:"SQ",vm:"1",name:"Supported Image Display Formats Sequence",retired:""},"0x20000500":{keyword:"ReferencedFilmBoxSequence",vr:"SQ",vm:"1",name:"Referenced Film Box Sequence",retired:""},"0x20000510":{keyword:"ReferencedStoredPrintSequence",vr:"SQ",vm:"1",name:"Referenced Stored Print Sequence",retired:"Retired"},"0x20100010":{keyword:"ImageDisplayFormat",vr:"ST",vm:"1",name:"Image Display Format",retired:""},"0x20100030":{keyword:"AnnotationDisplayFormatID",vr:"CS",vm:"1",name:"Annotation Display Format ID",retired:""},"0x20100040":{keyword:"FilmOrientation",vr:"CS",vm:"1",name:"Film Orientation",retired:""},"0x20100050":{keyword:"FilmSizeID",vr:"CS",vm:"1",name:"Film Size ID",retired:""},"0x20100052":{keyword:"PrinterResolutionID",vr:"CS",vm:"1",name:"Printer Resolution ID",retired:""},"0x20100054":{keyword:"DefaultPrinterResolutionID",vr:"CS",vm:"1",name:"Default Printer Resolution ID",retired:""},"0x20100060":{keyword:"MagnificationType",vr:"CS",vm:"1",name:"Magnification Type",retired:""},"0x20100080":{keyword:"SmoothingType",vr:"CS",vm:"1",name:"Smoothing Type",retired:""},"0x201000A6":{keyword:"DefaultMagnificationType",vr:"CS",vm:"1",name:"Default Magnification Type",retired:""},"0x201000A7":{keyword:"OtherMagnificationTypesAvailable",vr:"CS",vm:"1-n",name:"Other Magnification Types Available",retired:""},"0x201000A8":{keyword:"DefaultSmoothingType",vr:"CS",vm:"1",name:"Default Smoothing Type",retired:""},"0x201000A9":{keyword:"OtherSmoothingTypesAvailable",vr:"CS",vm:"1-n",name:"Other Smoothing Types Available",retired:""},"0x20100100":{keyword:"BorderDensity",vr:"CS",vm:"1",name:"Border Density",retired:""},"0x20100110":{keyword:"EmptyImageDensity",vr:"CS",vm:"1",name:"Empty Image Density",retired:""},"0x20100120":{keyword:"MinDensity",vr:"US",vm:"1",name:"Min Density",retired:""},"0x20100130":{keyword:"MaxDensity",vr:"US",vm:"1",name:"Max Density",retired:""},"0x20100140":{keyword:"Trim",vr:"CS",vm:"1",name:"Trim",retired:""},"0x20100150":{keyword:"ConfigurationInformation",vr:"ST",vm:"1",name:"Configuration Information",retired:""},"0x20100152":{keyword:"ConfigurationInformationDescription",vr:"LT",vm:"1",name:"Configuration Information Description",retired:""},"0x20100154":{keyword:"MaximumCollatedFilms",vr:"IS",vm:"1",name:"Maximum Collated Films",retired:""},"0x2010015E":{keyword:"Illumination",vr:"US",vm:"1",name:"Illumination",retired:""},"0x20100160":{keyword:"ReflectedAmbientLight",vr:"US",vm:"1",name:"Reflected Ambient Light",retired:""},"0x20100376":{keyword:"PrinterPixelSpacing",vr:"DS",vm:"2",name:"Printer Pixel Spacing",retired:""},"0x20100500":{keyword:"ReferencedFilmSessionSequence",vr:"SQ",vm:"1",name:"Referenced Film Session Sequence",retired:""},"0x20100510":{keyword:"ReferencedImageBoxSequence",vr:"SQ",vm:"1",name:"Referenced Image Box Sequence",retired:""},"0x20100520":{keyword:"ReferencedBasicAnnotationBoxSequence",vr:"SQ",vm:"1",name:"Referenced Basic Annotation Box Sequence",retired:""},"0x20200010":{keyword:"ImageBoxPosition",vr:"US",vm:"1",name:"Image Box Position",retired:""},"0x20200020":{keyword:"Polarity",vr:"CS",vm:"1",name:"Polarity",retired:""},"0x20200030":{keyword:"RequestedImageSize",vr:"DS",vm:"1",name:"Requested Image Size",retired:""},"0x20200040":{keyword:"RequestedDecimateCropBehavior",vr:"CS",vm:"1",name:"Requested Decimate/Crop Behavior",retired:""},"0x20200050":{keyword:"RequestedResolutionID",vr:"CS",vm:"1",name:"Requested Resolution ID",retired:""},"0x202000A0":{keyword:"RequestedImageSizeFlag",vr:"CS",vm:"1",name:"Requested Image Size Flag",retired:""},"0x202000A2":{keyword:"DecimateCropResult",vr:"CS",vm:"1",name:"Decimate/Crop Result",retired:""},"0x20200110":{keyword:"BasicGrayscaleImageSequence",vr:"SQ",vm:"1",name:"Basic Grayscale Image Sequence",retired:""},"0x20200111":{keyword:"BasicColorImageSequence",vr:"SQ",vm:"1",name:"Basic Color Image Sequence",retired:""},"0x20200130":{keyword:"ReferencedImageOverlayBoxSequence",vr:"SQ",vm:"1",name:"Referenced Image Overlay Box Sequence",retired:"Retired"},"0x20200140":{keyword:"ReferencedVOILUTBoxSequence",vr:"SQ",vm:"1",name:"Referenced VOI LUT Box Sequence",retired:"Retired"},"0x20300010":{keyword:"AnnotationPosition",vr:"US",vm:"1",name:"Annotation Position",retired:""},"0x20300020":{keyword:"TextString",vr:"LO",vm:"1",name:"Text String",retired:""},"0x20400010":{keyword:"ReferencedOverlayPlaneSequence",vr:"SQ",vm:"1",name:"Referenced Overlay Plane Sequence",retired:"Retired"},"0x20400011":{keyword:"ReferencedOverlayPlaneGroups",vr:"US",vm:"1-99",name:"Referenced Overlay Plane Groups",retired:"Retired"},"0x20400020":{keyword:"OverlayPixelDataSequence",vr:"SQ",vm:"1",name:"Overlay Pixel Data Sequence",retired:"Retired"},"0x20400060":{keyword:"OverlayMagnificationType",vr:"CS",vm:"1",name:"Overlay Magnification Type",retired:"Retired"},"0x20400070":{keyword:"OverlaySmoothingType",vr:"CS",vm:"1",name:"Overlay Smoothing Type",retired:"Retired"},"0x20400072":{keyword:"OverlayOrImageMagnification",vr:"CS",vm:"1",name:"Overlay or Image Magnification",retired:"Retired"},"0x20400074":{keyword:"MagnifyToNumberOfColumns",vr:"US",vm:"1",name:"Magnify to Number of Columns",retired:"Retired"},"0x20400080":{keyword:"OverlayForegroundDensity",vr:"CS",vm:"1",name:"Overlay Foreground Density",retired:"Retired"},"0x20400082":{keyword:"OverlayBackgroundDensity",vr:"CS",vm:"1",name:"Overlay Background Density",retired:"Retired"},"0x20400090":{keyword:"OverlayMode",vr:"CS",vm:"1",name:"Overlay Mode",retired:"Retired"},"0x20400100":{keyword:"ThresholdDensity",vr:"CS",vm:"1",name:"Threshold Density",retired:"Retired"},"0x20400500":{keyword:"ReferencedImageBoxSequenceRetired",vr:"SQ",vm:"1",name:"Referenced Image Box Sequence (Retired)",retired:"Retired"},"0x20500010":{keyword:"PresentationLUTSequence",vr:"SQ",vm:"1",name:"Presentation LUT Sequence",retired:""},"0x20500020":{keyword:"PresentationLUTShape",vr:"CS",vm:"1",name:"Presentation LUT Shape",retired:""},"0x20500500":{keyword:"ReferencedPresentationLUTSequence",vr:"SQ",vm:"1",name:"Referenced Presentation LUT Sequence",retired:""},"0x21000010":{keyword:"PrintJobID",vr:"SH",vm:"1",name:"Print Job ID",retired:"Retired"},"0x21000020":{keyword:"ExecutionStatus",vr:"CS",vm:"1",name:"Execution Status",retired:""},"0x21000030":{keyword:"ExecutionStatusInfo",vr:"CS",vm:"1",name:"Execution Status Info",retired:""},"0x21000040":{keyword:"CreationDate",vr:"DA",vm:"1",name:"Creation Date",retired:""},"0x21000050":{keyword:"CreationTime",vr:"TM",vm:"1",name:"Creation Time",retired:""},"0x21000070":{keyword:"Originator",vr:"AE",vm:"1",name:"Originator",retired:""},"0x21000140":{keyword:"DestinationAE",vr:"AE",vm:"1",name:"Destination AE",retired:""},"0x21000160":{keyword:"OwnerID",vr:"SH",vm:"1",name:"Owner ID",retired:""},"0x21000170":{keyword:"NumberOfFilms",vr:"IS",vm:"1",name:"Number of Films",retired:""},"0x21000500":{keyword:"ReferencedPrintJobSequencePullStoredPrint",vr:"SQ",vm:"1",name:"Referenced Print Job Sequence (Pull Stored Print)",retired:"Retired"},"0x21100010":{keyword:"PrinterStatus",vr:"CS",vm:"1",name:"Printer Status",retired:""},"0x21100020":{keyword:"PrinterStatusInfo",vr:"CS",vm:"1",name:"Printer Status Info",retired:""},"0x21100030":{keyword:"PrinterName",vr:"LO",vm:"1",name:"Printer Name",retired:""},"0x21100099":{keyword:"PrintQueueID",vr:"SH",vm:"1",name:"Print Queue ID",retired:"Retired"},"0x21200010":{keyword:"QueueStatus",vr:"CS",vm:"1",name:"Queue Status",retired:"Retired"},"0x21200050":{keyword:"PrintJobDescriptionSequence",vr:"SQ",vm:"1",name:"Print Job Description Sequence",retired:"Retired"},"0x21200070":{keyword:"ReferencedPrintJobSequence",vr:"SQ",vm:"1",name:"Referenced Print Job Sequence",retired:"Retired"},"0x21300010":{keyword:"PrintManagementCapabilitiesSequence",vr:"SQ",vm:"1",name:"Print Management Capabilities Sequence",retired:"Retired"},"0x21300015":{keyword:"PrinterCharacteristicsSequence",vr:"SQ",vm:"1",name:"Printer Characteristics Sequence",retired:"Retired"},"0x21300030":{keyword:"FilmBoxContentSequence",vr:"SQ",vm:"1",name:"Film Box Content Sequence",retired:"Retired"},"0x21300040":{keyword:"ImageBoxContentSequence",vr:"SQ",vm:"1",name:"Image Box Content Sequence",retired:"Retired"},"0x21300050":{keyword:"AnnotationContentSequence",vr:"SQ",vm:"1",name:"Annotation Content Sequence",retired:"Retired"},"0x21300060":{keyword:"ImageOverlayBoxContentSequence",vr:"SQ",vm:"1",name:"Image Overlay Box Content Sequence",retired:"Retired"},"0x21300080":{keyword:"PresentationLUTContentSequence",vr:"SQ",vm:"1",name:"Presentation LUT Content Sequence",retired:"Retired"},"0x213000A0":{keyword:"ProposedStudySequence",vr:"SQ",vm:"1",name:"Proposed Study Sequence",retired:""},"0x213000C0":{keyword:"OriginalImageSequence",vr:"SQ",vm:"1",name:"Original Image Sequence",retired:""},"0x22000001":{keyword:"LabelUsingInformationExtractedFromInstances",vr:"CS",vm:"1",name:"Label Using Information Extracted From Instances",retired:""},"0x22000002":{keyword:"LabelText",vr:"UT",vm:"1",name:"Label Text",retired:""},"0x22000003":{keyword:"LabelStyleSelection",vr:"CS",vm:"1",name:"Label Style Selection",retired:""},"0x22000004":{keyword:"MediaDisposition",vr:"LT",vm:"1",name:"Media Disposition",retired:""},"0x22000005":{keyword:"BarcodeValue",vr:"LT",vm:"1",name:"Barcode Value",retired:""},"0x22000006":{keyword:"BarcodeSymbology",vr:"CS",vm:"1",name:"Barcode Symbology",retired:""},"0x22000007":{keyword:"AllowMediaSplitting",vr:"CS",vm:"1",name:"Allow Media Splitting",retired:""},"0x22000008":{keyword:"IncludeNonDICOMObjects",vr:"CS",vm:"1",name:"Include Non-DICOM Objects",retired:""},"0x22000009":{keyword:"IncludeDisplayApplication",vr:"CS",vm:"1",name:"Include Display Application",retired:""},"0x2200000A":{keyword:"PreserveCompositeInstancesAfterMediaCreation",vr:"CS",vm:"1",name:"Preserve Composite Instances After Media Creation",retired:""},"0x2200000B":{keyword:"TotalNumberOfPiecesOfMediaCreated",vr:"US",vm:"1",name:"Total Number of Pieces of Media Created",retired:""},"0x2200000C":{keyword:"RequestedMediaApplicationProfile",vr:"LO",vm:"1",name:"Requested Media Application Profile",retired:""},"0x2200000D":{keyword:"ReferencedStorageMediaSequence",vr:"SQ",vm:"1",name:"Referenced Storage Media Sequence",retired:""},"0x2200000E":{keyword:"FailureAttributes",vr:"AT",vm:"1-n",name:"Failure Attributes",retired:""},"0x2200000F":{keyword:"AllowLossyCompression",vr:"CS",vm:"1",name:"Allow Lossy Compression",retired:""},"0x22000020":{keyword:"RequestPriority",vr:"CS",vm:"1",name:"Request Priority",retired:""},"0x30020002":{keyword:"RTImageLabel",vr:"SH",vm:"1",name:"RT Image Label",retired:""},"0x30020003":{keyword:"RTImageName",vr:"LO",vm:"1",name:"RT Image Name",retired:""},"0x30020004":{keyword:"RTImageDescription",vr:"ST",vm:"1",name:"RT Image Description",retired:""},"0x3002000A":{keyword:"ReportedValuesOrigin",vr:"CS",vm:"1",name:"Reported Values Origin",retired:""},"0x3002000C":{keyword:"RTImagePlane",vr:"CS",vm:"1",name:"RT Image Plane",retired:""},"0x3002000D":{keyword:"XRayImageReceptorTranslation",vr:"DS",vm:"3",name:"X-Ray Image Receptor Translation",retired:""},"0x3002000E":{keyword:"XRayImageReceptorAngle",vr:"DS",vm:"1",name:"X-Ray Image Receptor Angle",retired:""},"0x30020010":{keyword:"RTImageOrientation",vr:"DS",vm:"6",name:"RT Image Orientation",retired:""},"0x30020011":{keyword:"ImagePlanePixelSpacing",vr:"DS",vm:"2",name:"Image Plane Pixel Spacing",retired:""},"0x30020012":{keyword:"RTImagePosition",vr:"DS",vm:"2",name:"RT Image Position",retired:""},"0x30020020":{keyword:"RadiationMachineName",vr:"SH",vm:"1",name:"Radiation Machine Name",retired:""},"0x30020022":{keyword:"RadiationMachineSAD",vr:"DS",vm:"1",name:"Radiation Machine SAD",retired:""},"0x30020024":{keyword:"RadiationMachineSSD",vr:"DS",vm:"1",name:"Radiation Machine SSD",retired:""},"0x30020026":{keyword:"RTImageSID",vr:"DS",vm:"1",name:"RT Image SID",retired:""},"0x30020028":{keyword:"SourceToReferenceObjectDistance",vr:"DS",vm:"1",name:"Source to Reference Object Distance",retired:""},"0x30020029":{keyword:"FractionNumber",vr:"IS",vm:"1",name:"Fraction Number",retired:""},"0x30020030":{keyword:"ExposureSequence",vr:"SQ",vm:"1",name:"Exposure Sequence",retired:""},"0x30020032":{keyword:"MetersetExposure",vr:"DS",vm:"1",name:"Meterset Exposure",retired:""},"0x30020034":{keyword:"DiaphragmPosition",vr:"DS",vm:"4",name:"Diaphragm Position",retired:""},"0x30020040":{keyword:"FluenceMapSequence",vr:"SQ",vm:"1",name:"Fluence Map Sequence",retired:""},"0x30020041":{keyword:"FluenceDataSource",vr:"CS",vm:"1",name:"Fluence Data Source",retired:""},"0x30020042":{keyword:"FluenceDataScale",vr:"DS",vm:"1",name:"Fluence Data Scale",retired:""},"0x30020050":{keyword:"PrimaryFluenceModeSequence",vr:"SQ",vm:"1",name:"Primary Fluence Mode Sequence",retired:""},"0x30020051":{keyword:"FluenceMode",vr:"CS",vm:"1",name:"Fluence Mode",retired:""},"0x30020052":{keyword:"FluenceModeID",vr:"SH",vm:"1",name:"Fluence Mode ID",retired:""},"0x30020100":{keyword:"SelectedFrameNumber",vr:"IS",vm:"1",name:"Selected Frame Number",retired:""},"0x30020101":{keyword:"SelectedFrameFunctionalGroupsSequence",vr:"SQ",vm:"1",name:"Selected Frame Functional Groups Sequence",retired:""},"0x30020102":{keyword:"RTImageFrameGeneralContentSequence",vr:"SQ",vm:"1",name:"RT Image Frame General Content Sequence",retired:""},"0x30020103":{keyword:"RTImageFrameContextSequence",vr:"SQ",vm:"1",name:"RT Image Frame Context Sequence",retired:""},"0x30020104":{keyword:"RTImageScopeSequence",vr:"SQ",vm:"1",name:"RT Image Scope Sequence",retired:""},"0x30020105":{keyword:"BeamModifierCoordinatesPresenceFlag",vr:"CS",vm:"1",name:"Beam Modifier Coordinates Presence Flag",retired:""},"0x30020106":{keyword:"StartCumulativeMeterset",vr:"FD",vm:"1",name:"Start Cumulative Meterset",retired:""},"0x30020107":{keyword:"StopCumulativeMeterset",vr:"FD",vm:"1",name:"Stop Cumulative Meterset",retired:""},"0x30020108":{keyword:"RTAcquisitionPatientPositionSequence",vr:"SQ",vm:"1",name:"RT Acquisition Patient Position Sequence",retired:""},"0x30020109":{keyword:"RTImageFrameImagingDevicePositionSequence",vr:"SQ",vm:"1",name:"RT Image Frame Imaging Device Position Sequence",retired:""},"0x3002010A":{keyword:"RTImageFramekVRadiationAcquisitionSequence",vr:"SQ",vm:"1",name:"RT Image Frame kV Radiation Acquisition Sequence",retired:""},"0x3002010B":{keyword:"RTImageFrameMVRadiationAcquisitionSequence",vr:"SQ",vm:"1",name:"RT Image Frame MV Radiation Acquisition Sequence",retired:""},"0x3002010C":{keyword:"RTImageFrameRadiationAcquisitionSequence",vr:"SQ",vm:"1",name:"RT Image Frame Radiation Acquisition Sequence",retired:""},"0x3002010D":{keyword:"ImagingSourcePositionSequence",vr:"SQ",vm:"1",name:"Imaging Source Position Sequence",retired:""},"0x3002010E":{keyword:"ImageReceptorPositionSequence",vr:"SQ",vm:"1",name:"Image Receptor Position Sequence",retired:""},"0x3002010F":{keyword:"DevicePositionToEquipmentMappingMatrix",vr:"FD",vm:"16",name:"Device Position to Equipment Mapping Matrix",retired:""},"0x30020110":{keyword:"DevicePositionParameterSequence",vr:"SQ",vm:"1",name:"Device Position Parameter Sequence",retired:""},"0x30020111":{keyword:"ImagingSourceLocationSpecificationType",vr:"CS",vm:"1",name:"Imaging Source Location Specification Type",retired:""},"0x30020112":{keyword:"ImagingDeviceLocationMatrixSequence",vr:"SQ",vm:"1",name:"Imaging Device Location Matrix Sequence",retired:""},"0x30020113":{keyword:"ImagingDeviceLocationParameterSequence",vr:"SQ",vm:"1",name:"Imaging Device Location Parameter Sequence",retired:""},"0x30020114":{keyword:"ImagingApertureSequence",vr:"SQ",vm:"1",name:"Imaging Aperture Sequence",retired:""},"0x30020115":{keyword:"ImagingApertureSpecificationType",vr:"CS",vm:"1",name:"Imaging Aperture Specification Type",retired:""},"0x30020116":{keyword:"NumberOfAcquisitionDevices",vr:"US",vm:"1",name:"Number of Acquisition Devices",retired:""},"0x30020117":{keyword:"AcquisitionDeviceSequence",vr:"SQ",vm:"1",name:"Acquisition Device Sequence",retired:""},"0x30020118":{keyword:"AcquisitionTaskSequence",vr:"SQ",vm:"1",name:"Acquisition Task Sequence",retired:""},"0x30020119":{keyword:"AcquisitionTaskWorkitemCodeSequence",vr:"SQ",vm:"1",name:"Acquisition Task Workitem Code Sequence",retired:""},"0x3002011A":{keyword:"AcquisitionSubtaskSequence",vr:"SQ",vm:"1",name:"Acquisition Subtask Sequence",retired:""},"0x3002011B":{keyword:"SubtaskWorkitemCodeSequence",vr:"SQ",vm:"1",name:"Subtask Workitem Code Sequence",retired:""},"0x3002011C":{keyword:"AcquisitionTaskIndex",vr:"US",vm:"1",name:"Acquisition Task Index",retired:""},"0x3002011D":{keyword:"AcquisitionSubtaskIndex",vr:"US",vm:"1",name:"Acquisition Subtask Index",retired:""},"0x3002011E":{keyword:"ReferencedBaselineParametersRTRadiationInstanceSequence",vr:"SQ",vm:"1",name:"Referenced Baseline Parameters RT Radiation Instance Sequence",retired:""},"0x3002011F":{keyword:"PositionAcquisitionTemplateIdentificationSequence",vr:"SQ",vm:"1",name:"Position Acquisition Template Identification Sequence",retired:""},"0x30020120":{keyword:"PositionAcquisitionTemplateID",vr:"ST",vm:"1",name:"Position Acquisition Template ID",retired:""},"0x30020121":{keyword:"PositionAcquisitionTemplateName",vr:"LO",vm:"1",name:"Position Acquisition Template Name",retired:""},"0x30020122":{keyword:"PositionAcquisitionTemplateCodeSequence",vr:"SQ",vm:"1",name:"Position Acquisition Template Code Sequence",retired:""},"0x30020123":{keyword:"PositionAcquisitionTemplateDescription",vr:"LT",vm:"1",name:"Position Acquisition Template Description",retired:""},"0x30020124":{keyword:"AcquisitionTaskApplicabilitySequence",vr:"SQ",vm:"1",name:"Acquisition Task Applicability Sequence",retired:""},"0x30020125":{keyword:"ProjectionImagingAcquisitionParameterSequence",vr:"SQ",vm:"1",name:"Projection Imaging Acquisition Parameter Sequence",retired:""},"0x30020126":{keyword:"CTImagingAcquisitionParameterSequence",vr:"SQ",vm:"1",name:"CT Imaging Acquisition Parameter Sequence",retired:""},"0x30020127":{keyword:"KVImagingGenerationParametersSequence",vr:"SQ",vm:"1",name:"KV Imaging Generation Parameters Sequence",retired:""},"0x30020128":{keyword:"MVImagingGenerationParametersSequence",vr:"SQ",vm:"1",name:"MV Imaging Generation Parameters Sequence",retired:""},"0x30020129":{keyword:"AcquisitionSignalType",vr:"CS",vm:"1",name:"Acquisition Signal Type",retired:""},"0x3002012A":{keyword:"AcquisitionMethod",vr:"CS",vm:"1",name:"Acquisition Method",retired:""},"0x3002012B":{keyword:"ScanStartPositionSequence",vr:"SQ",vm:"1",name:"Scan Start Position Sequence",retired:""},"0x3002012C":{keyword:"ScanStopPositionSequence",vr:"SQ",vm:"1",name:"Scan Stop Position Sequence",retired:""},"0x3002012D":{keyword:"ImagingSourceToBeamModifierDefinitionPlaneDistance",vr:"FD",vm:"1",name:"Imaging Source to Beam Modifier Definition Plane Distance",retired:""},"0x3002012E":{keyword:"ScanArcType",vr:"CS",vm:"1",name:"Scan Arc Type",retired:""},"0x3002012F":{keyword:"DetectorPositioningType",vr:"CS",vm:"1",name:"Detector Positioning Type",retired:""},"0x30020130":{keyword:"AdditionalRTAccessoryDeviceSequence",vr:"SQ",vm:"1",name:"Additional RT Accessory Device Sequence",retired:""},"0x30020131":{keyword:"DeviceSpecificAcquisitionParameterSequence",vr:"SQ",vm:"1",name:"Device-Specific Acquisition Parameter Sequence",retired:""},"0x30020132":{keyword:"ReferencedPositionReferenceInstanceSequence",vr:"SQ",vm:"1",name:"Referenced Position Reference Instance Sequence",retired:""},"0x30020133":{keyword:"EnergyDerivationCodeSequence",vr:"SQ",vm:"1",name:"Energy Derivation Code Sequence",retired:""},"0x30020134":{keyword:"MaximumCumulativeMetersetExposure",vr:"FD",vm:"1",name:"Maximum Cumulative Meterset Exposure",retired:""},"0x30020135":{keyword:"AcquisitionInitiationSequence",vr:"SQ",vm:"1",name:"Acquisition Initiation Sequence",retired:""},"0x30040001":{keyword:"DVHType",vr:"CS",vm:"1",name:"DVH Type",retired:""},"0x30040002":{keyword:"DoseUnits",vr:"CS",vm:"1",name:"Dose Units",retired:""},"0x30040004":{keyword:"DoseType",vr:"CS",vm:"1",name:"Dose Type",retired:""},"0x30040005":{keyword:"SpatialTransformOfDose",vr:"CS",vm:"1",name:"Spatial Transform of Dose",retired:""},"0x30040006":{keyword:"DoseComment",vr:"LO",vm:"1",name:"Dose Comment",retired:""},"0x30040008":{keyword:"NormalizationPoint",vr:"DS",vm:"3",name:"Normalization Point",retired:""},"0x3004000A":{keyword:"DoseSummationType",vr:"CS",vm:"1",name:"Dose Summation Type",retired:""},"0x3004000C":{keyword:"GridFrameOffsetVector",vr:"DS",vm:"2-n",name:"Grid Frame Offset Vector",retired:""},"0x3004000E":{keyword:"DoseGridScaling",vr:"DS",vm:"1",name:"Dose Grid Scaling",retired:""},"0x30040010":{keyword:"RTDoseROISequence",vr:"SQ",vm:"1",name:"RT Dose ROI Sequence",retired:"Retired"},"0x30040012":{keyword:"DoseValue",vr:"DS",vm:"1",name:"Dose Value",retired:"Retired"},"0x30040014":{keyword:"TissueHeterogeneityCorrection",vr:"CS",vm:"1-3",name:"Tissue Heterogeneity Correction",retired:""},"0x30040040":{keyword:"DVHNormalizationPoint",vr:"DS",vm:"3",name:"DVH Normalization Point",retired:""},"0x30040042":{keyword:"DVHNormalizationDoseValue",vr:"DS",vm:"1",name:"DVH Normalization Dose Value",retired:""},"0x30040050":{keyword:"DVHSequence",vr:"SQ",vm:"1",name:"DVH Sequence",retired:""},"0x30040052":{keyword:"DVHDoseScaling",vr:"DS",vm:"1",name:"DVH Dose Scaling",retired:""},"0x30040054":{keyword:"DVHVolumeUnits",vr:"CS",vm:"1",name:"DVH Volume Units",retired:""},"0x30040056":{keyword:"DVHNumberOfBins",vr:"IS",vm:"1",name:"DVH Number of Bins",retired:""},"0x30040058":{keyword:"DVHData",vr:"DS",vm:"2-2n",name:"DVH Data",retired:""},"0x30040060":{keyword:"DVHReferencedROISequence",vr:"SQ",vm:"1",name:"DVH Referenced ROI Sequence",retired:""},"0x30040062":{keyword:"DVHROIContributionType",vr:"CS",vm:"1",name:"DVH ROI Contribution Type",retired:""},"0x30040070":{keyword:"DVHMinimumDose",vr:"DS",vm:"1",name:"DVH Minimum Dose",retired:""},"0x30040072":{keyword:"DVHMaximumDose",vr:"DS",vm:"1",name:"DVH Maximum Dose",retired:""},"0x30040074":{keyword:"DVHMeanDose",vr:"DS",vm:"1",name:"DVH Mean Dose",retired:""},"0x30060002":{keyword:"StructureSetLabel",vr:"SH",vm:"1",name:"Structure Set Label",retired:""},"0x30060004":{keyword:"StructureSetName",vr:"LO",vm:"1",name:"Structure Set Name",retired:""},"0x30060006":{keyword:"StructureSetDescription",vr:"ST",vm:"1",name:"Structure Set Description",retired:""},"0x30060008":{keyword:"StructureSetDate",vr:"DA",vm:"1",name:"Structure Set Date",retired:""},"0x30060009":{keyword:"StructureSetTime",vr:"TM",vm:"1",name:"Structure Set Time",retired:""},"0x30060010":{keyword:"ReferencedFrameOfReferenceSequence",vr:"SQ",vm:"1",name:"Referenced Frame of Reference Sequence",retired:""},"0x30060012":{keyword:"RTReferencedStudySequence",vr:"SQ",vm:"1",name:"RT Referenced Study Sequence",retired:""},"0x30060014":{keyword:"RTReferencedSeriesSequence",vr:"SQ",vm:"1",name:"RT Referenced Series Sequence",retired:""},"0x30060016":{keyword:"ContourImageSequence",vr:"SQ",vm:"1",name:"Contour Image Sequence",retired:""},"0x30060018":{keyword:"PredecessorStructureSetSequence",vr:"SQ",vm:"1",name:"Predecessor Structure Set Sequence",retired:""},"0x30060020":{keyword:"StructureSetROISequence",vr:"SQ",vm:"1",name:"Structure Set ROI Sequence",retired:""},"0x30060022":{keyword:"ROINumber",vr:"IS",vm:"1",name:"ROI Number",retired:""},"0x30060024":{keyword:"ReferencedFrameOfReferenceUID",vr:"UI",vm:"1",name:"Referenced Frame of Reference UID",retired:""},"0x30060026":{keyword:"ROIName",vr:"LO",vm:"1",name:"ROI Name",retired:""},"0x30060028":{keyword:"ROIDescription",vr:"ST",vm:"1",name:"ROI Description",retired:""},"0x3006002A":{keyword:"ROIDisplayColor",vr:"IS",vm:"3",name:"ROI Display Color",retired:""},"0x3006002C":{keyword:"ROIVolume",vr:"DS",vm:"1",name:"ROI Volume",retired:""},"0x30060030":{keyword:"RTRelatedROISequence",vr:"SQ",vm:"1",name:"RT Related ROI Sequence",retired:""},"0x30060033":{keyword:"RTROIRelationship",vr:"CS",vm:"1",name:"RT ROI Relationship",retired:""},"0x30060036":{keyword:"ROIGenerationAlgorithm",vr:"CS",vm:"1",name:"ROI Generation Algorithm",retired:""},"0x30060037":{keyword:"ROIDerivationAlgorithmIdentificationSequence",vr:"SQ",vm:"1",name:"ROI Derivation Algorithm Identification Sequence",retired:""},"0x30060038":{keyword:"ROIGenerationDescription",vr:"LO",vm:"1",name:"ROI Generation Description",retired:""},"0x30060039":{keyword:"ROIContourSequence",vr:"SQ",vm:"1",name:"ROI Contour Sequence",retired:""},"0x30060040":{keyword:"ContourSequence",vr:"SQ",vm:"1",name:"Contour Sequence",retired:""},"0x30060042":{keyword:"ContourGeometricType",vr:"CS",vm:"1",name:"Contour Geometric Type",retired:""},"0x30060044":{keyword:"ContourSlabThickness",vr:"DS",vm:"1",name:"Contour Slab Thickness",retired:"Retired"},"0x30060045":{keyword:"ContourOffsetVector",vr:"DS",vm:"3",name:"Contour Offset Vector",retired:"Retired"},"0x30060046":{keyword:"NumberOfContourPoints",vr:"IS",vm:"1",name:"Number of Contour Points",retired:""},"0x30060048":{keyword:"ContourNumber",vr:"IS",vm:"1",name:"Contour Number",retired:""},"0x30060049":{keyword:"AttachedContours",vr:"IS",vm:"1-n",name:"Attached Contours",retired:"Retired"},"0x3006004A":{keyword:"SourcePixelPlanesCharacteristicsSequence",vr:"SQ",vm:"1",name:"Source Pixel Planes Characteristics Sequence",retired:""},"0x30060050":{keyword:"ContourData",vr:"DS",vm:"3-3n",name:"Contour Data",retired:""},"0x30060080":{keyword:"RTROIObservationsSequence",vr:"SQ",vm:"1",name:"RT ROI Observations Sequence",retired:""},"0x30060082":{keyword:"ObservationNumber",vr:"IS",vm:"1",name:"Observation Number",retired:""},"0x30060084":{keyword:"ReferencedROINumber",vr:"IS",vm:"1",name:"Referenced ROI Number",retired:""},"0x30060085":{keyword:"ROIObservationLabel",vr:"SH",vm:"1",name:"ROI Observation Label",retired:"Retired"},"0x30060086":{keyword:"RTROIIdentificationCodeSequence",vr:"SQ",vm:"1",name:"RT ROI Identification Code Sequence",retired:""},"0x30060088":{keyword:"ROIObservationDescription",vr:"ST",vm:"1",name:"ROI Observation Description",retired:"Retired"},"0x300600A0":{keyword:"RelatedRTROIObservationsSequence",vr:"SQ",vm:"1",name:"Related RT ROI Observations Sequence",retired:""},"0x300600A4":{keyword:"RTROIInterpretedType",vr:"CS",vm:"1",name:"RT ROI Interpreted Type",retired:""},"0x300600A6":{keyword:"ROIInterpreter",vr:"PN",vm:"1",name:"ROI Interpreter",retired:""},"0x300600B0":{keyword:"ROIPhysicalPropertiesSequence",vr:"SQ",vm:"1",name:"ROI Physical Properties Sequence",retired:""},"0x300600B2":{keyword:"ROIPhysicalProperty",vr:"CS",vm:"1",name:"ROI Physical Property",retired:""},"0x300600B4":{keyword:"ROIPhysicalPropertyValue",vr:"DS",vm:"1",name:"ROI Physical Property Value",retired:""},"0x300600B6":{keyword:"ROIElementalCompositionSequence",vr:"SQ",vm:"1",name:"ROI Elemental Composition Sequence",retired:""},"0x300600B7":{keyword:"ROIElementalCompositionAtomicNumber",vr:"US",vm:"1",name:"ROI Elemental Composition Atomic Number",retired:""},"0x300600B8":{keyword:"ROIElementalCompositionAtomicMassFraction",vr:"FL",vm:"1",name:"ROI Elemental Composition Atomic Mass Fraction",retired:""},"0x300600B9":{keyword:"AdditionalRTROIIdentificationCodeSequence",vr:"SQ",vm:"1",name:"Additional RT ROI Identification Code Sequence",retired:"Retired"},"0x300600C0":{keyword:"FrameOfReferenceRelationshipSequence",vr:"SQ",vm:"1",name:"Frame of Reference Relationship Sequence",retired:"Retired"},"0x300600C2":{keyword:"RelatedFrameOfReferenceUID",vr:"UI",vm:"1",name:"Related Frame of Reference UID",retired:"Retired"},"0x300600C4":{keyword:"FrameOfReferenceTransformationType",vr:"CS",vm:"1",name:"Frame of Reference Transformation Type",retired:"Retired"},"0x300600C6":{keyword:"FrameOfReferenceTransformationMatrix",vr:"DS",vm:"16",name:"Frame of Reference Transformation Matrix",retired:""},"0x300600C8":{keyword:"FrameOfReferenceTransformationComment",vr:"LO",vm:"1",name:"Frame of Reference Transformation Comment",retired:""},"0x300600C9":{keyword:"PatientLocationCoordinatesSequence",vr:"SQ",vm:"1",name:"Patient Location Coordinates Sequence",retired:""},"0x300600CA":{keyword:"PatientLocationCoordinatesCodeSequence",vr:"SQ",vm:"1",name:"Patient Location Coordinates Code Sequence",retired:""},"0x300600CB":{keyword:"PatientSupportPositionSequence",vr:"SQ",vm:"1",name:"Patient Support Position Sequence",retired:""},"0x30080010":{keyword:"MeasuredDoseReferenceSequence",vr:"SQ",vm:"1",name:"Measured Dose Reference Sequence",retired:""},"0x30080012":{keyword:"MeasuredDoseDescription",vr:"ST",vm:"1",name:"Measured Dose Description",retired:""},"0x30080014":{keyword:"MeasuredDoseType",vr:"CS",vm:"1",name:"Measured Dose Type",retired:""},"0x30080016":{keyword:"MeasuredDoseValue",vr:"DS",vm:"1",name:"Measured Dose Value",retired:""},"0x30080020":{keyword:"TreatmentSessionBeamSequence",vr:"SQ",vm:"1",name:"Treatment Session Beam Sequence",retired:""},"0x30080021":{keyword:"TreatmentSessionIonBeamSequence",vr:"SQ",vm:"1",name:"Treatment Session Ion Beam Sequence",retired:""},"0x30080022":{keyword:"CurrentFractionNumber",vr:"IS",vm:"1",name:"Current Fraction Number",retired:""},"0x30080024":{keyword:"TreatmentControlPointDate",vr:"DA",vm:"1",name:"Treatment Control Point Date",retired:""},"0x30080025":{keyword:"TreatmentControlPointTime",vr:"TM",vm:"1",name:"Treatment Control Point Time",retired:""},"0x3008002A":{keyword:"TreatmentTerminationStatus",vr:"CS",vm:"1",name:"Treatment Termination Status",retired:""},"0x3008002B":{keyword:"TreatmentTerminationCode",vr:"SH",vm:"1",name:"Treatment Termination Code",retired:"Retired"},"0x3008002C":{keyword:"TreatmentVerificationStatus",vr:"CS",vm:"1",name:"Treatment Verification Status",retired:""},"0x30080030":{keyword:"ReferencedTreatmentRecordSequence",vr:"SQ",vm:"1",name:"Referenced Treatment Record Sequence",retired:""},"0x30080032":{keyword:"SpecifiedPrimaryMeterset",vr:"DS",vm:"1",name:"Specified Primary Meterset",retired:""},"0x30080033":{keyword:"SpecifiedSecondaryMeterset",vr:"DS",vm:"1",name:"Specified Secondary Meterset",retired:""},"0x30080036":{keyword:"DeliveredPrimaryMeterset",vr:"DS",vm:"1",name:"Delivered Primary Meterset",retired:""},"0x30080037":{keyword:"DeliveredSecondaryMeterset",vr:"DS",vm:"1",name:"Delivered Secondary Meterset",retired:""},"0x3008003A":{keyword:"SpecifiedTreatmentTime",vr:"DS",vm:"1",name:"Specified Treatment Time",retired:""},"0x3008003B":{keyword:"DeliveredTreatmentTime",vr:"DS",vm:"1",name:"Delivered Treatment Time",retired:""},"0x30080040":{keyword:"ControlPointDeliverySequence",vr:"SQ",vm:"1",name:"Control Point Delivery Sequence",retired:""},"0x30080041":{keyword:"IonControlPointDeliverySequence",vr:"SQ",vm:"1",name:"Ion Control Point Delivery Sequence",retired:""},"0x30080042":{keyword:"SpecifiedMeterset",vr:"DS",vm:"1",name:"Specified Meterset",retired:""},"0x30080044":{keyword:"DeliveredMeterset",vr:"DS",vm:"1",name:"Delivered Meterset",retired:""},"0x30080045":{keyword:"MetersetRateSet",vr:"FL",vm:"1",name:"Meterset Rate Set",retired:""},"0x30080046":{keyword:"MetersetRateDelivered",vr:"FL",vm:"1",name:"Meterset Rate Delivered",retired:""},"0x30080047":{keyword:"ScanSpotMetersetsDelivered",vr:"FL",vm:"1-n",name:"Scan Spot Metersets Delivered",retired:""},"0x30080048":{keyword:"DoseRateDelivered",vr:"DS",vm:"1",name:"Dose Rate Delivered",retired:""},"0x30080050":{keyword:"TreatmentSummaryCalculatedDoseReferenceSequence",vr:"SQ",vm:"1",name:"Treatment Summary Calculated Dose Reference Sequence",retired:""},"0x30080052":{keyword:"CumulativeDoseToDoseReference",vr:"DS",vm:"1",name:"Cumulative Dose to Dose Reference",retired:""},"0x30080054":{keyword:"FirstTreatmentDate",vr:"DA",vm:"1",name:"First Treatment Date",retired:""},"0x30080056":{keyword:"MostRecentTreatmentDate",vr:"DA",vm:"1",name:"Most Recent Treatment Date",retired:""},"0x3008005A":{keyword:"NumberOfFractionsDelivered",vr:"IS",vm:"1",name:"Number of Fractions Delivered",retired:""},"0x30080060":{keyword:"OverrideSequence",vr:"SQ",vm:"1",name:"Override Sequence",retired:""},"0x30080061":{keyword:"ParameterSequencePointer",vr:"AT",vm:"1",name:"Parameter Sequence Pointer",retired:""},"0x30080062":{keyword:"OverrideParameterPointer",vr:"AT",vm:"1",name:"Override Parameter Pointer",retired:""},"0x30080063":{keyword:"ParameterItemIndex",vr:"IS",vm:"1",name:"Parameter Item Index",retired:""},"0x30080064":{keyword:"MeasuredDoseReferenceNumber",vr:"IS",vm:"1",name:"Measured Dose Reference Number",retired:""},"0x30080065":{keyword:"ParameterPointer",vr:"AT",vm:"1",name:"Parameter Pointer",retired:""},"0x30080066":{keyword:"OverrideReason",vr:"ST",vm:"1",name:"Override Reason",retired:""},"0x30080067":{keyword:"ParameterValueNumber",vr:"US",vm:"1",name:"Parameter Value Number",retired:""},"0x30080068":{keyword:"CorrectedParameterSequence",vr:"SQ",vm:"1",name:"Corrected Parameter Sequence",retired:""},"0x3008006A":{keyword:"CorrectionValue",vr:"FL",vm:"1",name:"Correction Value",retired:""},"0x30080070":{keyword:"CalculatedDoseReferenceSequence",vr:"SQ",vm:"1",name:"Calculated Dose Reference Sequence",retired:""},"0x30080072":{keyword:"CalculatedDoseReferenceNumber",vr:"IS",vm:"1",name:"Calculated Dose Reference Number",retired:""},"0x30080074":{keyword:"CalculatedDoseReferenceDescription",vr:"ST",vm:"1",name:"Calculated Dose Reference Description",retired:""},"0x30080076":{keyword:"CalculatedDoseReferenceDoseValue",vr:"DS",vm:"1",name:"Calculated Dose Reference Dose Value",retired:""},"0x30080078":{keyword:"StartMeterset",vr:"DS",vm:"1",name:"Start Meterset",retired:""},"0x3008007A":{keyword:"EndMeterset",vr:"DS",vm:"1",name:"End Meterset",retired:""},"0x30080080":{keyword:"ReferencedMeasuredDoseReferenceSequence",vr:"SQ",vm:"1",name:"Referenced Measured Dose Reference Sequence",retired:""},"0x30080082":{keyword:"ReferencedMeasuredDoseReferenceNumber",vr:"IS",vm:"1",name:"Referenced Measured Dose Reference Number",retired:""},"0x30080090":{keyword:"ReferencedCalculatedDoseReferenceSequence",vr:"SQ",vm:"1",name:"Referenced Calculated Dose Reference Sequence",retired:""},"0x30080092":{keyword:"ReferencedCalculatedDoseReferenceNumber",vr:"IS",vm:"1",name:"Referenced Calculated Dose Reference Number",retired:""},"0x300800A0":{keyword:"BeamLimitingDeviceLeafPairsSequence",vr:"SQ",vm:"1",name:"Beam Limiting Device Leaf Pairs Sequence",retired:""},"0x300800A1":{keyword:"EnhancedRTBeamLimitingDeviceSequence",vr:"SQ",vm:"1",name:"Enhanced RT Beam Limiting Device Sequence",retired:""},"0x300800A2":{keyword:"EnhancedRTBeamLimitingOpeningSequence",vr:"SQ",vm:"1",name:"Enhanced RT Beam Limiting Opening Sequence",retired:""},"0x300800A3":{keyword:"EnhancedRTBeamLimitingDeviceDefinitionFlag",vr:"CS",vm:"1",name:"Enhanced RT Beam Limiting Device Definition Flag",retired:""},"0x300800A4":{keyword:"ParallelRTBeamDelimiterOpeningExtents",vr:"FD",vm:"2-2n",name:"Parallel RT Beam Delimiter Opening Extents",retired:""},"0x300800B0":{keyword:"RecordedWedgeSequence",vr:"SQ",vm:"1",name:"Recorded Wedge Sequence",retired:""},"0x300800C0":{keyword:"RecordedCompensatorSequence",vr:"SQ",vm:"1",name:"Recorded Compensator Sequence",retired:""},"0x300800D0":{keyword:"RecordedBlockSequence",vr:"SQ",vm:"1",name:"Recorded Block Sequence",retired:""},"0x300800D1":{keyword:"RecordedBlockSlabSequence",vr:"SQ",vm:"1",name:"Recorded Block Slab Sequence",retired:""},"0x300800E0":{keyword:"TreatmentSummaryMeasuredDoseReferenceSequence",vr:"SQ",vm:"1",name:"Treatment Summary Measured Dose Reference Sequence",retired:""},"0x300800F0":{keyword:"RecordedSnoutSequence",vr:"SQ",vm:"1",name:"Recorded Snout Sequence",retired:""},"0x300800F2":{keyword:"RecordedRangeShifterSequence",vr:"SQ",vm:"1",name:"Recorded Range Shifter Sequence",retired:""},"0x300800F4":{keyword:"RecordedLateralSpreadingDeviceSequence",vr:"SQ",vm:"1",name:"Recorded Lateral Spreading Device Sequence",retired:""},"0x300800F6":{keyword:"RecordedRangeModulatorSequence",vr:"SQ",vm:"1",name:"Recorded Range Modulator Sequence",retired:""},"0x30080100":{keyword:"RecordedSourceSequence",vr:"SQ",vm:"1",name:"Recorded Source Sequence",retired:""},"0x30080105":{keyword:"SourceSerialNumber",vr:"LO",vm:"1",name:"Source Serial Number",retired:""},"0x30080110":{keyword:"TreatmentSessionApplicationSetupSequence",vr:"SQ",vm:"1",name:"Treatment Session Application Setup Sequence",retired:""},"0x30080116":{keyword:"ApplicationSetupCheck",vr:"CS",vm:"1",name:"Application Setup Check",retired:""},"0x30080120":{keyword:"RecordedBrachyAccessoryDeviceSequence",vr:"SQ",vm:"1",name:"Recorded Brachy Accessory Device Sequence",retired:""},"0x30080122":{keyword:"ReferencedBrachyAccessoryDeviceNumber",vr:"IS",vm:"1",name:"Referenced Brachy Accessory Device Number",retired:""},"0x30080130":{keyword:"RecordedChannelSequence",vr:"SQ",vm:"1",name:"Recorded Channel Sequence",retired:""},"0x30080132":{keyword:"SpecifiedChannelTotalTime",vr:"DS",vm:"1",name:"Specified Channel Total Time",retired:""},"0x30080134":{keyword:"DeliveredChannelTotalTime",vr:"DS",vm:"1",name:"Delivered Channel Total Time",retired:""},"0x30080136":{keyword:"SpecifiedNumberOfPulses",vr:"IS",vm:"1",name:"Specified Number of Pulses",retired:""},"0x30080138":{keyword:"DeliveredNumberOfPulses",vr:"IS",vm:"1",name:"Delivered Number of Pulses",retired:""},"0x3008013A":{keyword:"SpecifiedPulseRepetitionInterval",vr:"DS",vm:"1",name:"Specified Pulse Repetition Interval",retired:""},"0x3008013C":{keyword:"DeliveredPulseRepetitionInterval",vr:"DS",vm:"1",name:"Delivered Pulse Repetition Interval",retired:""},"0x30080140":{keyword:"RecordedSourceApplicatorSequence",vr:"SQ",vm:"1",name:"Recorded Source Applicator Sequence",retired:""},"0x30080142":{keyword:"ReferencedSourceApplicatorNumber",vr:"IS",vm:"1",name:"Referenced Source Applicator Number",retired:""},"0x30080150":{keyword:"RecordedChannelShieldSequence",vr:"SQ",vm:"1",name:"Recorded Channel Shield Sequence",retired:""},"0x30080152":{keyword:"ReferencedChannelShieldNumber",vr:"IS",vm:"1",name:"Referenced Channel Shield Number",retired:""},"0x30080160":{keyword:"BrachyControlPointDeliveredSequence",vr:"SQ",vm:"1",name:"Brachy Control Point Delivered Sequence",retired:""},"0x30080162":{keyword:"SafePositionExitDate",vr:"DA",vm:"1",name:"Safe Position Exit Date",retired:""},"0x30080164":{keyword:"SafePositionExitTime",vr:"TM",vm:"1",name:"Safe Position Exit Time",retired:""},"0x30080166":{keyword:"SafePositionReturnDate",vr:"DA",vm:"1",name:"Safe Position Return Date",retired:""},"0x30080168":{keyword:"SafePositionReturnTime",vr:"TM",vm:"1",name:"Safe Position Return Time",retired:""},"0x30080171":{keyword:"PulseSpecificBrachyControlPointDeliveredSequence",vr:"SQ",vm:"1",name:"Pulse Specific Brachy Control Point Delivered Sequence",retired:""},"0x30080172":{keyword:"PulseNumber",vr:"US",vm:"1",name:"Pulse Number",retired:""},"0x30080173":{keyword:"BrachyPulseControlPointDeliveredSequence",vr:"SQ",vm:"1",name:"Brachy Pulse Control Point Delivered Sequence",retired:""},"0x30080200":{keyword:"CurrentTreatmentStatus",vr:"CS",vm:"1",name:"Current Treatment Status",retired:""},"0x30080202":{keyword:"TreatmentStatusComment",vr:"ST",vm:"1",name:"Treatment Status Comment",retired:""},"0x30080220":{keyword:"FractionGroupSummarySequence",vr:"SQ",vm:"1",name:"Fraction Group Summary Sequence",retired:""},"0x30080223":{keyword:"ReferencedFractionNumber",vr:"IS",vm:"1",name:"Referenced Fraction Number",retired:""},"0x30080224":{keyword:"FractionGroupType",vr:"CS",vm:"1",name:"Fraction Group Type",retired:""},"0x30080230":{keyword:"BeamStopperPosition",vr:"CS",vm:"1",name:"Beam Stopper Position",retired:""},"0x30080240":{keyword:"FractionStatusSummarySequence",vr:"SQ",vm:"1",name:"Fraction Status Summary Sequence",retired:""},"0x30080250":{keyword:"TreatmentDate",vr:"DA",vm:"1",name:"Treatment Date",retired:""},"0x30080251":{keyword:"TreatmentTime",vr:"TM",vm:"1",name:"Treatment Time",retired:""},"0x300A0002":{keyword:"RTPlanLabel",vr:"SH",vm:"1",name:"RT Plan Label",retired:""},"0x300A0003":{keyword:"RTPlanName",vr:"LO",vm:"1",name:"RT Plan Name",retired:""},"0x300A0004":{keyword:"RTPlanDescription",vr:"ST",vm:"1",name:"RT Plan Description",retired:""},"0x300A0006":{keyword:"RTPlanDate",vr:"DA",vm:"1",name:"RT Plan Date",retired:""},"0x300A0007":{keyword:"RTPlanTime",vr:"TM",vm:"1",name:"RT Plan Time",retired:""},"0x300A0009":{keyword:"TreatmentProtocols",vr:"LO",vm:"1-n",name:"Treatment Protocols",retired:""},"0x300A000A":{keyword:"PlanIntent",vr:"CS",vm:"1",name:"Plan Intent",retired:""},"0x300A000B":{keyword:"TreatmentSites",vr:"LO",vm:"1-n",name:"Treatment Sites",retired:"Retired"},"0x300A000C":{keyword:"RTPlanGeometry",vr:"CS",vm:"1",name:"RT Plan Geometry",retired:""},"0x300A000E":{keyword:"PrescriptionDescription",vr:"ST",vm:"1",name:"Prescription Description",retired:""},"0x300A0010":{keyword:"DoseReferenceSequence",vr:"SQ",vm:"1",name:"Dose Reference Sequence",retired:""},"0x300A0012":{keyword:"DoseReferenceNumber",vr:"IS",vm:"1",name:"Dose Reference Number",retired:""},"0x300A0013":{keyword:"DoseReferenceUID",vr:"UI",vm:"1",name:"Dose Reference UID",retired:""},"0x300A0014":{keyword:"DoseReferenceStructureType",vr:"CS",vm:"1",name:"Dose Reference Structure Type",retired:""},"0x300A0015":{keyword:"NominalBeamEnergyUnit",vr:"CS",vm:"1",name:"Nominal Beam Energy Unit",retired:""},"0x300A0016":{keyword:"DoseReferenceDescription",vr:"LO",vm:"1",name:"Dose Reference Description",retired:""},"0x300A0018":{keyword:"DoseReferencePointCoordinates",vr:"DS",vm:"3",name:"Dose Reference Point Coordinates",retired:""},"0x300A001A":{keyword:"NominalPriorDose",vr:"DS",vm:"1",name:"Nominal Prior Dose",retired:""},"0x300A0020":{keyword:"DoseReferenceType",vr:"CS",vm:"1",name:"Dose Reference Type",retired:""},"0x300A0021":{keyword:"ConstraintWeight",vr:"DS",vm:"1",name:"Constraint Weight",retired:""},"0x300A0022":{keyword:"DeliveryWarningDose",vr:"DS",vm:"1",name:"Delivery Warning Dose",retired:""},"0x300A0023":{keyword:"DeliveryMaximumDose",vr:"DS",vm:"1",name:"Delivery Maximum Dose",retired:""},"0x300A0025":{keyword:"TargetMinimumDose",vr:"DS",vm:"1",name:"Target Minimum Dose",retired:""},"0x300A0026":{keyword:"TargetPrescriptionDose",vr:"DS",vm:"1",name:"Target Prescription Dose",retired:""},"0x300A0027":{keyword:"TargetMaximumDose",vr:"DS",vm:"1",name:"Target Maximum Dose",retired:""},"0x300A0028":{keyword:"TargetUnderdoseVolumeFraction",vr:"DS",vm:"1",name:"Target Underdose Volume Fraction",retired:""},"0x300A002A":{keyword:"OrganAtRiskFullVolumeDose",vr:"DS",vm:"1",name:"Organ at Risk Full-volume Dose",retired:""},"0x300A002B":{keyword:"OrganAtRiskLimitDose",vr:"DS",vm:"1",name:"Organ at Risk Limit Dose",retired:""},"0x300A002C":{keyword:"OrganAtRiskMaximumDose",vr:"DS",vm:"1",name:"Organ at Risk Maximum Dose",retired:""},"0x300A002D":{keyword:"OrganAtRiskOverdoseVolumeFraction",vr:"DS",vm:"1",name:"Organ at Risk Overdose Volume Fraction",retired:""},"0x300A0040":{keyword:"ToleranceTableSequence",vr:"SQ",vm:"1",name:"Tolerance Table Sequence",retired:""},"0x300A0042":{keyword:"ToleranceTableNumber",vr:"IS",vm:"1",name:"Tolerance Table Number",retired:""},"0x300A0043":{keyword:"ToleranceTableLabel",vr:"SH",vm:"1",name:"Tolerance Table Label",retired:""},"0x300A0044":{keyword:"GantryAngleTolerance",vr:"DS",vm:"1",name:"Gantry Angle Tolerance",retired:""},"0x300A0046":{keyword:"BeamLimitingDeviceAngleTolerance",vr:"DS",vm:"1",name:"Beam Limiting Device Angle Tolerance",retired:""},"0x300A0048":{keyword:"BeamLimitingDeviceToleranceSequence",vr:"SQ",vm:"1",name:"Beam Limiting Device Tolerance Sequence",retired:""},"0x300A004A":{keyword:"BeamLimitingDevicePositionTolerance",vr:"DS",vm:"1",name:"Beam Limiting Device Position Tolerance",retired:""},"0x300A004B":{keyword:"SnoutPositionTolerance",vr:"FL",vm:"1",name:"Snout Position Tolerance",retired:""},"0x300A004C":{keyword:"PatientSupportAngleTolerance",vr:"DS",vm:"1",name:"Patient Support Angle Tolerance",retired:""},"0x300A004E":{keyword:"TableTopEccentricAngleTolerance",vr:"DS",vm:"1",name:"Table Top Eccentric Angle Tolerance",retired:""},"0x300A004F":{keyword:"TableTopPitchAngleTolerance",vr:"FL",vm:"1",name:"Table Top Pitch Angle Tolerance",retired:""},"0x300A0050":{keyword:"TableTopRollAngleTolerance",vr:"FL",vm:"1",name:"Table Top Roll Angle Tolerance",retired:""},"0x300A0051":{keyword:"TableTopVerticalPositionTolerance",vr:"DS",vm:"1",name:"Table Top Vertical Position Tolerance",retired:""},"0x300A0052":{keyword:"TableTopLongitudinalPositionTolerance",vr:"DS",vm:"1",name:"Table Top Longitudinal Position Tolerance",retired:""},"0x300A0053":{keyword:"TableTopLateralPositionTolerance",vr:"DS",vm:"1",name:"Table Top Lateral Position Tolerance",retired:""},"0x300A0055":{keyword:"RTPlanRelationship",vr:"CS",vm:"1",name:"RT Plan Relationship",retired:""},"0x300A0070":{keyword:"FractionGroupSequence",vr:"SQ",vm:"1",name:"Fraction Group Sequence",retired:""},"0x300A0071":{keyword:"FractionGroupNumber",vr:"IS",vm:"1",name:"Fraction Group Number",retired:""},"0x300A0072":{keyword:"FractionGroupDescription",vr:"LO",vm:"1",name:"Fraction Group Description",retired:""},"0x300A0078":{keyword:"NumberOfFractionsPlanned",vr:"IS",vm:"1",name:"Number of Fractions Planned",retired:""},"0x300A0079":{keyword:"NumberOfFractionPatternDigitsPerDay",vr:"IS",vm:"1",name:"Number of Fraction Pattern Digits Per Day",retired:""},"0x300A007A":{keyword:"RepeatFractionCycleLength",vr:"IS",vm:"1",name:"Repeat Fraction Cycle Length",retired:""},"0x300A007B":{keyword:"FractionPattern",vr:"LT",vm:"1",name:"Fraction Pattern",retired:""},"0x300A0080":{keyword:"NumberOfBeams",vr:"IS",vm:"1",name:"Number of Beams",retired:""},"0x300A0082":{keyword:"BeamDoseSpecificationPoint",vr:"DS",vm:"3",name:"Beam Dose Specification Point",retired:"Retired"},"0x300A0083":{keyword:"ReferencedDoseReferenceUID",vr:"UI",vm:"1",name:"Referenced Dose Reference UID",retired:""},"0x300A0084":{keyword:"BeamDose",vr:"DS",vm:"1",name:"Beam Dose",retired:""},"0x300A0086":{keyword:"BeamMeterset",vr:"DS",vm:"1",name:"Beam Meterset",retired:""},"0x300A0088":{keyword:"BeamDosePointDepth",vr:"FL",vm:"1",name:"Beam Dose Point Depth",retired:""},"0x300A0089":{keyword:"BeamDosePointEquivalentDepth",vr:"FL",vm:"1",name:"Beam Dose Point Equivalent Depth",retired:""},"0x300A008A":{keyword:"BeamDosePointSSD",vr:"FL",vm:"1",name:"Beam Dose Point SSD",retired:""},"0x300A008B":{keyword:"BeamDoseMeaning",vr:"CS",vm:"1",name:"Beam Dose Meaning",retired:""},"0x300A008C":{keyword:"BeamDoseVerificationControlPointSequence",vr:"SQ",vm:"1",name:"Beam Dose Verification Control Point Sequence",retired:""},"0x300A008D":{keyword:"AverageBeamDosePointDepth",vr:"FL",vm:"1",name:"Average Beam Dose Point Depth",retired:"Retired"},"0x300A008E":{keyword:"AverageBeamDosePointEquivalentDepth",vr:"FL",vm:"1",name:"Average Beam Dose Point Equivalent Depth",retired:"Retired"},"0x300A008F":{keyword:"AverageBeamDosePointSSD",vr:"FL",vm:"1",name:"Average Beam Dose Point SSD",retired:"Retired"},"0x300A0090":{keyword:"BeamDoseType",vr:"CS",vm:"1",name:"Beam Dose Type",retired:""},"0x300A0091":{keyword:"AlternateBeamDose",vr:"DS",vm:"1",name:"Alternate Beam Dose",retired:""},"0x300A0092":{keyword:"AlternateBeamDoseType",vr:"CS",vm:"1",name:"Alternate Beam Dose Type",retired:""},"0x300A0093":{keyword:"DepthValueAveragingFlag",vr:"CS",vm:"1",name:"Depth Value Averaging Flag",retired:""},"0x300A0094":{keyword:"BeamDosePointSourceToExternalContourDistance",vr:"DS",vm:"1",name:"Beam Dose Point Source to External Contour Distance",retired:""},"0x300A00A0":{keyword:"NumberOfBrachyApplicationSetups",vr:"IS",vm:"1",name:"Number of Brachy Application Setups",retired:""},"0x300A00A2":{keyword:"BrachyApplicationSetupDoseSpecificationPoint",vr:"DS",vm:"3",name:"Brachy Application Setup Dose Specification Point",retired:""},"0x300A00A4":{keyword:"BrachyApplicationSetupDose",vr:"DS",vm:"1",name:"Brachy Application Setup Dose",retired:""},"0x300A00B0":{keyword:"BeamSequence",vr:"SQ",vm:"1",name:"Beam Sequence",retired:""},"0x300A00B2":{keyword:"TreatmentMachineName",vr:"SH",vm:"1",name:"Treatment Machine Name",retired:""},"0x300A00B3":{keyword:"PrimaryDosimeterUnit",vr:"CS",vm:"1",name:"Primary Dosimeter Unit",retired:""},"0x300A00B4":{keyword:"SourceAxisDistance",vr:"DS",vm:"1",name:"Source-Axis Distance",retired:""},"0x300A00B6":{keyword:"BeamLimitingDeviceSequence",vr:"SQ",vm:"1",name:"Beam Limiting Device Sequence",retired:""},"0x300A00B8":{keyword:"RTBeamLimitingDeviceType",vr:"CS",vm:"1",name:"RT Beam Limiting Device Type",retired:""},"0x300A00BA":{keyword:"SourceToBeamLimitingDeviceDistance",vr:"DS",vm:"1",name:"Source to Beam Limiting Device Distance",retired:""},"0x300A00BB":{keyword:"IsocenterToBeamLimitingDeviceDistance",vr:"FL",vm:"1",name:"Isocenter to Beam Limiting Device Distance",retired:""},"0x300A00BC":{keyword:"NumberOfLeafJawPairs",vr:"IS",vm:"1",name:"Number of Leaf/Jaw Pairs",retired:""},"0x300A00BE":{keyword:"LeafPositionBoundaries",vr:"DS",vm:"3-n",name:"Leaf Position Boundaries",retired:""},"0x300A00C0":{keyword:"BeamNumber",vr:"IS",vm:"1",name:"Beam Number",retired:""},"0x300A00C2":{keyword:"BeamName",vr:"LO",vm:"1",name:"Beam Name",retired:""},"0x300A00C3":{keyword:"BeamDescription",vr:"ST",vm:"1",name:"Beam Description",retired:""},"0x300A00C4":{keyword:"BeamType",vr:"CS",vm:"1",name:"Beam Type",retired:""},"0x300A00C5":{keyword:"BeamDeliveryDurationLimit",vr:"FD",vm:"1",name:"Beam Delivery Duration Limit",retired:""},"0x300A00C6":{keyword:"RadiationType",vr:"CS",vm:"1",name:"Radiation Type",retired:""},"0x300A00C7":{keyword:"HighDoseTechniqueType",vr:"CS",vm:"1",name:"High-Dose Technique Type",retired:""},"0x300A00C8":{keyword:"ReferenceImageNumber",vr:"IS",vm:"1",name:"Reference Image Number",retired:""},"0x300A00CA":{keyword:"PlannedVerificationImageSequence",vr:"SQ",vm:"1",name:"Planned Verification Image Sequence",retired:""},"0x300A00CC":{keyword:"ImagingDeviceSpecificAcquisitionParameters",vr:"LO",vm:"1-n",name:"Imaging Device-Specific Acquisition Parameters",retired:""},"0x300A00CE":{keyword:"TreatmentDeliveryType",vr:"CS",vm:"1",name:"Treatment Delivery Type",retired:""},"0x300A00D0":{keyword:"NumberOfWedges",vr:"IS",vm:"1",name:"Number of Wedges",retired:""},"0x300A00D1":{keyword:"WedgeSequence",vr:"SQ",vm:"1",name:"Wedge Sequence",retired:""},"0x300A00D2":{keyword:"WedgeNumber",vr:"IS",vm:"1",name:"Wedge Number",retired:""},"0x300A00D3":{keyword:"WedgeType",vr:"CS",vm:"1",name:"Wedge Type",retired:""},"0x300A00D4":{keyword:"WedgeID",vr:"SH",vm:"1",name:"Wedge ID",retired:""},"0x300A00D5":{keyword:"WedgeAngle",vr:"IS",vm:"1",name:"Wedge Angle",retired:""},"0x300A00D6":{keyword:"WedgeFactor",vr:"DS",vm:"1",name:"Wedge Factor",retired:""},"0x300A00D7":{keyword:"TotalWedgeTrayWaterEquivalentThickness",vr:"FL",vm:"1",name:"Total Wedge Tray Water-Equivalent Thickness",retired:""},"0x300A00D8":{keyword:"WedgeOrientation",vr:"DS",vm:"1",name:"Wedge Orientation",retired:""},"0x300A00D9":{keyword:"IsocenterToWedgeTrayDistance",vr:"FL",vm:"1",name:"Isocenter to Wedge Tray Distance",retired:""},"0x300A00DA":{keyword:"SourceToWedgeTrayDistance",vr:"DS",vm:"1",name:"Source to Wedge Tray Distance",retired:""},"0x300A00DB":{keyword:"WedgeThinEdgePosition",vr:"FL",vm:"1",name:"Wedge Thin Edge Position",retired:""},"0x300A00DC":{keyword:"BolusID",vr:"SH",vm:"1",name:"Bolus ID",retired:""},"0x300A00DD":{keyword:"BolusDescription",vr:"ST",vm:"1",name:"Bolus Description",retired:""},"0x300A00DE":{keyword:"EffectiveWedgeAngle",vr:"DS",vm:"1",name:"Effective Wedge Angle",retired:""},"0x300A00E0":{keyword:"NumberOfCompensators",vr:"IS",vm:"1",name:"Number of Compensators",retired:""},"0x300A00E1":{keyword:"MaterialID",vr:"SH",vm:"1",name:"Material ID",retired:""},"0x300A00E2":{keyword:"TotalCompensatorTrayFactor",vr:"DS",vm:"1",name:"Total Compensator Tray Factor",retired:""},"0x300A00E3":{keyword:"CompensatorSequence",vr:"SQ",vm:"1",name:"Compensator Sequence",retired:""},"0x300A00E4":{keyword:"CompensatorNumber",vr:"IS",vm:"1",name:"Compensator Number",retired:""},"0x300A00E5":{keyword:"CompensatorID",vr:"SH",vm:"1",name:"Compensator ID",retired:""},"0x300A00E6":{keyword:"SourceToCompensatorTrayDistance",vr:"DS",vm:"1",name:"Source to Compensator Tray Distance",retired:""},"0x300A00E7":{keyword:"CompensatorRows",vr:"IS",vm:"1",name:"Compensator Rows",retired:""},"0x300A00E8":{keyword:"CompensatorColumns",vr:"IS",vm:"1",name:"Compensator Columns",retired:""},"0x300A00E9":{keyword:"CompensatorPixelSpacing",vr:"DS",vm:"2",name:"Compensator Pixel Spacing",retired:""},"0x300A00EA":{keyword:"CompensatorPosition",vr:"DS",vm:"2",name:"Compensator Position",retired:""},"0x300A00EB":{keyword:"CompensatorTransmissionData",vr:"DS",vm:"1-n",name:"Compensator Transmission Data",retired:""},"0x300A00EC":{keyword:"CompensatorThicknessData",vr:"DS",vm:"1-n",name:"Compensator Thickness Data",retired:""},"0x300A00ED":{keyword:"NumberOfBoli",vr:"IS",vm:"1",name:"Number of Boli",retired:""},"0x300A00EE":{keyword:"CompensatorType",vr:"CS",vm:"1",name:"Compensator Type",retired:""},"0x300A00EF":{keyword:"CompensatorTrayID",vr:"SH",vm:"1",name:"Compensator Tray ID",retired:""},"0x300A00F0":{keyword:"NumberOfBlocks",vr:"IS",vm:"1",name:"Number of Blocks",retired:""},"0x300A00F2":{keyword:"TotalBlockTrayFactor",vr:"DS",vm:"1",name:"Total Block Tray Factor",retired:""},"0x300A00F3":{keyword:"TotalBlockTrayWaterEquivalentThickness",vr:"FL",vm:"1",name:"Total Block Tray Water-Equivalent Thickness",retired:""},"0x300A00F4":{keyword:"BlockSequence",vr:"SQ",vm:"1",name:"Block Sequence",retired:""},"0x300A00F5":{keyword:"BlockTrayID",vr:"SH",vm:"1",name:"Block Tray ID",retired:""},"0x300A00F6":{keyword:"SourceToBlockTrayDistance",vr:"DS",vm:"1",name:"Source to Block Tray Distance",retired:""},"0x300A00F7":{keyword:"IsocenterToBlockTrayDistance",vr:"FL",vm:"1",name:"Isocenter to Block Tray Distance",retired:""},"0x300A00F8":{keyword:"BlockType",vr:"CS",vm:"1",name:"Block Type",retired:""},"0x300A00F9":{keyword:"AccessoryCode",vr:"LO",vm:"1",name:"Accessory Code",retired:""},"0x300A00FA":{keyword:"BlockDivergence",vr:"CS",vm:"1",name:"Block Divergence",retired:""},"0x300A00FB":{keyword:"BlockMountingPosition",vr:"CS",vm:"1",name:"Block Mounting Position",retired:""},"0x300A00FC":{keyword:"BlockNumber",vr:"IS",vm:"1",name:"Block Number",retired:""},"0x300A00FE":{keyword:"BlockName",vr:"LO",vm:"1",name:"Block Name",retired:""},"0x300A0100":{keyword:"BlockThickness",vr:"DS",vm:"1",name:"Block Thickness",retired:""},"0x300A0102":{keyword:"BlockTransmission",vr:"DS",vm:"1",name:"Block Transmission",retired:""},"0x300A0104":{keyword:"BlockNumberOfPoints",vr:"IS",vm:"1",name:"Block Number of Points",retired:""},"0x300A0106":{keyword:"BlockData",vr:"DS",vm:"2-2n",name:"Block Data",retired:""},"0x300A0107":{keyword:"ApplicatorSequence",vr:"SQ",vm:"1",name:"Applicator Sequence",retired:""},"0x300A0108":{keyword:"ApplicatorID",vr:"SH",vm:"1",name:"Applicator ID",retired:""},"0x300A0109":{keyword:"ApplicatorType",vr:"CS",vm:"1",name:"Applicator Type",retired:""},"0x300A010A":{keyword:"ApplicatorDescription",vr:"LO",vm:"1",name:"Applicator Description",retired:""},"0x300A010C":{keyword:"CumulativeDoseReferenceCoefficient",vr:"DS",vm:"1",name:"Cumulative Dose Reference Coefficient",retired:""},"0x300A010E":{keyword:"FinalCumulativeMetersetWeight",vr:"DS",vm:"1",name:"Final Cumulative Meterset Weight",retired:""},"0x300A0110":{keyword:"NumberOfControlPoints",vr:"IS",vm:"1",name:"Number of Control Points",retired:""},"0x300A0111":{keyword:"ControlPointSequence",vr:"SQ",vm:"1",name:"Control Point Sequence",retired:""},"0x300A0112":{keyword:"ControlPointIndex",vr:"IS",vm:"1",name:"Control Point Index",retired:""},"0x300A0114":{keyword:"NominalBeamEnergy",vr:"DS",vm:"1",name:"Nominal Beam Energy",retired:""},"0x300A0115":{keyword:"DoseRateSet",vr:"DS",vm:"1",name:"Dose Rate Set",retired:""},"0x300A0116":{keyword:"WedgePositionSequence",vr:"SQ",vm:"1",name:"Wedge Position Sequence",retired:""},"0x300A0118":{keyword:"WedgePosition",vr:"CS",vm:"1",name:"Wedge Position",retired:""},"0x300A011A":{keyword:"BeamLimitingDevicePositionSequence",vr:"SQ",vm:"1",name:"Beam Limiting Device Position Sequence",retired:""},"0x300A011C":{keyword:"LeafJawPositions",vr:"DS",vm:"2-2n",name:"Leaf/Jaw Positions",retired:""},"0x300A011E":{keyword:"GantryAngle",vr:"DS",vm:"1",name:"Gantry Angle",retired:""},"0x300A011F":{keyword:"GantryRotationDirection",vr:"CS",vm:"1",name:"Gantry Rotation Direction",retired:""},"0x300A0120":{keyword:"BeamLimitingDeviceAngle",vr:"DS",vm:"1",name:"Beam Limiting Device Angle",retired:""},"0x300A0121":{keyword:"BeamLimitingDeviceRotationDirection",vr:"CS",vm:"1",name:"Beam Limiting Device Rotation Direction",retired:""},"0x300A0122":{keyword:"PatientSupportAngle",vr:"DS",vm:"1",name:"Patient Support Angle",retired:""},"0x300A0123":{keyword:"PatientSupportRotationDirection",vr:"CS",vm:"1",name:"Patient Support Rotation Direction",retired:""},"0x300A0124":{keyword:"TableTopEccentricAxisDistance",vr:"DS",vm:"1",name:"Table Top Eccentric Axis Distance",retired:""},"0x300A0125":{keyword:"TableTopEccentricAngle",vr:"DS",vm:"1",name:"Table Top Eccentric Angle",retired:""},"0x300A0126":{keyword:"TableTopEccentricRotationDirection",vr:"CS",vm:"1",name:"Table Top Eccentric Rotation Direction",retired:""},"0x300A0128":{keyword:"TableTopVerticalPosition",vr:"DS",vm:"1",name:"Table Top Vertical Position",retired:""},"0x300A0129":{keyword:"TableTopLongitudinalPosition",vr:"DS",vm:"1",name:"Table Top Longitudinal Position",retired:""},"0x300A012A":{keyword:"TableTopLateralPosition",vr:"DS",vm:"1",name:"Table Top Lateral Position",retired:""},"0x300A012C":{keyword:"IsocenterPosition",vr:"DS",vm:"3",name:"Isocenter Position",retired:""},"0x300A012E":{keyword:"SurfaceEntryPoint",vr:"DS",vm:"3",name:"Surface Entry Point",retired:""},"0x300A0130":{keyword:"SourceToSurfaceDistance",vr:"DS",vm:"1",name:"Source to Surface Distance",retired:""},"0x300A0131":{keyword:"AverageBeamDosePointSourceToExternalContourDistance",vr:"FL",vm:"1",name:"Average Beam Dose Point Source to External Contour Distance",retired:""},"0x300A0132":{keyword:"SourceToExternalContourDistance",vr:"FL",vm:"1",name:"Source to External Contour Distance",retired:""},"0x300A0133":{keyword:"ExternalContourEntryPoint",vr:"FL",vm:"3",name:"External Contour Entry Point",retired:""},"0x300A0134":{keyword:"CumulativeMetersetWeight",vr:"DS",vm:"1",name:"Cumulative Meterset Weight",retired:""},"0x300A0140":{keyword:"TableTopPitchAngle",vr:"FL",vm:"1",name:"Table Top Pitch Angle",retired:""},"0x300A0142":{keyword:"TableTopPitchRotationDirection",vr:"CS",vm:"1",name:"Table Top Pitch Rotation Direction",retired:""},"0x300A0144":{keyword:"TableTopRollAngle",vr:"FL",vm:"1",name:"Table Top Roll Angle",retired:""},"0x300A0146":{keyword:"TableTopRollRotationDirection",vr:"CS",vm:"1",name:"Table Top Roll Rotation Direction",retired:""},"0x300A0148":{keyword:"HeadFixationAngle",vr:"FL",vm:"1",name:"Head Fixation Angle",retired:""},"0x300A014A":{keyword:"GantryPitchAngle",vr:"FL",vm:"1",name:"Gantry Pitch Angle",retired:""},"0x300A014C":{keyword:"GantryPitchRotationDirection",vr:"CS",vm:"1",name:"Gantry Pitch Rotation Direction",retired:""},"0x300A014E":{keyword:"GantryPitchAngleTolerance",vr:"FL",vm:"1",name:"Gantry Pitch Angle Tolerance",retired:""},"0x300A0150":{keyword:"FixationEye",vr:"CS",vm:"1",name:"Fixation Eye",retired:""},"0x300A0151":{keyword:"ChairHeadFramePosition",vr:"DS",vm:"1",name:"Chair Head Frame Position",retired:""},"0x300A0152":{keyword:"HeadFixationAngleTolerance",vr:"DS",vm:"1",name:"Head Fixation Angle Tolerance",retired:""},"0x300A0153":{keyword:"ChairHeadFramePositionTolerance",vr:"DS",vm:"1",name:"Chair Head Frame Position Tolerance",retired:""},"0x300A0154":{keyword:"FixationLightAzimuthalAngleTolerance",vr:"DS",vm:"1",name:"Fixation Light Azimuthal Angle Tolerance",retired:""},"0x300A0155":{keyword:"FixationLightPolarAngleTolerance",vr:"DS",vm:"1",name:"Fixation Light Polar Angle Tolerance",retired:""},"0x300A0180":{keyword:"PatientSetupSequence",vr:"SQ",vm:"1",name:"Patient Setup Sequence",retired:""},"0x300A0182":{keyword:"PatientSetupNumber",vr:"IS",vm:"1",name:"Patient Setup Number",retired:""},"0x300A0183":{keyword:"PatientSetupLabel",vr:"LO",vm:"1",name:"Patient Setup Label",retired:""},"0x300A0184":{keyword:"PatientAdditionalPosition",vr:"LO",vm:"1",name:"Patient Additional Position",retired:""},"0x300A0190":{keyword:"FixationDeviceSequence",vr:"SQ",vm:"1",name:"Fixation Device Sequence",retired:""},"0x300A0192":{keyword:"FixationDeviceType",vr:"CS",vm:"1",name:"Fixation Device Type",retired:""},"0x300A0194":{keyword:"FixationDeviceLabel",vr:"SH",vm:"1",name:"Fixation Device Label",retired:""},"0x300A0196":{keyword:"FixationDeviceDescription",vr:"ST",vm:"1",name:"Fixation Device Description",retired:""},"0x300A0198":{keyword:"FixationDevicePosition",vr:"SH",vm:"1",name:"Fixation Device Position",retired:""},"0x300A0199":{keyword:"FixationDevicePitchAngle",vr:"FL",vm:"1",name:"Fixation Device Pitch Angle",retired:""},"0x300A019A":{keyword:"FixationDeviceRollAngle",vr:"FL",vm:"1",name:"Fixation Device Roll Angle",retired:""},"0x300A01A0":{keyword:"ShieldingDeviceSequence",vr:"SQ",vm:"1",name:"Shielding Device Sequence",retired:""},"0x300A01A2":{keyword:"ShieldingDeviceType",vr:"CS",vm:"1",name:"Shielding Device Type",retired:""},"0x300A01A4":{keyword:"ShieldingDeviceLabel",vr:"SH",vm:"1",name:"Shielding Device Label",retired:""},"0x300A01A6":{keyword:"ShieldingDeviceDescription",vr:"ST",vm:"1",name:"Shielding Device Description",retired:""},"0x300A01A8":{keyword:"ShieldingDevicePosition",vr:"SH",vm:"1",name:"Shielding Device Position",retired:""},"0x300A01B0":{keyword:"SetupTechnique",vr:"CS",vm:"1",name:"Setup Technique",retired:""},"0x300A01B2":{keyword:"SetupTechniqueDescription",vr:"ST",vm:"1",name:"Setup Technique Description",retired:""},"0x300A01B4":{keyword:"SetupDeviceSequence",vr:"SQ",vm:"1",name:"Setup Device Sequence",retired:""},"0x300A01B6":{keyword:"SetupDeviceType",vr:"CS",vm:"1",name:"Setup Device Type",retired:""},"0x300A01B8":{keyword:"SetupDeviceLabel",vr:"SH",vm:"1",name:"Setup Device Label",retired:""},"0x300A01BA":{keyword:"SetupDeviceDescription",vr:"ST",vm:"1",name:"Setup Device Description",retired:""},"0x300A01BC":{keyword:"SetupDeviceParameter",vr:"DS",vm:"1",name:"Setup Device Parameter",retired:""},"0x300A01D0":{keyword:"SetupReferenceDescription",vr:"ST",vm:"1",name:"Setup Reference Description",retired:""},"0x300A01D2":{keyword:"TableTopVerticalSetupDisplacement",vr:"DS",vm:"1",name:"Table Top Vertical Setup Displacement",retired:""},"0x300A01D4":{keyword:"TableTopLongitudinalSetupDisplacement",vr:"DS",vm:"1",name:"Table Top Longitudinal Setup Displacement",retired:""},"0x300A01D6":{keyword:"TableTopLateralSetupDisplacement",vr:"DS",vm:"1",name:"Table Top Lateral Setup Displacement",retired:""},"0x300A0200":{keyword:"BrachyTreatmentTechnique",vr:"CS",vm:"1",name:"Brachy Treatment Technique",retired:""},"0x300A0202":{keyword:"BrachyTreatmentType",vr:"CS",vm:"1",name:"Brachy Treatment Type",retired:""},"0x300A0206":{keyword:"TreatmentMachineSequence",vr:"SQ",vm:"1",name:"Treatment Machine Sequence",retired:""},"0x300A0210":{keyword:"SourceSequence",vr:"SQ",vm:"1",name:"Source Sequence",retired:""},"0x300A0212":{keyword:"SourceNumber",vr:"IS",vm:"1",name:"Source Number",retired:""},"0x300A0214":{keyword:"SourceType",vr:"CS",vm:"1",name:"Source Type",retired:""},"0x300A0216":{keyword:"SourceManufacturer",vr:"LO",vm:"1",name:"Source Manufacturer",retired:""},"0x300A0218":{keyword:"ActiveSourceDiameter",vr:"DS",vm:"1",name:"Active Source Diameter",retired:""},"0x300A021A":{keyword:"ActiveSourceLength",vr:"DS",vm:"1",name:"Active Source Length",retired:""},"0x300A021B":{keyword:"SourceModelID",vr:"SH",vm:"1",name:"Source Model ID",retired:""},"0x300A021C":{keyword:"SourceDescription",vr:"LO",vm:"1",name:"Source Description",retired:""},"0x300A0222":{keyword:"SourceEncapsulationNominalThickness",vr:"DS",vm:"1",name:"Source Encapsulation Nominal Thickness",retired:""},"0x300A0224":{keyword:"SourceEncapsulationNominalTransmission",vr:"DS",vm:"1",name:"Source Encapsulation Nominal Transmission",retired:""},"0x300A0226":{keyword:"SourceIsotopeName",vr:"LO",vm:"1",name:"Source Isotope Name",retired:""},"0x300A0228":{keyword:"SourceIsotopeHalfLife",vr:"DS",vm:"1",name:"Source Isotope Half Life",retired:""},"0x300A0229":{keyword:"SourceStrengthUnits",vr:"CS",vm:"1",name:"Source Strength Units",retired:""},"0x300A022A":{keyword:"ReferenceAirKermaRate",vr:"DS",vm:"1",name:"Reference Air Kerma Rate",retired:""},"0x300A022B":{keyword:"SourceStrength",vr:"DS",vm:"1",name:"Source Strength",retired:""},"0x300A022C":{keyword:"SourceStrengthReferenceDate",vr:"DA",vm:"1",name:"Source Strength Reference Date",retired:""},"0x300A022E":{keyword:"SourceStrengthReferenceTime",vr:"TM",vm:"1",name:"Source Strength Reference Time",retired:""},"0x300A0230":{keyword:"ApplicationSetupSequence",vr:"SQ",vm:"1",name:"Application Setup Sequence",retired:""},"0x300A0232":{keyword:"ApplicationSetupType",vr:"CS",vm:"1",name:"Application Setup Type",retired:""},"0x300A0234":{keyword:"ApplicationSetupNumber",vr:"IS",vm:"1",name:"Application Setup Number",retired:""},"0x300A0236":{keyword:"ApplicationSetupName",vr:"LO",vm:"1",name:"Application Setup Name",retired:""},"0x300A0238":{keyword:"ApplicationSetupManufacturer",vr:"LO",vm:"1",name:"Application Setup Manufacturer",retired:""},"0x300A0240":{keyword:"TemplateNumber",vr:"IS",vm:"1",name:"Template Number",retired:""},"0x300A0242":{keyword:"TemplateType",vr:"SH",vm:"1",name:"Template Type",retired:""},"0x300A0244":{keyword:"TemplateName",vr:"LO",vm:"1",name:"Template Name",retired:""},"0x300A0250":{keyword:"TotalReferenceAirKerma",vr:"DS",vm:"1",name:"Total Reference Air Kerma",retired:""},"0x300A0260":{keyword:"BrachyAccessoryDeviceSequence",vr:"SQ",vm:"1",name:"Brachy Accessory Device Sequence",retired:""},"0x300A0262":{keyword:"BrachyAccessoryDeviceNumber",vr:"IS",vm:"1",name:"Brachy Accessory Device Number",retired:""},"0x300A0263":{keyword:"BrachyAccessoryDeviceID",vr:"SH",vm:"1",name:"Brachy Accessory Device ID",retired:""},"0x300A0264":{keyword:"BrachyAccessoryDeviceType",vr:"CS",vm:"1",name:"Brachy Accessory Device Type",retired:""},"0x300A0266":{keyword:"BrachyAccessoryDeviceName",vr:"LO",vm:"1",name:"Brachy Accessory Device Name",retired:""},"0x300A026A":{keyword:"BrachyAccessoryDeviceNominalThickness",vr:"DS",vm:"1",name:"Brachy Accessory Device Nominal Thickness",retired:""},"0x300A026C":{keyword:"BrachyAccessoryDeviceNominalTransmission",vr:"DS",vm:"1",name:"Brachy Accessory Device Nominal Transmission",retired:""},"0x300A0271":{keyword:"ChannelEffectiveLength",vr:"DS",vm:"1",name:"Channel Effective Length",retired:""},"0x300A0272":{keyword:"ChannelInnerLength",vr:"DS",vm:"1",name:"Channel Inner Length",retired:""},"0x300A0273":{keyword:"AfterloaderChannelID",vr:"SH",vm:"1",name:"Afterloader Channel ID",retired:""},"0x300A0274":{keyword:"SourceApplicatorTipLength",vr:"DS",vm:"1",name:"Source Applicator Tip Length",retired:""},"0x300A0280":{keyword:"ChannelSequence",vr:"SQ",vm:"1",name:"Channel Sequence",retired:""},"0x300A0282":{keyword:"ChannelNumber",vr:"IS",vm:"1",name:"Channel Number",retired:""},"0x300A0284":{keyword:"ChannelLength",vr:"DS",vm:"1",name:"Channel Length",retired:""},"0x300A0286":{keyword:"ChannelTotalTime",vr:"DS",vm:"1",name:"Channel Total Time",retired:""},"0x300A0288":{keyword:"SourceMovementType",vr:"CS",vm:"1",name:"Source Movement Type",retired:""},"0x300A028A":{keyword:"NumberOfPulses",vr:"IS",vm:"1",name:"Number of Pulses",retired:""},"0x300A028C":{keyword:"PulseRepetitionInterval",vr:"DS",vm:"1",name:"Pulse Repetition Interval",retired:""},"0x300A0290":{keyword:"SourceApplicatorNumber",vr:"IS",vm:"1",name:"Source Applicator Number",retired:""},"0x300A0291":{keyword:"SourceApplicatorID",vr:"SH",vm:"1",name:"Source Applicator ID",retired:""},"0x300A0292":{keyword:"SourceApplicatorType",vr:"CS",vm:"1",name:"Source Applicator Type",retired:""},"0x300A0294":{keyword:"SourceApplicatorName",vr:"LO",vm:"1",name:"Source Applicator Name",retired:""},"0x300A0296":{keyword:"SourceApplicatorLength",vr:"DS",vm:"1",name:"Source Applicator Length",retired:""},"0x300A0298":{keyword:"SourceApplicatorManufacturer",vr:"LO",vm:"1",name:"Source Applicator Manufacturer",retired:""},"0x300A029C":{keyword:"SourceApplicatorWallNominalThickness",vr:"DS",vm:"1",name:"Source Applicator Wall Nominal Thickness",retired:""},"0x300A029E":{keyword:"SourceApplicatorWallNominalTransmission",vr:"DS",vm:"1",name:"Source Applicator Wall Nominal Transmission",retired:""},"0x300A02A0":{keyword:"SourceApplicatorStepSize",vr:"DS",vm:"1",name:"Source Applicator Step Size",retired:""},"0x300A02A1":{keyword:"ApplicatorShapeReferencedROINumber",vr:"IS",vm:"1",name:"Applicator Shape Referenced ROI Number",retired:""},"0x300A02A2":{keyword:"TransferTubeNumber",vr:"IS",vm:"1",name:"Transfer Tube Number",retired:""},"0x300A02A4":{keyword:"TransferTubeLength",vr:"DS",vm:"1",name:"Transfer Tube Length",retired:""},"0x300A02B0":{keyword:"ChannelShieldSequence",vr:"SQ",vm:"1",name:"Channel Shield Sequence",retired:""},"0x300A02B2":{keyword:"ChannelShieldNumber",vr:"IS",vm:"1",name:"Channel Shield Number",retired:""},"0x300A02B3":{keyword:"ChannelShieldID",vr:"SH",vm:"1",name:"Channel Shield ID",retired:""},"0x300A02B4":{keyword:"ChannelShieldName",vr:"LO",vm:"1",name:"Channel Shield Name",retired:""},"0x300A02B8":{keyword:"ChannelShieldNominalThickness",vr:"DS",vm:"1",name:"Channel Shield Nominal Thickness",retired:""},"0x300A02BA":{keyword:"ChannelShieldNominalTransmission",vr:"DS",vm:"1",name:"Channel Shield Nominal Transmission",retired:""},"0x300A02C8":{keyword:"FinalCumulativeTimeWeight",vr:"DS",vm:"1",name:"Final Cumulative Time Weight",retired:""},"0x300A02D0":{keyword:"BrachyControlPointSequence",vr:"SQ",vm:"1",name:"Brachy Control Point Sequence",retired:""},"0x300A02D2":{keyword:"ControlPointRelativePosition",vr:"DS",vm:"1",name:"Control Point Relative Position",retired:""},"0x300A02D4":{keyword:"ControlPoint3DPosition",vr:"DS",vm:"3",name:"Control Point 3D Position",retired:""},"0x300A02D6":{keyword:"CumulativeTimeWeight",vr:"DS",vm:"1",name:"Cumulative Time Weight",retired:""},"0x300A02E0":{keyword:"CompensatorDivergence",vr:"CS",vm:"1",name:"Compensator Divergence",retired:""},"0x300A02E1":{keyword:"CompensatorMountingPosition",vr:"CS",vm:"1",name:"Compensator Mounting Position",retired:""},"0x300A02E2":{keyword:"SourceToCompensatorDistance",vr:"DS",vm:"1-n",name:"Source to Compensator Distance",retired:""},"0x300A02E3":{keyword:"TotalCompensatorTrayWaterEquivalentThickness",vr:"FL",vm:"1",name:"Total Compensator Tray Water-Equivalent Thickness",retired:""},"0x300A02E4":{keyword:"IsocenterToCompensatorTrayDistance",vr:"FL",vm:"1",name:"Isocenter to Compensator Tray Distance",retired:""},"0x300A02E5":{keyword:"CompensatorColumnOffset",vr:"FL",vm:"1",name:"Compensator Column Offset",retired:""},"0x300A02E6":{keyword:"IsocenterToCompensatorDistances",vr:"FL",vm:"1-n",name:"Isocenter to Compensator Distances",retired:""},"0x300A02E7":{keyword:"CompensatorRelativeStoppingPowerRatio",vr:"FL",vm:"1",name:"Compensator Relative Stopping Power Ratio",retired:""},"0x300A02E8":{keyword:"CompensatorMillingToolDiameter",vr:"FL",vm:"1",name:"Compensator Milling Tool Diameter",retired:""},"0x300A02EA":{keyword:"IonRangeCompensatorSequence",vr:"SQ",vm:"1",name:"Ion Range Compensator Sequence",retired:""},"0x300A02EB":{keyword:"CompensatorDescription",vr:"LT",vm:"1",name:"Compensator Description",retired:""},"0x300A0302":{keyword:"RadiationMassNumber",vr:"IS",vm:"1",name:"Radiation Mass Number",retired:""},"0x300A0304":{keyword:"RadiationAtomicNumber",vr:"IS",vm:"1",name:"Radiation Atomic Number",retired:""},"0x300A0306":{keyword:"RadiationChargeState",vr:"SS",vm:"1",name:"Radiation Charge State",retired:""},"0x300A0308":{keyword:"ScanMode",vr:"CS",vm:"1",name:"Scan Mode",retired:""},"0x300A0309":{keyword:"ModulatedScanModeType",vr:"CS",vm:"1",name:"Modulated Scan Mode Type",retired:""},"0x300A030A":{keyword:"VirtualSourceAxisDistances",vr:"FL",vm:"2",name:"Virtual Source-Axis Distances",retired:""},"0x300A030C":{keyword:"SnoutSequence",vr:"SQ",vm:"1",name:"Snout Sequence",retired:""},"0x300A030D":{keyword:"SnoutPosition",vr:"FL",vm:"1",name:"Snout Position",retired:""},"0x300A030F":{keyword:"SnoutID",vr:"SH",vm:"1",name:"Snout ID",retired:""},"0x300A0312":{keyword:"NumberOfRangeShifters",vr:"IS",vm:"1",name:"Number of Range Shifters",retired:""},"0x300A0314":{keyword:"RangeShifterSequence",vr:"SQ",vm:"1",name:"Range Shifter Sequence",retired:""},"0x300A0316":{keyword:"RangeShifterNumber",vr:"IS",vm:"1",name:"Range Shifter Number",retired:""},"0x300A0318":{keyword:"RangeShifterID",vr:"SH",vm:"1",name:"Range Shifter ID",retired:""},"0x300A0320":{keyword:"RangeShifterType",vr:"CS",vm:"1",name:"Range Shifter Type",retired:""},"0x300A0322":{keyword:"RangeShifterDescription",vr:"LO",vm:"1",name:"Range Shifter Description",retired:""},"0x300A0330":{keyword:"NumberOfLateralSpreadingDevices",vr:"IS",vm:"1",name:"Number of Lateral Spreading Devices",retired:""},"0x300A0332":{keyword:"LateralSpreadingDeviceSequence",vr:"SQ",vm:"1",name:"Lateral Spreading Device Sequence",retired:""},"0x300A0334":{keyword:"LateralSpreadingDeviceNumber",vr:"IS",vm:"1",name:"Lateral Spreading Device Number",retired:""},"0x300A0336":{keyword:"LateralSpreadingDeviceID",vr:"SH",vm:"1",name:"Lateral Spreading Device ID",retired:""},"0x300A0338":{keyword:"LateralSpreadingDeviceType",vr:"CS",vm:"1",name:"Lateral Spreading Device Type",retired:""},"0x300A033A":{keyword:"LateralSpreadingDeviceDescription",vr:"LO",vm:"1",name:"Lateral Spreading Device Description",retired:""},"0x300A033C":{keyword:"LateralSpreadingDeviceWaterEquivalentThickness",vr:"FL",vm:"1",name:"Lateral Spreading Device Water Equivalent Thickness",retired:""},"0x300A0340":{keyword:"NumberOfRangeModulators",vr:"IS",vm:"1",name:"Number of Range Modulators",retired:""},"0x300A0342":{keyword:"RangeModulatorSequence",vr:"SQ",vm:"1",name:"Range Modulator Sequence",retired:""},"0x300A0344":{keyword:"RangeModulatorNumber",vr:"IS",vm:"1",name:"Range Modulator Number",retired:""},"0x300A0346":{keyword:"RangeModulatorID",vr:"SH",vm:"1",name:"Range Modulator ID",retired:""},"0x300A0348":{keyword:"RangeModulatorType",vr:"CS",vm:"1",name:"Range Modulator Type",retired:""},"0x300A034A":{keyword:"RangeModulatorDescription",vr:"LO",vm:"1",name:"Range Modulator Description",retired:""},"0x300A034C":{keyword:"BeamCurrentModulationID",vr:"SH",vm:"1",name:"Beam Current Modulation ID",retired:""},"0x300A0350":{keyword:"PatientSupportType",vr:"CS",vm:"1",name:"Patient Support Type",retired:""},"0x300A0352":{keyword:"PatientSupportID",vr:"SH",vm:"1",name:"Patient Support ID",retired:""},"0x300A0354":{keyword:"PatientSupportAccessoryCode",vr:"LO",vm:"1",name:"Patient Support Accessory Code",retired:""},"0x300A0355":{keyword:"TrayAccessoryCode",vr:"LO",vm:"1",name:"Tray Accessory Code",retired:""},"0x300A0356":{keyword:"FixationLightAzimuthalAngle",vr:"FL",vm:"1",name:"Fixation Light Azimuthal Angle",retired:""},"0x300A0358":{keyword:"FixationLightPolarAngle",vr:"FL",vm:"1",name:"Fixation Light Polar Angle",retired:""},"0x300A035A":{keyword:"MetersetRate",vr:"FL",vm:"1",name:"Meterset Rate",retired:""},"0x300A0360":{keyword:"RangeShifterSettingsSequence",vr:"SQ",vm:"1",name:"Range Shifter Settings Sequence",retired:""},"0x300A0362":{keyword:"RangeShifterSetting",vr:"LO",vm:"1",name:"Range Shifter Setting",retired:""},"0x300A0364":{keyword:"IsocenterToRangeShifterDistance",vr:"FL",vm:"1",name:"Isocenter to Range Shifter Distance",retired:""},"0x300A0366":{keyword:"RangeShifterWaterEquivalentThickness",vr:"FL",vm:"1",name:"Range Shifter Water Equivalent Thickness",retired:""},"0x300A0370":{keyword:"LateralSpreadingDeviceSettingsSequence",vr:"SQ",vm:"1",name:"Lateral Spreading Device Settings Sequence",retired:""},"0x300A0372":{keyword:"LateralSpreadingDeviceSetting",vr:"LO",vm:"1",name:"Lateral Spreading Device Setting",retired:""},"0x300A0374":{keyword:"IsocenterToLateralSpreadingDeviceDistance",vr:"FL",vm:"1",name:"Isocenter to Lateral Spreading Device Distance",retired:""},"0x300A0380":{keyword:"RangeModulatorSettingsSequence",vr:"SQ",vm:"1",name:"Range Modulator Settings Sequence",retired:""},"0x300A0382":{keyword:"RangeModulatorGatingStartValue",vr:"FL",vm:"1",name:"Range Modulator Gating Start Value",retired:""},"0x300A0384":{keyword:"RangeModulatorGatingStopValue",vr:"FL",vm:"1",name:"Range Modulator Gating Stop Value",retired:""},"0x300A0386":{keyword:"RangeModulatorGatingStartWaterEquivalentThickness",vr:"FL",vm:"1",name:"Range Modulator Gating Start Water Equivalent Thickness",retired:""},"0x300A0388":{keyword:"RangeModulatorGatingStopWaterEquivalentThickness",vr:"FL",vm:"1",name:"Range Modulator Gating Stop Water Equivalent Thickness",retired:""},"0x300A038A":{keyword:"IsocenterToRangeModulatorDistance",vr:"FL",vm:"1",name:"Isocenter to Range Modulator Distance",retired:""},"0x300A038F":{keyword:"ScanSpotTimeOffset",vr:"FL",vm:"1-n",name:"Scan Spot Time Offset",retired:""},"0x300A0390":{keyword:"ScanSpotTuneID",vr:"SH",vm:"1",name:"Scan Spot Tune ID",retired:""},"0x300A0391":{keyword:"ScanSpotPrescribedIndices",vr:"IS",vm:"1-n",name:"Scan Spot Prescribed Indices",retired:""},"0x300A0392":{keyword:"NumberOfScanSpotPositions",vr:"IS",vm:"1",name:"Number of Scan Spot Positions",retired:""},"0x300A0393":{keyword:"ScanSpotReordered",vr:"CS",vm:"1",name:"Scan Spot Reordered",retired:""},"0x300A0394":{keyword:"ScanSpotPositionMap",vr:"FL",vm:"1-n",name:"Scan Spot Position Map",retired:""},"0x300A0395":{keyword:"ScanSpotReorderingAllowed",vr:"CS",vm:"1",name:"Scan Spot Reordering Allowed",retired:""},"0x300A0396":{keyword:"ScanSpotMetersetWeights",vr:"FL",vm:"1-n",name:"Scan Spot Meterset Weights",retired:""},"0x300A0398":{keyword:"ScanningSpotSize",vr:"FL",vm:"2",name:"Scanning Spot Size",retired:""},"0x300A0399":{keyword:"ScanSpotSizesDelivered",vr:"FL",vm:"2-2n",name:"Scan Spot Sizes Delivered",retired:""},"0x300A039A":{keyword:"NumberOfPaintings",vr:"IS",vm:"1",name:"Number of Paintings",retired:""},"0x300A03A0":{keyword:"IonToleranceTableSequence",vr:"SQ",vm:"1",name:"Ion Tolerance Table Sequence",retired:""},"0x300A03A2":{keyword:"IonBeamSequence",vr:"SQ",vm:"1",name:"Ion Beam Sequence",retired:""},"0x300A03A4":{keyword:"IonBeamLimitingDeviceSequence",vr:"SQ",vm:"1",name:"Ion Beam Limiting Device Sequence",retired:""},"0x300A03A6":{keyword:"IonBlockSequence",vr:"SQ",vm:"1",name:"Ion Block Sequence",retired:""},"0x300A03A8":{keyword:"IonControlPointSequence",vr:"SQ",vm:"1",name:"Ion Control Point Sequence",retired:""},"0x300A03AA":{keyword:"IonWedgeSequence",vr:"SQ",vm:"1",name:"Ion Wedge Sequence",retired:""},"0x300A03AC":{keyword:"IonWedgePositionSequence",vr:"SQ",vm:"1",name:"Ion Wedge Position Sequence",retired:""},"0x300A0401":{keyword:"ReferencedSetupImageSequence",vr:"SQ",vm:"1",name:"Referenced Setup Image Sequence",retired:""},"0x300A0402":{keyword:"SetupImageComment",vr:"ST",vm:"1",name:"Setup Image Comment",retired:""},"0x300A0410":{keyword:"MotionSynchronizationSequence",vr:"SQ",vm:"1",name:"Motion Synchronization Sequence",retired:""},"0x300A0412":{keyword:"ControlPointOrientation",vr:"FL",vm:"3",name:"Control Point Orientation",retired:""},"0x300A0420":{keyword:"GeneralAccessorySequence",vr:"SQ",vm:"1",name:"General Accessory Sequence",retired:""},"0x300A0421":{keyword:"GeneralAccessoryID",vr:"SH",vm:"1",name:"General Accessory ID",retired:""},"0x300A0422":{keyword:"GeneralAccessoryDescription",vr:"ST",vm:"1",name:"General Accessory Description",retired:""},"0x300A0423":{keyword:"GeneralAccessoryType",vr:"CS",vm:"1",name:"General Accessory Type",retired:""},"0x300A0424":{keyword:"GeneralAccessoryNumber",vr:"IS",vm:"1",name:"General Accessory Number",retired:""},"0x300A0425":{keyword:"SourceToGeneralAccessoryDistance",vr:"FL",vm:"1",name:"Source to General Accessory Distance",retired:""},"0x300A0426":{keyword:"IsocenterToGeneralAccessoryDistance",vr:"DS",vm:"1",name:"Isocenter to General Accessory Distance",retired:""},"0x300A0431":{keyword:"ApplicatorGeometrySequence",vr:"SQ",vm:"1",name:"Applicator Geometry Sequence",retired:""},"0x300A0432":{keyword:"ApplicatorApertureShape",vr:"CS",vm:"1",name:"Applicator Aperture Shape",retired:""},"0x300A0433":{keyword:"ApplicatorOpening",vr:"FL",vm:"1",name:"Applicator Opening",retired:""},"0x300A0434":{keyword:"ApplicatorOpeningX",vr:"FL",vm:"1",name:"Applicator Opening X",retired:""},"0x300A0435":{keyword:"ApplicatorOpeningY",vr:"FL",vm:"1",name:"Applicator Opening Y",retired:""},"0x300A0436":{keyword:"SourceToApplicatorMountingPositionDistance",vr:"FL",vm:"1",name:"Source to Applicator Mounting Position Distance",retired:""},"0x300A0440":{keyword:"NumberOfBlockSlabItems",vr:"IS",vm:"1",name:"Number of Block Slab Items",retired:""},"0x300A0441":{keyword:"BlockSlabSequence",vr:"SQ",vm:"1",name:"Block Slab Sequence",retired:""},"0x300A0442":{keyword:"BlockSlabThickness",vr:"DS",vm:"1",name:"Block Slab Thickness",retired:""},"0x300A0443":{keyword:"BlockSlabNumber",vr:"US",vm:"1",name:"Block Slab Number",retired:""},"0x300A0450":{keyword:"DeviceMotionControlSequence",vr:"SQ",vm:"1",name:"Device Motion Control Sequence",retired:""},"0x300A0451":{keyword:"DeviceMotionExecutionMode",vr:"CS",vm:"1",name:"Device Motion Execution Mode",retired:""},"0x300A0452":{keyword:"DeviceMotionObservationMode",vr:"CS",vm:"1",name:"Device Motion Observation Mode",retired:""},"0x300A0453":{keyword:"DeviceMotionParameterCodeSequence",vr:"SQ",vm:"1",name:"Device Motion Parameter Code Sequence",retired:""},"0x300A0501":{keyword:"DistalDepthFraction",vr:"FL",vm:"1",name:"Distal Depth Fraction",retired:""},"0x300A0502":{keyword:"DistalDepth",vr:"FL",vm:"1",name:"Distal Depth",retired:""},"0x300A0503":{keyword:"NominalRangeModulationFractions",vr:"FL",vm:"2",name:"Nominal Range Modulation Fractions",retired:""},"0x300A0504":{keyword:"NominalRangeModulatedRegionDepths",vr:"FL",vm:"2",name:"Nominal Range Modulated Region Depths",retired:""},"0x300A0505":{keyword:"DepthDoseParametersSequence",vr:"SQ",vm:"1",name:"Depth Dose Parameters Sequence",retired:""},"0x300A0506":{keyword:"DeliveredDepthDoseParametersSequence",vr:"SQ",vm:"1",name:"Delivered Depth Dose Parameters Sequence",retired:""},"0x300A0507":{keyword:"DeliveredDistalDepthFraction",vr:"FL",vm:"1",name:"Delivered Distal Depth Fraction",retired:""},"0x300A0508":{keyword:"DeliveredDistalDepth",vr:"FL",vm:"1",name:"Delivered Distal Depth",retired:""},"0x300A0509":{keyword:"DeliveredNominalRangeModulationFractions",vr:"FL",vm:"2",name:"Delivered Nominal Range Modulation Fractions",retired:""},"0x300A0510":{keyword:"DeliveredNominalRangeModulatedRegionDepths",vr:"FL",vm:"2",name:"Delivered Nominal Range Modulated Region Depths",retired:""},"0x300A0511":{keyword:"DeliveredReferenceDoseDefinition",vr:"CS",vm:"1",name:"Delivered Reference Dose Definition",retired:""},"0x300A0512":{keyword:"ReferenceDoseDefinition",vr:"CS",vm:"1",name:"Reference Dose Definition",retired:""},"0x300A0600":{keyword:"RTControlPointIndex",vr:"US",vm:"1",name:"RT Control Point Index",retired:""},"0x300A0601":{keyword:"RadiationGenerationModeIndex",vr:"US",vm:"1",name:"Radiation Generation Mode Index",retired:""},"0x300A0602":{keyword:"ReferencedDefinedDeviceIndex",vr:"US",vm:"1",name:"Referenced Defined Device Index",retired:""},"0x300A0603":{keyword:"RadiationDoseIdentificationIndex",vr:"US",vm:"1",name:"Radiation Dose Identification Index",retired:""},"0x300A0604":{keyword:"NumberOfRTControlPoints",vr:"US",vm:"1",name:"Number of RT Control Points",retired:""},"0x300A0605":{keyword:"ReferencedRadiationGenerationModeIndex",vr:"US",vm:"1",name:"Referenced Radiation Generation Mode Index",retired:""},"0x300A0606":{keyword:"TreatmentPositionIndex",vr:"US",vm:"1",name:"Treatment Position Index",retired:""},"0x300A0607":{keyword:"ReferencedDeviceIndex",vr:"US",vm:"1",name:"Referenced Device Index",retired:""},"0x300A0608":{keyword:"TreatmentPositionGroupLabel",vr:"LO",vm:"1",name:"Treatment Position Group Label",retired:""},"0x300A0609":{keyword:"TreatmentPositionGroupUID",vr:"UI",vm:"1",name:"Treatment Position Group UID",retired:""},"0x300A060A":{keyword:"TreatmentPositionGroupSequence",vr:"SQ",vm:"1",name:"Treatment Position Group Sequence",retired:""},"0x300A060B":{keyword:"ReferencedTreatmentPositionIndex",vr:"US",vm:"1",name:"Referenced Treatment Position Index",retired:""},"0x300A060C":{keyword:"ReferencedRadiationDoseIdentificationIndex",vr:"US",vm:"1",name:"Referenced Radiation Dose Identification Index",retired:""},"0x300A060D":{keyword:"RTAccessoryHolderWaterEquivalentThickness",vr:"FD",vm:"1",name:"RT Accessory Holder Water-Equivalent Thickness",retired:""},"0x300A060E":{keyword:"ReferencedRTAccessoryHolderDeviceIndex",vr:"US",vm:"1",name:"Referenced RT Accessory Holder Device Index",retired:""},"0x300A060F":{keyword:"RTAccessoryHolderSlotExistenceFlag",vr:"CS",vm:"1",name:"RT Accessory Holder Slot Existence Flag",retired:""},"0x300A0610":{keyword:"RTAccessoryHolderSlotSequence",vr:"SQ",vm:"1",name:"RT Accessory Holder Slot Sequence",retired:""},"0x300A0611":{keyword:"RTAccessoryHolderSlotID",vr:"LO",vm:"1",name:"RT Accessory Holder Slot ID",retired:""},"0x300A0612":{keyword:"RTAccessoryHolderSlotDistance",vr:"FD",vm:"1",name:"RT Accessory Holder Slot Distance",retired:""},"0x300A0613":{keyword:"RTAccessorySlotDistance",vr:"FD",vm:"1",name:"RT Accessory Slot Distance",retired:""},"0x300A0614":{keyword:"RTAccessoryHolderDefinitionSequence",vr:"SQ",vm:"1",name:"RT Accessory Holder Definition Sequence",retired:""},"0x300A0615":{keyword:"RTAccessoryDeviceSlotID",vr:"LO",vm:"1",name:"RT Accessory Device Slot ID",retired:""},"0x300A0616":{keyword:"RTRadiationSequence",vr:"SQ",vm:"1",name:"RT Radiation Sequence",retired:""},"0x300A0617":{keyword:"RadiationDoseSequence",vr:"SQ",vm:"1",name:"Radiation Dose Sequence",retired:""},"0x300A0618":{keyword:"RadiationDoseIdentificationSequence",vr:"SQ",vm:"1",name:"Radiation Dose Identification Sequence",retired:""},"0x300A0619":{keyword:"RadiationDoseIdentificationLabel",vr:"LO",vm:"1",name:"Radiation Dose Identification Label",retired:""},"0x300A061A":{keyword:"ReferenceDoseType",vr:"CS",vm:"1",name:"Reference Dose Type",retired:""},"0x300A061B":{keyword:"PrimaryDoseValueIndicator",vr:"CS",vm:"1",name:"Primary Dose Value Indicator",retired:""},"0x300A061C":{keyword:"DoseValuesSequence",vr:"SQ",vm:"1",name:"Dose Values Sequence",retired:""},"0x300A061D":{keyword:"DoseValuePurpose",vr:"CS",vm:"1-n",name:"Dose Value Purpose",retired:""},"0x300A061E":{keyword:"ReferenceDosePointCoordinates",vr:"FD",vm:"3",name:"Reference Dose Point Coordinates",retired:""},"0x300A061F":{keyword:"RadiationDoseValuesParametersSequence",vr:"SQ",vm:"1",name:"Radiation Dose Values Parameters Sequence",retired:""},"0x300A0620":{keyword:"MetersetToDoseMappingSequence",vr:"SQ",vm:"1",name:"Meterset to Dose Mapping Sequence",retired:""},"0x300A0621":{keyword:"ExpectedInVivoMeasurementValuesSequence",vr:"SQ",vm:"1",name:"Expected In-Vivo Measurement Values Sequence",retired:""},"0x300A0622":{keyword:"ExpectedInVivoMeasurementValueIndex",vr:"US",vm:"1",name:"Expected In-Vivo Measurement Value Index",retired:""},"0x300A0623":{keyword:"RadiationDoseInVivoMeasurementLabel",vr:"LO",vm:"1",name:"Radiation Dose In-Vivo Measurement Label",retired:""},"0x300A0624":{keyword:"RadiationDoseCentralAxisDisplacement",vr:"FD",vm:"2",name:"Radiation Dose Central Axis Displacement",retired:""},"0x300A0625":{keyword:"RadiationDoseValue",vr:"FD",vm:"1",name:"Radiation Dose Value",retired:""},"0x300A0626":{keyword:"RadiationDoseSourceToSkinDistance",vr:"FD",vm:"1",name:"Radiation Dose Source to Skin Distance",retired:""},"0x300A0627":{keyword:"RadiationDoseMeasurementPointCoordinates",vr:"FD",vm:"3",name:"Radiation Dose Measurement Point Coordinates",retired:""},"0x300A0628":{keyword:"RadiationDoseSourceToExternalContourDistance",vr:"FD",vm:"1",name:"Radiation Dose Source to External Contour Distance",retired:""},"0x300A0629":{keyword:"RTToleranceSetSequence",vr:"SQ",vm:"1",name:"RT Tolerance Set Sequence",retired:""},"0x300A062A":{keyword:"RTToleranceSetLabel",vr:"LO",vm:"1",name:"RT Tolerance Set Label",retired:""},"0x300A062B":{keyword:"AttributeToleranceValuesSequence",vr:"SQ",vm:"1",name:"Attribute Tolerance Values Sequence",retired:""},"0x300A062C":{keyword:"ToleranceValue",vr:"FD",vm:"1",name:"Tolerance Value",retired:""},"0x300A062D":{keyword:"PatientSupportPositionToleranceSequence",vr:"SQ",vm:"1",name:"Patient Support Position Tolerance Sequence",retired:""},"0x300A062E":{keyword:"TreatmentTimeLimit",vr:"FD",vm:"1",name:"Treatment Time Limit",retired:""},"0x300A062F":{keyword:"CArmPhotonElectronControlPointSequence",vr:"SQ",vm:"1",name:"C-Arm Photon-Electron Control Point Sequence",retired:""},"0x300A0630":{keyword:"ReferencedRTRadiationSequence",vr:"SQ",vm:"1",name:"Referenced RT Radiation Sequence",retired:""},"0x300A0631":{keyword:"ReferencedRTInstanceSequence",vr:"SQ",vm:"1",name:"Referenced RT Instance Sequence",retired:""},"0x300A0632":{keyword:"ReferencedRTPatientSetupSequence",vr:"SQ",vm:"1",name:"Referenced RT Patient Setup Sequence",retired:"Retired"},"0x300A0634":{keyword:"SourceToPatientSurfaceDistance",vr:"FD",vm:"1",name:"Source to Patient Surface Distance",retired:""},"0x300A0635":{keyword:"TreatmentMachineSpecialModeCodeSequence",vr:"SQ",vm:"1",name:"Treatment Machine Special Mode Code Sequence",retired:""},"0x300A0636":{keyword:"IntendedNumberOfFractions",vr:"US",vm:"1",name:"Intended Number of Fractions",retired:""},"0x300A0637":{keyword:"RTRadiationSetIntent",vr:"CS",vm:"1",name:"RT Radiation Set Intent",retired:""},"0x300A0638":{keyword:"RTRadiationPhysicalAndGeometricContentDetailFlag",vr:"CS",vm:"1",name:"RT Radiation Physical and Geometric Content Detail Flag",retired:""},"0x300A0639":{keyword:"RTRecordFlag",vr:"CS",vm:"1",name:"RT Record Flag",retired:""},"0x300A063A":{keyword:"TreatmentDeviceIdentificationSequence",vr:"SQ",vm:"1",name:"Treatment Device Identification Sequence",retired:""},"0x300A063B":{keyword:"ReferencedRTPhysicianIntentSequence",vr:"SQ",vm:"1",name:"Referenced RT Physician Intent Sequence",retired:""},"0x300A063C":{keyword:"CumulativeMeterset",vr:"FD",vm:"1",name:"Cumulative Meterset",retired:""},"0x300A063D":{keyword:"DeliveryRate",vr:"FD",vm:"1",name:"Delivery Rate",retired:""},"0x300A063E":{keyword:"DeliveryRateUnitSequence",vr:"SQ",vm:"1",name:"Delivery Rate Unit Sequence",retired:""},"0x300A063F":{keyword:"TreatmentPositionSequence",vr:"SQ",vm:"1",name:"Treatment Position Sequence",retired:""},"0x300A0640":{keyword:"RadiationSourceAxisDistance",vr:"FD",vm:"1",name:"Radiation Source-Axis Distance",retired:""},"0x300A0641":{keyword:"NumberOfRTBeamLimitingDevices",vr:"US",vm:"1",name:"Number of RT Beam Limiting Devices",retired:""},"0x300A0642":{keyword:"RTBeamLimitingDeviceProximalDistance",vr:"FD",vm:"1",name:"RT Beam Limiting Device Proximal Distance",retired:""},"0x300A0643":{keyword:"RTBeamLimitingDeviceDistalDistance",vr:"FD",vm:"1",name:"RT Beam Limiting Device Distal Distance",retired:""},"0x300A0644":{keyword:"ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence",vr:"SQ",vm:"1",name:"Parallel RT Beam Delimiter Device Orientation Label Code Sequence",retired:""},"0x300A0645":{keyword:"BeamModifierOrientationAngle",vr:"FD",vm:"1",name:"Beam Modifier Orientation Angle",retired:""},"0x300A0646":{keyword:"FixedRTBeamDelimiterDeviceSequence",vr:"SQ",vm:"1",name:"Fixed RT Beam Delimiter Device Sequence",retired:""},"0x300A0647":{keyword:"ParallelRTBeamDelimiterDeviceSequence",vr:"SQ",vm:"1",name:"Parallel RT Beam Delimiter Device Sequence",retired:""},"0x300A0648":{keyword:"NumberOfParallelRTBeamDelimiters",vr:"US",vm:"1",name:"Number of Parallel RT Beam Delimiters",retired:""},"0x300A0649":{keyword:"ParallelRTBeamDelimiterBoundaries",vr:"FD",vm:"2-n",name:"Parallel RT Beam Delimiter Boundaries",retired:""},"0x300A064A":{keyword:"ParallelRTBeamDelimiterPositions",vr:"FD",vm:"2-n",name:"Parallel RT Beam Delimiter Positions",retired:""},"0x300A064B":{keyword:"RTBeamLimitingDeviceOffset",vr:"FD",vm:"2",name:"RT Beam Limiting Device Offset",retired:""},"0x300A064C":{keyword:"RTBeamDelimiterGeometrySequence",vr:"SQ",vm:"1",name:"RT Beam Delimiter Geometry Sequence",retired:""},"0x300A064D":{keyword:"RTBeamLimitingDeviceDefinitionSequence",vr:"SQ",vm:"1",name:"RT Beam Limiting Device Definition Sequence",retired:""},"0x300A064E":{keyword:"ParallelRTBeamDelimiterOpeningMode",vr:"CS",vm:"1",name:"Parallel RT Beam Delimiter Opening Mode",retired:""},"0x300A064F":{keyword:"ParallelRTBeamDelimiterLeafMountingSide",vr:"CS",vm:"1-n",name:"Parallel RT Beam Delimiter Leaf Mounting Side",retired:""},"0x300A0650":{keyword:"PatientSetupUID",vr:"UI",vm:"1",name:"Patient Setup UID",retired:"Retired"},"0x300A0651":{keyword:"WedgeDefinitionSequence",vr:"SQ",vm:"1",name:"Wedge Definition Sequence",retired:""},"0x300A0652":{keyword:"RadiationBeamWedgeAngle",vr:"FD",vm:"1",name:"Radiation Beam Wedge Angle",retired:""},"0x300A0653":{keyword:"RadiationBeamWedgeThinEdgeDistance",vr:"FD",vm:"1",name:"Radiation Beam Wedge Thin Edge Distance",retired:""},"0x300A0654":{keyword:"RadiationBeamEffectiveWedgeAngle",vr:"FD",vm:"1",name:"Radiation Beam Effective Wedge Angle",retired:""},"0x300A0655":{keyword:"NumberOfWedgePositions",vr:"US",vm:"1",name:"Number of Wedge Positions",retired:""},"0x300A0656":{keyword:"RTBeamLimitingDeviceOpeningSequence",vr:"SQ",vm:"1",name:"RT Beam Limiting Device Opening Sequence",retired:""},"0x300A0657":{keyword:"NumberOfRTBeamLimitingDeviceOpenings",vr:"US",vm:"1",name:"Number of RT Beam Limiting Device Openings",retired:""},"0x300A0658":{keyword:"RadiationDosimeterUnitSequence",vr:"SQ",vm:"1",name:"Radiation Dosimeter Unit Sequence",retired:""},"0x300A0659":{keyword:"RTDeviceDistanceReferenceLocationCodeSequence",vr:"SQ",vm:"1",name:"RT Device Distance Reference Location Code Sequence",retired:""},"0x300A065A":{keyword:"RadiationDeviceConfigurationAndCommissioningKeySequence",vr:"SQ",vm:"1",name:"Radiation Device Configuration and Commissioning Key Sequence",retired:""},"0x300A065B":{keyword:"PatientSupportPositionParameterSequence",vr:"SQ",vm:"1",name:"Patient Support Position Parameter Sequence",retired:""},"0x300A065C":{keyword:"PatientSupportPositionSpecificationMethod",vr:"CS",vm:"1",name:"Patient Support Position Specification Method",retired:""},"0x300A065D":{keyword:"PatientSupportPositionDeviceParameterSequence",vr:"SQ",vm:"1",name:"Patient Support Position Device Parameter Sequence",retired:""},"0x300A065E":{keyword:"DeviceOrderIndex",vr:"US",vm:"1",name:"Device Order Index",retired:""},"0x300A065F":{keyword:"PatientSupportPositionParameterOrderIndex",vr:"US",vm:"1",name:"Patient Support Position Parameter Order Index",retired:""},"0x300A0660":{keyword:"PatientSupportPositionDeviceToleranceSequence",vr:"SQ",vm:"1",name:"Patient Support Position Device Tolerance Sequence",retired:""},"0x300A0661":{keyword:"PatientSupportPositionToleranceOrderIndex",vr:"US",vm:"1",name:"Patient Support Position Tolerance Order Index",retired:""},"0x300A0662":{keyword:"CompensatorDefinitionSequence",vr:"SQ",vm:"1",name:"Compensator Definition Sequence",retired:""},"0x300A0663":{keyword:"CompensatorMapOrientation",vr:"CS",vm:"1",name:"Compensator Map Orientation",retired:""},"0x300A0664":{keyword:"CompensatorProximalThicknessMap",vr:"OF",vm:"1",name:"Compensator Proximal Thickness Map",retired:""},"0x300A0665":{keyword:"CompensatorDistalThicknessMap",vr:"OF",vm:"1",name:"Compensator Distal Thickness Map",retired:""},"0x300A0666":{keyword:"CompensatorBasePlaneOffset",vr:"FD",vm:"1",name:"Compensator Base Plane Offset",retired:""},"0x300A0667":{keyword:"CompensatorShapeFabricationCodeSequence",vr:"SQ",vm:"1",name:"Compensator Shape Fabrication Code Sequence",retired:""},"0x300A0668":{keyword:"CompensatorShapeSequence",vr:"SQ",vm:"1",name:"Compensator Shape Sequence",retired:""},"0x300A0669":{keyword:"RadiationBeamCompensatorMillingToolDiameter",vr:"FD",vm:"1",name:"Radiation Beam Compensator Milling Tool Diameter",retired:""},"0x300A066A":{keyword:"BlockDefinitionSequence",vr:"SQ",vm:"1",name:"Block Definition Sequence",retired:""},"0x300A066B":{keyword:"BlockEdgeData",vr:"OF",vm:"1",name:"Block Edge Data",retired:""},"0x300A066C":{keyword:"BlockOrientation",vr:"CS",vm:"1",name:"Block Orientation",retired:""},"0x300A066D":{keyword:"RadiationBeamBlockThickness",vr:"FD",vm:"1",name:"Radiation Beam Block Thickness",retired:""},"0x300A066E":{keyword:"RadiationBeamBlockSlabThickness",vr:"FD",vm:"1",name:"Radiation Beam Block Slab Thickness",retired:""},"0x300A066F":{keyword:"BlockEdgeDataSequence",vr:"SQ",vm:"1",name:"Block Edge Data Sequence",retired:""},"0x300A0670":{keyword:"NumberOfRTAccessoryHolders",vr:"US",vm:"1",name:"Number of RT Accessory Holders",retired:""},"0x300A0671":{keyword:"GeneralAccessoryDefinitionSequence",vr:"SQ",vm:"1",name:"General Accessory Definition Sequence",retired:""},"0x300A0672":{keyword:"NumberOfGeneralAccessories",vr:"US",vm:"1",name:"Number of General Accessories",retired:""},"0x300A0673":{keyword:"BolusDefinitionSequence",vr:"SQ",vm:"1",name:"Bolus Definition Sequence",retired:""},"0x300A0674":{keyword:"NumberOfBoluses",vr:"US",vm:"1",name:"Number of Boluses",retired:""},"0x300A0675":{keyword:"EquipmentFrameOfReferenceUID",vr:"UI",vm:"1",name:"Equipment Frame of Reference UID",retired:""},"0x300A0676":{keyword:"EquipmentFrameOfReferenceDescription",vr:"ST",vm:"1",name:"Equipment Frame of Reference Description",retired:""},"0x300A0677":{keyword:"EquipmentReferencePointCoordinatesSequence",vr:"SQ",vm:"1",name:"Equipment Reference Point Coordinates Sequence",retired:""},"0x300A0678":{keyword:"EquipmentReferencePointCodeSequence",vr:"SQ",vm:"1",name:"Equipment Reference Point Code Sequence",retired:""},"0x300A0679":{keyword:"RTBeamLimitingDeviceAngle",vr:"FD",vm:"1",name:"RT Beam Limiting Device Angle",retired:""},"0x300A067A":{keyword:"SourceRollAngle",vr:"FD",vm:"1",name:"Source Roll Angle",retired:""},"0x300A067B":{keyword:"RadiationGenerationModeSequence",vr:"SQ",vm:"1",name:"Radiation GenerationMode Sequence",retired:""},"0x300A067C":{keyword:"RadiationGenerationModeLabel",vr:"SH",vm:"1",name:"Radiation GenerationMode Label",retired:""},"0x300A067D":{keyword:"RadiationGenerationModeDescription",vr:"ST",vm:"1",name:"Radiation GenerationMode Description",retired:""},"0x300A067E":{keyword:"RadiationGenerationModeMachineCodeSequence",vr:"SQ",vm:"1",name:"Radiation GenerationMode Machine Code Sequence",retired:""},"0x300A067F":{keyword:"RadiationTypeCodeSequence",vr:"SQ",vm:"1",name:"Radiation Type Code Sequence",retired:""},"0x300A0680":{keyword:"NominalEnergy",vr:"DS",vm:"1",name:"Nominal Energy",retired:""},"0x300A0681":{keyword:"MinimumNominalEnergy",vr:"DS",vm:"1",name:"Minimum Nominal Energy",retired:""},"0x300A0682":{keyword:"MaximumNominalEnergy",vr:"DS",vm:"1",name:"Maximum Nominal Energy",retired:""},"0x300A0683":{keyword:"RadiationFluenceModifierCodeSequence",vr:"SQ",vm:"1",name:"Radiation Fluence Modifier Code Sequence",retired:""},"0x300A0684":{keyword:"EnergyUnitCodeSequence",vr:"SQ",vm:"1",name:"Energy Unit Code Sequence",retired:""},"0x300A0685":{keyword:"NumberOfRadiationGenerationModes",vr:"US",vm:"1",name:"Number of Radiation GenerationModes",retired:""},"0x300A0686":{keyword:"PatientSupportDevicesSequence",vr:"SQ",vm:"1",name:"Patient Support Devices Sequence",retired:""},"0x300A0687":{keyword:"NumberOfPatientSupportDevices",vr:"US",vm:"1",name:"Number of Patient Support Devices",retired:""},"0x300A0688":{keyword:"RTBeamModifierDefinitionDistance",vr:"FD",vm:"1",name:"RT Beam Modifier Definition Distance",retired:""},"0x300A0689":{keyword:"BeamAreaLimitSequence",vr:"SQ",vm:"1",name:"Beam Area Limit Sequence",retired:""},"0x300A068A":{keyword:"ReferencedRTPrescriptionSequence",vr:"SQ",vm:"1",name:"Referenced RT Prescription Sequence",retired:""},"0x300A068B":{keyword:"DoseValueInterpretation",vr:"CS",vm:"1",name:"Dose Value Interpretation",retired:""},"0x300A0700":{keyword:"TreatmentSessionUID",vr:"UI",vm:"1",name:"Treatment Session UID",retired:""},"0x300A0701":{keyword:"RTRadiationUsage",vr:"CS",vm:"1",name:"RT Radiation Usage",retired:""},"0x300A0702":{keyword:"ReferencedRTRadiationSetSequence",vr:"SQ",vm:"1",name:"Referenced RT Radiation Set Sequence",retired:""},"0x300A0703":{keyword:"ReferencedRTRadiationRecordSequence",vr:"SQ",vm:"1",name:"Referenced RT Radiation Record Sequence",retired:""},"0x300A0704":{keyword:"RTRadiationSetDeliveryNumber",vr:"US",vm:"1",name:"RT Radiation Set Delivery Number",retired:""},"0x300A0705":{keyword:"ClinicalFractionNumber",vr:"US",vm:"1",name:"Clinical Fraction Number",retired:""},"0x300A0706":{keyword:"RTTreatmentFractionCompletionStatus",vr:"CS",vm:"1",name:"RT Treatment Fraction Completion Status",retired:""},"0x300A0707":{keyword:"RTRadiationSetUsage",vr:"CS",vm:"1",name:"RT Radiation Set Usage",retired:""},"0x300A0708":{keyword:"TreatmentDeliveryContinuationFlag",vr:"CS",vm:"1",name:"Treatment Delivery Continuation Flag",retired:""},"0x300A0709":{keyword:"TreatmentRecordContentOrigin",vr:"CS",vm:"1",name:"Treatment Record Content Origin",retired:""},"0x300A0714":{keyword:"RTTreatmentTerminationStatus",vr:"CS",vm:"1",name:"RT Treatment Termination Status",retired:""},"0x300A0715":{keyword:"RTTreatmentTerminationReasonCodeSequence",vr:"SQ",vm:"1",name:"RT Treatment Termination Reason Code Sequence",retired:""},"0x300A0716":{keyword:"MachineSpecificTreatmentTerminationCodeSequence",vr:"SQ",vm:"1",name:"Machine-Specific Treatment Termination Code Sequence",retired:""},"0x300A0722":{keyword:"RTRadiationSalvageRecordControlPointSequence",vr:"SQ",vm:"1",name:"RT Radiation Salvage Record Control Point Sequence",retired:""},"0x300A0723":{keyword:"StartingMetersetValueKnownFlag",vr:"CS",vm:"1",name:"Starting Meterset Value Known Flag",retired:""},"0x300A0730":{keyword:"TreatmentTerminationDescription",vr:"ST",vm:"1",name:"Treatment Termination Description",retired:""},"0x300A0731":{keyword:"TreatmentToleranceViolationSequence",vr:"SQ",vm:"1",name:"Treatment Tolerance Violation Sequence",retired:""},"0x300A0732":{keyword:"TreatmentToleranceViolationCategory",vr:"CS",vm:"1",name:"Treatment Tolerance Violation Category",retired:""},"0x300A0733":{keyword:"TreatmentToleranceViolationAttributeSequence",vr:"SQ",vm:"1",name:"Treatment Tolerance Violation Attribute Sequence",retired:""},"0x300A0734":{keyword:"TreatmentToleranceViolationDescription",vr:"ST",vm:"1",name:"Treatment Tolerance Violation Description",retired:""},"0x300A0735":{keyword:"TreatmentToleranceViolationIdentification",vr:"ST",vm:"1",name:"Treatment Tolerance Violation Identification",retired:""},"0x300A0736":{keyword:"TreatmentToleranceViolationDateTime",vr:"DT",vm:"1",name:"Treatment Tolerance Violation DateTime",retired:""},"0x300A073A":{keyword:"RecordedRTControlPointDateTime",vr:"DT",vm:"1",name:"Recorded RT Control Point DateTime",retired:""},"0x300A073B":{keyword:"ReferencedRadiationRTControlPointIndex",vr:"US",vm:"1",name:"Referenced Radiation RT Control Point Index",retired:""},"0x300A073E":{keyword:"AlternateValueSequence",vr:"SQ",vm:"1",name:"Alternate Value Sequence",retired:""},"0x300A073F":{keyword:"ConfirmationSequence",vr:"SQ",vm:"1",name:"Confirmation Sequence",retired:""},"0x300A0740":{keyword:"InterlockSequence",vr:"SQ",vm:"1",name:"Interlock Sequence",retired:""},"0x300A0741":{keyword:"InterlockDateTime",vr:"DT",vm:"1",name:"Interlock DateTime",retired:""},"0x300A0742":{keyword:"InterlockDescription",vr:"ST",vm:"1",name:"Interlock Description",retired:""},"0x300A0743":{keyword:"InterlockOriginatingDeviceSequence",vr:"SQ",vm:"1",name:"Interlock Originating Device Sequence",retired:""},"0x300A0744":{keyword:"InterlockCodeSequence",vr:"SQ",vm:"1",name:"Interlock Code Sequence",retired:""},"0x300A0745":{keyword:"InterlockResolutionCodeSequence",vr:"SQ",vm:"1",name:"Interlock Resolution Code Sequence",retired:""},"0x300A0746":{keyword:"InterlockResolutionUserSequence",vr:"SQ",vm:"1",name:"Interlock Resolution User Sequence",retired:""},"0x300A0760":{keyword:"OverrideDateTime",vr:"DT",vm:"1",name:"Override DateTime",retired:""},"0x300A0761":{keyword:"TreatmentToleranceViolationTypeCodeSequence",vr:"SQ",vm:"1",name:"Treatment Tolerance Violation Type Code Sequence",retired:""},"0x300A0762":{keyword:"TreatmentToleranceViolationCauseCodeSequence",vr:"SQ",vm:"1",name:"Treatment Tolerance Violation Cause Code Sequence",retired:""},"0x300A0772":{keyword:"MeasuredMetersetToDoseMappingSequence",vr:"SQ",vm:"1",name:"Measured Meterset to Dose Mapping Sequence",retired:""},"0x300A0773":{keyword:"ReferencedExpectedInVivoMeasurementValueIndex",vr:"US",vm:"1",name:"Referenced Expected In-Vivo Measurement Value Index",retired:""},"0x300A0774":{keyword:"DoseMeasurementDeviceCodeSequence",vr:"SQ",vm:"1",name:"Dose Measurement Device Code Sequence",retired:""},"0x300A0780":{keyword:"AdditionalParameterRecordingInstanceSequence",vr:"SQ",vm:"1",name:"Additional Parameter Recording Instance Sequence",retired:""},"0x300A0782":{keyword:"",vr:"US",vm:"1",name:"",retired:"Retired"},"0x300A0783":{keyword:"InterlockOriginDescription",vr:"ST",vm:"1",name:"Interlock Origin Description",retired:""},"0x300A0784":{keyword:"RTPatientPositionScopeSequence",vr:"SQ",vm:"1",name:"RT Patient Position Scope Sequence",retired:""},"0x300A0785":{keyword:"ReferencedTreatmentPositionGroupUID",vr:"UI",vm:"1",name:"Referenced Treatment Position Group UID",retired:""},"0x300A0786":{keyword:"RadiationOrderIndex",vr:"US",vm:"1",name:"Radiation Order Index",retired:""},"0x300A0787":{keyword:"OmittedRadiationSequence",vr:"SQ",vm:"1",name:"Omitted Radiation Sequence",retired:""},"0x300A0788":{keyword:"ReasonForOmissionCodeSequence",vr:"SQ",vm:"1",name:"Reason for Omission Code Sequence",retired:""},"0x300A0789":{keyword:"RTDeliveryStartPatientPositionSequence",vr:"SQ",vm:"1",name:"RT Delivery Start Patient Position Sequence",retired:""},"0x300A078A":{keyword:"RTTreatmentPreparationPatientPositionSequence",vr:"SQ",vm:"1",name:"RT Treatment Preparation Patient Position Sequence",retired:""},"0x300A078B":{keyword:"ReferencedRTTreatmentPreparationSequence",vr:"SQ",vm:"1",name:"Referenced RT Treatment Preparation Sequence",retired:""},"0x300A078C":{keyword:"ReferencedPatientSetupPhotoSequence",vr:"SQ",vm:"1",name:"Referenced Patient Setup Photo Sequence",retired:""},"0x300A078D":{keyword:"PatientTreatmentPreparationMethodCodeSequence",vr:"SQ",vm:"1",name:"Patient Treatment Preparation Method Code Sequence",retired:""},"0x300A078E":{keyword:"PatientTreatmentPreparationProcedureParameterDescription",vr:"LT",vm:"1",name:"Patient Treatment Preparation Procedure Parameter Description",retired:""},"0x300A078F":{keyword:"PatientTreatmentPreparationDeviceSequence",vr:"SQ",vm:"1",name:"Patient Treatment Preparation Device Sequence",retired:""},"0x300A0790":{keyword:"PatientTreatmentPreparationProcedureSequence",vr:"SQ",vm:"1",name:"Patient Treatment Preparation Procedure Sequence",retired:""},"0x300A0791":{keyword:"PatientTreatmentPreparationProcedureCodeSequence",vr:"SQ",vm:"1",name:"Patient Treatment Preparation Procedure Code Sequence",retired:""},"0x300A0792":{keyword:"PatientTreatmentPreparationMethodDescription",vr:"LT",vm:"1",name:"Patient Treatment Preparation Method Description",retired:""},"0x300A0793":{keyword:"PatientTreatmentPreparationProcedureParameterSequence",vr:"SQ",vm:"1",name:"Patient Treatment Preparation Procedure Parameter Sequence",retired:""},"0x300A0794":{keyword:"PatientSetupPhotoDescription",vr:"LT",vm:"1",name:"Patient Setup Photo Description",retired:""},"0x300A0795":{keyword:"PatientTreatmentPreparationProcedureIndex",vr:"US",vm:"1",name:"Patient Treatment Preparation Procedure Index",retired:""},"0x300A0796":{keyword:"ReferencedPatientSetupProcedureIndex",vr:"US",vm:"1",name:"Referenced Patient Setup Procedure Index",retired:""},"0x300A0797":{keyword:"RTRadiationTaskSequence",vr:"SQ",vm:"1",name:"RT Radiation Task Sequence",retired:""},"0x300A0798":{keyword:"RTPatientPositionDisplacementSequence",vr:"SQ",vm:"1",name:"RT Patient Position Displacement Sequence",retired:""},"0x300A0799":{keyword:"RTPatientPositionSequence",vr:"SQ",vm:"1",name:"RT Patient Position Sequence",retired:""},"0x300A079A":{keyword:"DisplacementReferenceLabel",vr:"LO",vm:"1",name:"Displacement Reference Label",retired:""},"0x300A079B":{keyword:"DisplacementMatrix",vr:"FD",vm:"16",name:"Displacement Matrix",retired:""},"0x300A079C":{keyword:"PatientSupportDisplacementSequence",vr:"SQ",vm:"1",name:"Patient Support Displacement Sequence",retired:""},"0x300A079D":{keyword:"DisplacementReferenceLocationCodeSequence",vr:"SQ",vm:"1",name:"Displacement Reference Location Code Sequence",retired:""},"0x300A079E":{keyword:"RTRadiationSetDeliveryUsage",vr:"CS",vm:"1",name:"RT Radiation Set Delivery Usage",retired:""},"0x300C0002":{keyword:"ReferencedRTPlanSequence",vr:"SQ",vm:"1",name:"Referenced RT Plan Sequence",retired:""},"0x300C0004":{keyword:"ReferencedBeamSequence",vr:"SQ",vm:"1",name:"Referenced Beam Sequence",retired:""},"0x300C0006":{keyword:"ReferencedBeamNumber",vr:"IS",vm:"1",name:"Referenced Beam Number",retired:""},"0x300C0007":{keyword:"ReferencedReferenceImageNumber",vr:"IS",vm:"1",name:"Referenced Reference Image Number",retired:""},"0x300C0008":{keyword:"StartCumulativeMetersetWeight",vr:"DS",vm:"1",name:"Start Cumulative Meterset Weight",retired:""},"0x300C0009":{keyword:"EndCumulativeMetersetWeight",vr:"DS",vm:"1",name:"End Cumulative Meterset Weight",retired:""},"0x300C000A":{keyword:"ReferencedBrachyApplicationSetupSequence",vr:"SQ",vm:"1",name:"Referenced Brachy Application Setup Sequence",retired:""},"0x300C000C":{keyword:"ReferencedBrachyApplicationSetupNumber",vr:"IS",vm:"1",name:"Referenced Brachy Application Setup Number",retired:""},"0x300C000E":{keyword:"ReferencedSourceNumber",vr:"IS",vm:"1",name:"Referenced Source Number",retired:""},"0x300C0020":{keyword:"ReferencedFractionGroupSequence",vr:"SQ",vm:"1",name:"Referenced Fraction Group Sequence",retired:""},"0x300C0022":{keyword:"ReferencedFractionGroupNumber",vr:"IS",vm:"1",name:"Referenced Fraction Group Number",retired:""},"0x300C0040":{keyword:"ReferencedVerificationImageSequence",vr:"SQ",vm:"1",name:"Referenced Verification Image Sequence",retired:""},"0x300C0042":{keyword:"ReferencedReferenceImageSequence",vr:"SQ",vm:"1",name:"Referenced Reference Image Sequence",retired:""},"0x300C0050":{keyword:"ReferencedDoseReferenceSequence",vr:"SQ",vm:"1",name:"Referenced Dose Reference Sequence",retired:""},"0x300C0051":{keyword:"ReferencedDoseReferenceNumber",vr:"IS",vm:"1",name:"Referenced Dose Reference Number",retired:""},"0x300C0055":{keyword:"BrachyReferencedDoseReferenceSequence",vr:"SQ",vm:"1",name:"Brachy Referenced Dose Reference Sequence",retired:""},"0x300C0060":{keyword:"ReferencedStructureSetSequence",vr:"SQ",vm:"1",name:"Referenced Structure Set Sequence",retired:""},"0x300C006A":{keyword:"ReferencedPatientSetupNumber",vr:"IS",vm:"1",name:"Referenced Patient Setup Number",retired:""},"0x300C0080":{keyword:"ReferencedDoseSequence",vr:"SQ",vm:"1",name:"Referenced Dose Sequence",retired:""},"0x300C00A0":{keyword:"ReferencedToleranceTableNumber",vr:"IS",vm:"1",name:"Referenced Tolerance Table Number",retired:""},"0x300C00B0":{keyword:"ReferencedBolusSequence",vr:"SQ",vm:"1",name:"Referenced Bolus Sequence",retired:""},"0x300C00C0":{keyword:"ReferencedWedgeNumber",vr:"IS",vm:"1",name:"Referenced Wedge Number",retired:""},"0x300C00D0":{keyword:"ReferencedCompensatorNumber",vr:"IS",vm:"1",name:"Referenced Compensator Number",retired:""},"0x300C00E0":{keyword:"ReferencedBlockNumber",vr:"IS",vm:"1",name:"Referenced Block Number",retired:""},"0x300C00F0":{keyword:"ReferencedControlPointIndex",vr:"IS",vm:"1",name:"Referenced Control Point Index",retired:""},"0x300C00F2":{keyword:"ReferencedControlPointSequence",vr:"SQ",vm:"1",name:"Referenced Control Point Sequence",retired:""},"0x300C00F4":{keyword:"ReferencedStartControlPointIndex",vr:"IS",vm:"1",name:"Referenced Start Control Point Index",retired:""},"0x300C00F6":{keyword:"ReferencedStopControlPointIndex",vr:"IS",vm:"1",name:"Referenced Stop Control Point Index",retired:""},"0x300C0100":{keyword:"ReferencedRangeShifterNumber",vr:"IS",vm:"1",name:"Referenced Range Shifter Number",retired:""},"0x300C0102":{keyword:"ReferencedLateralSpreadingDeviceNumber",vr:"IS",vm:"1",name:"Referenced Lateral Spreading Device Number",retired:""},"0x300C0104":{keyword:"ReferencedRangeModulatorNumber",vr:"IS",vm:"1",name:"Referenced Range Modulator Number",retired:""},"0x300C0111":{keyword:"OmittedBeamTaskSequence",vr:"SQ",vm:"1",name:"Omitted Beam Task Sequence",retired:""},"0x300C0112":{keyword:"ReasonForOmission",vr:"CS",vm:"1",name:"Reason for Omission",retired:""},"0x300C0113":{keyword:"ReasonForOmissionDescription",vr:"LO",vm:"1",name:"Reason for Omission Description",retired:""},"0x300C0114":{keyword:"PrescriptionOverviewSequence",vr:"SQ",vm:"1",name:"Prescription Overview Sequence",retired:""},"0x300C0115":{keyword:"TotalPrescriptionDose",vr:"FL",vm:"1",name:"Total Prescription Dose",retired:""},"0x300C0116":{keyword:"PlanOverviewSequence",vr:"SQ",vm:"1",name:"Plan Overview Sequence",retired:""},"0x300C0117":{keyword:"PlanOverviewIndex",vr:"US",vm:"1",name:"Plan Overview Index",retired:""},"0x300C0118":{keyword:"ReferencedPlanOverviewIndex",vr:"US",vm:"1",name:"Referenced Plan Overview Index",retired:""},"0x300C0119":{keyword:"NumberOfFractionsIncluded",vr:"US",vm:"1",name:"Number of Fractions Included",retired:""},"0x300C0120":{keyword:"DoseCalibrationConditionsSequence",vr:"SQ",vm:"1",name:"Dose Calibration Conditions Sequence",retired:""},"0x300C0121":{keyword:"AbsorbedDoseToMetersetRatio",vr:"FD",vm:"1",name:"Absorbed Dose to Meterset Ratio",retired:""},"0x300C0122":{keyword:"DelineatedRadiationFieldSize",vr:"FD",vm:"2",name:"Delineated Radiation Field Size",retired:""},"0x300C0123":{keyword:"DoseCalibrationConditionsVerifiedFlag",vr:"CS",vm:"1",name:"Dose Calibration Conditions Verified Flag",retired:""},"0x300C0124":{keyword:"CalibrationReferencePointDepth",vr:"FD",vm:"1",name:"Calibration Reference Point Depth",retired:""},"0x300C0125":{keyword:"GatingBeamHoldTransitionSequence",vr:"SQ",vm:"1",name:"Gating Beam Hold Transition Sequence",retired:""},"0x300C0126":{keyword:"BeamHoldTransition",vr:"CS",vm:"1",name:"Beam Hold Transition",retired:""},"0x300C0127":{keyword:"BeamHoldTransitionDateTime",vr:"DT",vm:"1",name:"Beam Hold Transition DateTime",retired:""},"0x300C0128":{keyword:"BeamHoldOriginatingDeviceSequence",vr:"SQ",vm:"1",name:"Beam Hold Originating Device Sequence",retired:""},"0x300C0129":{keyword:"BeamHoldTransitionTriggerSource",vr:"CS",vm:"1",name:"Beam Hold Transition Trigger Source",retired:""},"0x300E0002":{keyword:"ApprovalStatus",vr:"CS",vm:"1",name:"Approval Status",retired:""},"0x300E0004":{keyword:"ReviewDate",vr:"DA",vm:"1",name:"Review Date",retired:""},"0x300E0005":{keyword:"ReviewTime",vr:"TM",vm:"1",name:"Review Time",retired:""},"0x300E0008":{keyword:"ReviewerName",vr:"PN",vm:"1",name:"Reviewer Name",retired:""},"0x30100001":{keyword:"RadiobiologicalDoseEffectSequence",vr:"SQ",vm:"1",name:"Radiobiological Dose Effect Sequence",retired:""},"0x30100002":{keyword:"RadiobiologicalDoseEffectFlag",vr:"CS",vm:"1",name:"Radiobiological Dose Effect Flag",retired:""},"0x30100003":{keyword:"EffectiveDoseCalculationMethodCategoryCodeSequence",vr:"SQ",vm:"1",name:"Effective Dose Calculation Method Category Code Sequence",retired:""},"0x30100004":{keyword:"EffectiveDoseCalculationMethodCodeSequence",vr:"SQ",vm:"1",name:"Effective Dose Calculation Method Code Sequence",retired:""},"0x30100005":{keyword:"EffectiveDoseCalculationMethodDescription",vr:"LO",vm:"1",name:"Effective Dose Calculation Method Description",retired:""},"0x30100006":{keyword:"ConceptualVolumeUID",vr:"UI",vm:"1",name:"Conceptual Volume UID",retired:""},"0x30100007":{keyword:"OriginatingSOPInstanceReferenceSequence",vr:"SQ",vm:"1",name:"Originating SOP Instance Reference Sequence",retired:""},"0x30100008":{keyword:"ConceptualVolumeConstituentSequence",vr:"SQ",vm:"1",name:"Conceptual Volume Constituent Sequence",retired:""},"0x30100009":{keyword:"EquivalentConceptualVolumeInstanceReferenceSequence",vr:"SQ",vm:"1",name:"Equivalent Conceptual Volume Instance Reference Sequence",retired:""},"0x3010000A":{keyword:"EquivalentConceptualVolumesSequence",vr:"SQ",vm:"1",name:"Equivalent Conceptual Volumes Sequence",retired:""},"0x3010000B":{keyword:"ReferencedConceptualVolumeUID",vr:"UI",vm:"1",name:"Referenced Conceptual Volume UID",retired:""},"0x3010000C":{keyword:"ConceptualVolumeCombinationExpression",vr:"UT",vm:"1",name:"Conceptual Volume Combination Expression",retired:""},"0x3010000D":{keyword:"ConceptualVolumeConstituentIndex",vr:"US",vm:"1",name:"Conceptual Volume Constituent Index",retired:""},"0x3010000E":{keyword:"ConceptualVolumeCombinationFlag",vr:"CS",vm:"1",name:"Conceptual Volume Combination Flag",retired:""},"0x3010000F":{keyword:"ConceptualVolumeCombinationDescription",vr:"ST",vm:"1",name:"Conceptual Volume Combination Description",retired:""},"0x30100010":{keyword:"ConceptualVolumeSegmentationDefinedFlag",vr:"CS",vm:"1",name:"Conceptual Volume Segmentation Defined Flag",retired:""},"0x30100011":{keyword:"ConceptualVolumeSegmentationReferenceSequence",vr:"SQ",vm:"1",name:"Conceptual Volume Segmentation Reference Sequence",retired:""},"0x30100012":{keyword:"ConceptualVolumeConstituentSegmentationReferenceSequence",vr:"SQ",vm:"1",name:"Conceptual Volume Constituent Segmentation Reference Sequence",retired:""},"0x30100013":{keyword:"ConstituentConceptualVolumeUID",vr:"UI",vm:"1",name:"Constituent Conceptual Volume UID",retired:""},"0x30100014":{keyword:"DerivationConceptualVolumeSequence",vr:"SQ",vm:"1",name:"Derivation Conceptual Volume Sequence",retired:""},"0x30100015":{keyword:"SourceConceptualVolumeUID",vr:"UI",vm:"1",name:"Source Conceptual Volume UID",retired:""},"0x30100016":{keyword:"ConceptualVolumeDerivationAlgorithmSequence",vr:"SQ",vm:"1",name:"Conceptual Volume Derivation Algorithm Sequence",retired:""},"0x30100017":{keyword:"ConceptualVolumeDescription",vr:"ST",vm:"1",name:"Conceptual Volume Description",retired:""},"0x30100018":{keyword:"SourceConceptualVolumeSequence",vr:"SQ",vm:"1",name:"Source Conceptual Volume Sequence",retired:""},"0x30100019":{keyword:"AuthorIdentificationSequence",vr:"SQ",vm:"1",name:"Author Identification Sequence",retired:""},"0x3010001A":{keyword:"ManufacturerModelVersion",vr:"LO",vm:"1",name:"Manufacturer's Model Version",retired:""},"0x3010001B":{keyword:"DeviceAlternateIdentifier",vr:"UC",vm:"1",name:"Device Alternate Identifier",retired:""},"0x3010001C":{keyword:"DeviceAlternateIdentifierType",vr:"CS",vm:"1",name:"Device Alternate Identifier Type",retired:""},"0x3010001D":{keyword:"DeviceAlternateIdentifierFormat",vr:"LT",vm:"1",name:"Device Alternate Identifier Format",retired:""},"0x3010001E":{keyword:"SegmentationCreationTemplateLabel",vr:"LO",vm:"1",name:"Segmentation Creation Template Label",retired:""},"0x3010001F":{keyword:"SegmentationTemplateUID",vr:"UI",vm:"1",name:"Segmentation Template UID",retired:""},"0x30100020":{keyword:"ReferencedSegmentReferenceIndex",vr:"US",vm:"1",name:"Referenced Segment Reference Index",retired:""},"0x30100021":{keyword:"SegmentReferenceSequence",vr:"SQ",vm:"1",name:"Segment Reference Sequence",retired:""},"0x30100022":{keyword:"SegmentReferenceIndex",vr:"US",vm:"1",name:"Segment Reference Index",retired:""},"0x30100023":{keyword:"DirectSegmentReferenceSequence",vr:"SQ",vm:"1",name:"Direct Segment Reference Sequence",retired:""},"0x30100024":{keyword:"CombinationSegmentReferenceSequence",vr:"SQ",vm:"1",name:"Combination Segment Reference Sequence",retired:""},"0x30100025":{keyword:"ConceptualVolumeSequence",vr:"SQ",vm:"1",name:"Conceptual Volume Sequence",retired:""},"0x30100026":{keyword:"SegmentedRTAccessoryDeviceSequence",vr:"SQ",vm:"1",name:"Segmented RT Accessory Device Sequence",retired:""},"0x30100027":{keyword:"SegmentCharacteristicsSequence",vr:"SQ",vm:"1",name:"Segment Characteristics Sequence",retired:""},"0x30100028":{keyword:"RelatedSegmentCharacteristicsSequence",vr:"SQ",vm:"1",name:"Related Segment Characteristics Sequence",retired:""},"0x30100029":{keyword:"SegmentCharacteristicsPrecedence",vr:"US",vm:"1",name:"Segment Characteristics Precedence",retired:""},"0x3010002A":{keyword:"RTSegmentAnnotationSequence",vr:"SQ",vm:"1",name:"RT Segment Annotation Sequence",retired:""},"0x3010002B":{keyword:"SegmentAnnotationCategoryCodeSequence",vr:"SQ",vm:"1",name:"Segment Annotation Category Code Sequence",retired:""},"0x3010002C":{keyword:"SegmentAnnotationTypeCodeSequence",vr:"SQ",vm:"1",name:"Segment Annotation Type Code Sequence",retired:""},"0x3010002D":{keyword:"DeviceLabel",vr:"LO",vm:"1",name:"Device Label",retired:""},"0x3010002E":{keyword:"DeviceTypeCodeSequence",vr:"SQ",vm:"1",name:"Device Type Code Sequence",retired:""},"0x3010002F":{keyword:"SegmentAnnotationTypeModifierCodeSequence",vr:"SQ",vm:"1",name:"Segment Annotation Type Modifier Code Sequence",retired:""},"0x30100030":{keyword:"PatientEquipmentRelationshipCodeSequence",vr:"SQ",vm:"1",name:"Patient Equipment Relationship Code Sequence",retired:""},"0x30100031":{keyword:"ReferencedFiducialsUID",vr:"UI",vm:"1",name:"Referenced Fiducials UID",retired:""},"0x30100032":{keyword:"PatientTreatmentOrientationSequence",vr:"SQ",vm:"1",name:"Patient Treatment Orientation Sequence",retired:""},"0x30100033":{keyword:"UserContentLabel",vr:"SH",vm:"1",name:"User Content Label",retired:""},"0x30100034":{keyword:"UserContentLongLabel",vr:"LO",vm:"1",name:"User Content Long Label",retired:""},"0x30100035":{keyword:"EntityLabel",vr:"SH",vm:"1",name:"Entity Label",retired:""},"0x30100036":{keyword:"EntityName",vr:"LO",vm:"1",name:"Entity Name",retired:""},"0x30100037":{keyword:"EntityDescription",vr:"ST",vm:"1",name:"Entity Description",retired:""},"0x30100038":{keyword:"EntityLongLabel",vr:"LO",vm:"1",name:"Entity Long Label",retired:""},"0x30100039":{keyword:"DeviceIndex",vr:"US",vm:"1",name:"Device Index",retired:""},"0x3010003A":{keyword:"RTTreatmentPhaseIndex",vr:"US",vm:"1",name:"RT Treatment Phase Index",retired:""},"0x3010003B":{keyword:"RTTreatmentPhaseUID",vr:"UI",vm:"1",name:"RT Treatment Phase UID",retired:""},"0x3010003C":{keyword:"RTPrescriptionIndex",vr:"US",vm:"1",name:"RT Prescription Index",retired:""},"0x3010003D":{keyword:"RTSegmentAnnotationIndex",vr:"US",vm:"1",name:"RT Segment Annotation Index",retired:""},"0x3010003E":{keyword:"BasisRTTreatmentPhaseIndex",vr:"US",vm:"1",name:"Basis RT Treatment Phase Index",retired:""},"0x3010003F":{keyword:"RelatedRTTreatmentPhaseIndex",vr:"US",vm:"1",name:"Related RT Treatment Phase Index",retired:""},"0x30100040":{keyword:"ReferencedRTTreatmentPhaseIndex",vr:"US",vm:"1",name:"Referenced RT Treatment Phase Index",retired:""},"0x30100041":{keyword:"ReferencedRTPrescriptionIndex",vr:"US",vm:"1",name:"Referenced RT Prescription Index",retired:""},"0x30100042":{keyword:"ReferencedParentRTPrescriptionIndex",vr:"US",vm:"1",name:"Referenced Parent RT Prescription Index",retired:""},"0x30100043":{keyword:"ManufacturerDeviceIdentifier",vr:"ST",vm:"1",name:"Manufacturer's Device Identifier",retired:""},"0x30100044":{keyword:"InstanceLevelReferencedPerformedProcedureStepSequence",vr:"SQ",vm:"1",name:"Instance-Level Referenced Performed Procedure Step Sequence",retired:""},"0x30100045":{keyword:"RTTreatmentPhaseIntentPresenceFlag",vr:"CS",vm:"1",name:"RT Treatment Phase Intent Presence Flag",retired:""},"0x30100046":{keyword:"RadiotherapyTreatmentType",vr:"CS",vm:"1",name:"Radiotherapy Treatment Type",retired:""},"0x30100047":{keyword:"TeletherapyRadiationType",vr:"CS",vm:"1-n",name:"Teletherapy Radiation Type",retired:""},"0x30100048":{keyword:"BrachytherapySourceType",vr:"CS",vm:"1-n",name:"Brachytherapy Source Type",retired:""},"0x30100049":{keyword:"ReferencedRTTreatmentPhaseSequence",vr:"SQ",vm:"1",name:"Referenced RT Treatment Phase Sequence",retired:""},"0x3010004A":{keyword:"ReferencedDirectSegmentInstanceSequence",vr:"SQ",vm:"1",name:"Referenced Direct Segment Instance Sequence",retired:""},"0x3010004B":{keyword:"IntendedRTTreatmentPhaseSequence",vr:"SQ",vm:"1",name:"Intended RT Treatment Phase Sequence",retired:""},"0x3010004C":{keyword:"IntendedPhaseStartDate",vr:"DA",vm:"1",name:"Intended Phase Start Date",retired:""},"0x3010004D":{keyword:"IntendedPhaseEndDate",vr:"DA",vm:"1",name:"Intended Phase End Date",retired:""},"0x3010004E":{keyword:"RTTreatmentPhaseIntervalSequence",vr:"SQ",vm:"1",name:"RT Treatment Phase Interval Sequence",retired:""},"0x3010004F":{keyword:"TemporalRelationshipIntervalAnchor",vr:"CS",vm:"1",name:"Temporal Relationship Interval Anchor",retired:""},"0x30100050":{keyword:"MinimumNumberOfIntervalDays",vr:"FD",vm:"1",name:"Minimum Number of Interval Days",retired:""},"0x30100051":{keyword:"MaximumNumberOfIntervalDays",vr:"FD",vm:"1",name:"Maximum Number of Interval Days",retired:""},"0x30100052":{keyword:"PertinentSOPClassesInStudy",vr:"UI",vm:"1-n",name:"Pertinent SOP Classes in Study",retired:""},"0x30100053":{keyword:"PertinentSOPClassesInSeries",vr:"UI",vm:"1-n",name:"Pertinent SOP Classes in Series",retired:""},"0x30100054":{keyword:"RTPrescriptionLabel",vr:"LO",vm:"1",name:"RT Prescription Label",retired:""},"0x30100055":{keyword:"RTPhysicianIntentPredecessorSequence",vr:"SQ",vm:"1",name:"RT Physician Intent Predecessor Sequence",retired:""},"0x30100056":{keyword:"RTTreatmentApproachLabel",vr:"LO",vm:"1",name:"RT Treatment Approach Label",retired:""},"0x30100057":{keyword:"RTPhysicianIntentSequence",vr:"SQ",vm:"1",name:"RT Physician Intent Sequence",retired:""},"0x30100058":{keyword:"RTPhysicianIntentIndex",vr:"US",vm:"1",name:"RT Physician Intent Index",retired:""},"0x30100059":{keyword:"RTTreatmentIntentType",vr:"CS",vm:"1",name:"RT Treatment Intent Type",retired:""},"0x3010005A":{keyword:"RTPhysicianIntentNarrative",vr:"UT",vm:"1",name:"RT Physician Intent Narrative",retired:""},"0x3010005B":{keyword:"RTProtocolCodeSequence",vr:"SQ",vm:"1",name:"RT Protocol Code Sequence",retired:""},"0x3010005C":{keyword:"ReasonForSuperseding",vr:"ST",vm:"1",name:"Reason for Superseding",retired:""},"0x3010005D":{keyword:"RTDiagnosisCodeSequence",vr:"SQ",vm:"1",name:"RT Diagnosis Code Sequence",retired:""},"0x3010005E":{keyword:"ReferencedRTPhysicianIntentIndex",vr:"US",vm:"1",name:"Referenced RT Physician Intent Index",retired:""},"0x3010005F":{keyword:"RTPhysicianIntentInputInstanceSequence",vr:"SQ",vm:"1",name:"RT Physician Intent Input Instance Sequence",retired:""},"0x30100060":{keyword:"RTAnatomicPrescriptionSequence",vr:"SQ",vm:"1",name:"RT Anatomic Prescription Sequence",retired:""},"0x30100061":{keyword:"PriorTreatmentDoseDescription",vr:"UT",vm:"1",name:"Prior Treatment Dose Description",retired:""},"0x30100062":{keyword:"PriorTreatmentReferenceSequence",vr:"SQ",vm:"1",name:"Prior Treatment Reference Sequence",retired:""},"0x30100063":{keyword:"DosimetricObjectiveEvaluationScope",vr:"CS",vm:"1",name:"Dosimetric Objective Evaluation Scope",retired:""},"0x30100064":{keyword:"TherapeuticRoleCategoryCodeSequence",vr:"SQ",vm:"1",name:"Therapeutic Role Category Code Sequence",retired:""},"0x30100065":{keyword:"TherapeuticRoleTypeCodeSequence",vr:"SQ",vm:"1",name:"Therapeutic Role Type Code Sequence",retired:""},"0x30100066":{keyword:"ConceptualVolumeOptimizationPrecedence",vr:"US",vm:"1",name:"Conceptual Volume Optimization Precedence",retired:""},"0x30100067":{keyword:"ConceptualVolumeCategoryCodeSequence",vr:"SQ",vm:"1",name:"Conceptual Volume Category Code Sequence",retired:""},"0x30100068":{keyword:"ConceptualVolumeBlockingConstraint",vr:"CS",vm:"1",name:"Conceptual Volume Blocking Constraint",retired:""},"0x30100069":{keyword:"ConceptualVolumeTypeCodeSequence",vr:"SQ",vm:"1",name:"Conceptual Volume Type Code Sequence",retired:""},"0x3010006A":{keyword:"ConceptualVolumeTypeModifierCodeSequence",vr:"SQ",vm:"1",name:"Conceptual Volume Type Modifier Code Sequence",retired:""},"0x3010006B":{keyword:"RTPrescriptionSequence",vr:"SQ",vm:"1",name:"RT Prescription Sequence",retired:""},"0x3010006C":{keyword:"DosimetricObjectiveSequence",vr:"SQ",vm:"1",name:"Dosimetric Objective Sequence",retired:""},"0x3010006D":{keyword:"DosimetricObjectiveTypeCodeSequence",vr:"SQ",vm:"1",name:"Dosimetric Objective Type Code Sequence",retired:""},"0x3010006E":{keyword:"DosimetricObjectiveUID",vr:"UI",vm:"1",name:"Dosimetric Objective UID",retired:""},"0x3010006F":{keyword:"ReferencedDosimetricObjectiveUID",vr:"UI",vm:"1",name:"Referenced Dosimetric Objective UID",retired:""},"0x30100070":{keyword:"DosimetricObjectiveParameterSequence",vr:"SQ",vm:"1",name:"Dosimetric Objective Parameter Sequence",retired:""},"0x30100071":{keyword:"ReferencedDosimetricObjectivesSequence",vr:"SQ",vm:"1",name:"Referenced Dosimetric Objectives Sequence",retired:""},"0x30100073":{keyword:"AbsoluteDosimetricObjectiveFlag",vr:"CS",vm:"1",name:"Absolute Dosimetric Objective Flag",retired:""},"0x30100074":{keyword:"DosimetricObjectiveWeight",vr:"FD",vm:"1",name:"Dosimetric Objective Weight",retired:""},"0x30100075":{keyword:"DosimetricObjectivePurpose",vr:"CS",vm:"1",name:"Dosimetric Objective Purpose",retired:""},"0x30100076":{keyword:"PlanningInputInformationSequence",vr:"SQ",vm:"1",name:"Planning Input Information Sequence",retired:""},"0x30100077":{keyword:"TreatmentSite",vr:"LO",vm:"1",name:"Treatment Site",retired:""},"0x30100078":{keyword:"TreatmentSiteCodeSequence",vr:"SQ",vm:"1",name:"Treatment Site Code Sequence",retired:""},"0x30100079":{keyword:"FractionPatternSequence",vr:"SQ",vm:"1",name:"Fraction Pattern Sequence",retired:""},"0x3010007A":{keyword:"TreatmentTechniqueNotes",vr:"UT",vm:"1",name:"Treatment Technique Notes",retired:""},"0x3010007B":{keyword:"PrescriptionNotes",vr:"UT",vm:"1",name:"Prescription Notes",retired:""},"0x3010007C":{keyword:"NumberOfIntervalFractions",vr:"IS",vm:"1",name:"Number of Interval Fractions",retired:""},"0x3010007D":{keyword:"NumberOfFractions",vr:"US",vm:"1",name:"Number of Fractions",retired:""},"0x3010007E":{keyword:"IntendedDeliveryDuration",vr:"US",vm:"1",name:"Intended Delivery Duration",retired:""},"0x3010007F":{keyword:"FractionationNotes",vr:"UT",vm:"1",name:"Fractionation Notes",retired:""},"0x30100080":{keyword:"RTTreatmentTechniqueCodeSequence",vr:"SQ",vm:"1",name:"RT Treatment Technique Code Sequence",retired:""},"0x30100081":{keyword:"PrescriptionNotesSequence",vr:"SQ",vm:"1",name:"Prescription Notes Sequence",retired:""},"0x30100082":{keyword:"FractionBasedRelationshipSequence",vr:"SQ",vm:"1",name:"Fraction-Based Relationship Sequence",retired:""},"0x30100083":{keyword:"FractionBasedRelationshipIntervalAnchor",vr:"CS",vm:"1",name:"Fraction-Based Relationship Interval Anchor",retired:""},"0x30100084":{keyword:"MinimumHoursBetweenFractions",vr:"FD",vm:"1",name:"Minimum Hours between Fractions",retired:""},"0x30100085":{keyword:"IntendedFractionStartTime",vr:"TM",vm:"1-n",name:"Intended Fraction Start Time",retired:""},"0x30100086":{keyword:"IntendedStartDayOfWeek",vr:"LT",vm:"1",name:"Intended Start Day of Week",retired:""},"0x30100087":{keyword:"WeekdayFractionPatternSequence",vr:"SQ",vm:"1",name:"Weekday Fraction Pattern Sequence",retired:""},"0x30100088":{keyword:"DeliveryTimeStructureCodeSequence",vr:"SQ",vm:"1",name:"Delivery Time Structure Code Sequence",retired:""},"0x30100089":{keyword:"TreatmentSiteModifierCodeSequence",vr:"SQ",vm:"1",name:"Treatment Site Modifier Code Sequence",retired:""},"0x30100090":{keyword:"RoboticBaseLocationIndicator",vr:"CS",vm:"1",name:"Robotic Base Location Indicator",retired:"Retired"},"0x30100091":{keyword:"RoboticPathNodeSetCodeSequence",vr:"SQ",vm:"1",name:"Robotic Path Node Set Code Sequence",retired:""},"0x30100092":{keyword:"RoboticNodeIdentifier",vr:"UL",vm:"1",name:"Robotic Node Identifier",retired:""},"0x30100093":{keyword:"RTTreatmentSourceCoordinates",vr:"FD",vm:"3",name:"RT Treatment Source Coordinates",retired:""},"0x30100094":{keyword:"RadiationSourceCoordinateSystemYawAngle",vr:"FD",vm:"1",name:"Radiation Source Coordinate SystemYaw Angle",retired:""},"0x30100095":{keyword:"RadiationSourceCoordinateSystemRollAngle",vr:"FD",vm:"1",name:"Radiation Source Coordinate SystemRoll Angle",retired:""},"0x30100096":{keyword:"RadiationSourceCoordinateSystemPitchAngle",vr:"FD",vm:"1",name:"Radiation Source Coordinate System Pitch Angle",retired:""},"0x30100097":{keyword:"RoboticPathControlPointSequence",vr:"SQ",vm:"1",name:"Robotic Path Control Point Sequence",retired:""},"0x30100098":{keyword:"TomotherapeuticControlPointSequence",vr:"SQ",vm:"1",name:"Tomotherapeutic Control Point Sequence",retired:""},"0x30100099":{keyword:"TomotherapeuticLeafOpenDurations",vr:"FD",vm:"1-n",name:"Tomotherapeutic Leaf Open Durations",retired:""},"0x3010009A":{keyword:"TomotherapeuticLeafInitialClosedDurations",vr:"FD",vm:"1-n",name:"Tomotherapeutic Leaf Initial Closed Durations",retired:""},"0x301000A0":{keyword:"ConceptualVolumeIdentificationSequence",vr:"SQ",vm:"1",name:"Conceptual Volume Identification Sequence",retired:""},"0x40000010":{keyword:"Arbitrary",vr:"LT",vm:"1",name:"Arbitrary",retired:"Retired"},"0x40004000":{keyword:"TextComments",vr:"LT",vm:"1",name:"Text Comments",retired:"Retired"},"0x40080040":{keyword:"ResultsID",vr:"SH",vm:"1",name:"Results ID",retired:"Retired"},"0x40080042":{keyword:"ResultsIDIssuer",vr:"LO",vm:"1",name:"Results ID Issuer",retired:"Retired"},"0x40080050":{keyword:"ReferencedInterpretationSequence",vr:"SQ",vm:"1",name:"Referenced Interpretation Sequence",retired:"Retired"},"0x400800FF":{keyword:"ReportProductionStatusTrial",vr:"CS",vm:"1",name:"Report Production Status (Trial)",retired:"Retired"},"0x40080100":{keyword:"InterpretationRecordedDate",vr:"DA",vm:"1",name:"Interpretation Recorded Date",retired:"Retired"},"0x40080101":{keyword:"InterpretationRecordedTime",vr:"TM",vm:"1",name:"Interpretation Recorded Time",retired:"Retired"},"0x40080102":{keyword:"InterpretationRecorder",vr:"PN",vm:"1",name:"Interpretation Recorder",retired:"Retired"},"0x40080103":{keyword:"ReferenceToRecordedSound",vr:"LO",vm:"1",name:"Reference to Recorded Sound",retired:"Retired"},"0x40080108":{keyword:"InterpretationTranscriptionDate",vr:"DA",vm:"1",name:"Interpretation Transcription Date",retired:"Retired"},"0x40080109":{keyword:"InterpretationTranscriptionTime",vr:"TM",vm:"1",name:"Interpretation Transcription Time",retired:"Retired"},"0x4008010A":{keyword:"InterpretationTranscriber",vr:"PN",vm:"1",name:"Interpretation Transcriber",retired:"Retired"},"0x4008010B":{keyword:"InterpretationText",vr:"ST",vm:"1",name:"Interpretation Text",retired:"Retired"},"0x4008010C":{keyword:"InterpretationAuthor",vr:"PN",vm:"1",name:"Interpretation Author",retired:"Retired"},"0x40080111":{keyword:"InterpretationApproverSequence",vr:"SQ",vm:"1",name:"Interpretation Approver Sequence",retired:"Retired"},"0x40080112":{keyword:"InterpretationApprovalDate",vr:"DA",vm:"1",name:"Interpretation Approval Date",retired:"Retired"},"0x40080113":{keyword:"InterpretationApprovalTime",vr:"TM",vm:"1",name:"Interpretation Approval Time",retired:"Retired"},"0x40080114":{keyword:"PhysicianApprovingInterpretation",vr:"PN",vm:"1",name:"Physician Approving Interpretation",retired:"Retired"},"0x40080115":{keyword:"InterpretationDiagnosisDescription",vr:"LT",vm:"1",name:"Interpretation Diagnosis Description",retired:"Retired"},"0x40080117":{keyword:"InterpretationDiagnosisCodeSequence",vr:"SQ",vm:"1",name:"Interpretation Diagnosis Code Sequence",retired:"Retired"},"0x40080118":{keyword:"ResultsDistributionListSequence",vr:"SQ",vm:"1",name:"Results Distribution List Sequence",retired:"Retired"},"0x40080119":{keyword:"DistributionName",vr:"PN",vm:"1",name:"Distribution Name",retired:"Retired"},"0x4008011A":{keyword:"DistributionAddress",vr:"LO",vm:"1",name:"Distribution Address",retired:"Retired"},"0x40080200":{keyword:"InterpretationID",vr:"SH",vm:"1",name:"Interpretation ID",retired:"Retired"},"0x40080202":{keyword:"InterpretationIDIssuer",vr:"LO",vm:"1",name:"Interpretation ID Issuer",retired:"Retired"},"0x40080210":{keyword:"InterpretationTypeID",vr:"CS",vm:"1",name:"Interpretation Type ID",retired:"Retired"},"0x40080212":{keyword:"InterpretationStatusID",vr:"CS",vm:"1",name:"Interpretation Status ID",retired:"Retired"},"0x40080300":{keyword:"Impressions",vr:"ST",vm:"1",name:"Impressions",retired:"Retired"},"0x40084000":{keyword:"ResultsComments",vr:"ST",vm:"1",name:"Results Comments",retired:"Retired"},"0x40100001":{keyword:"LowEnergyDetectors",vr:"CS",vm:"1",name:"Low Energy Detectors",retired:""},"0x40100002":{keyword:"HighEnergyDetectors",vr:"CS",vm:"1",name:"High Energy Detectors",retired:""},"0x40100004":{keyword:"DetectorGeometrySequence",vr:"SQ",vm:"1",name:"Detector Geometry Sequence",retired:""},"0x40101001":{keyword:"ThreatROIVoxelSequence",vr:"SQ",vm:"1",name:"Threat ROI Voxel Sequence",retired:""},"0x40101004":{keyword:"ThreatROIBase",vr:"FL",vm:"3",name:"Threat ROI Base",retired:""},"0x40101005":{keyword:"ThreatROIExtents",vr:"FL",vm:"3",name:"Threat ROI Extents",retired:""},"0x40101006":{keyword:"ThreatROIBitmap",vr:"OB",vm:"1",name:"Threat ROI Bitmap",retired:""},"0x40101007":{keyword:"RouteSegmentID",vr:"SH",vm:"1",name:"Route Segment ID",retired:""},"0x40101008":{keyword:"GantryType",vr:"CS",vm:"1",name:"Gantry Type",retired:""},"0x40101009":{keyword:"OOIOwnerType",vr:"CS",vm:"1",name:"OOI Owner Type",retired:""},"0x4010100A":{keyword:"RouteSegmentSequence",vr:"SQ",vm:"1",name:"Route Segment Sequence",retired:""},"0x40101010":{keyword:"PotentialThreatObjectID",vr:"US",vm:"1",name:"Potential Threat Object ID",retired:""},"0x40101011":{keyword:"ThreatSequence",vr:"SQ",vm:"1",name:"Threat Sequence",retired:""},"0x40101012":{keyword:"ThreatCategory",vr:"CS",vm:"1",name:"Threat Category",retired:""},"0x40101013":{keyword:"ThreatCategoryDescription",vr:"LT",vm:"1",name:"Threat Category Description",retired:""},"0x40101014":{keyword:"ATDAbilityAssessment",vr:"CS",vm:"1",name:"ATD Ability Assessment",retired:""},"0x40101015":{keyword:"ATDAssessmentFlag",vr:"CS",vm:"1",name:"ATD Assessment Flag",retired:""},"0x40101016":{keyword:"ATDAssessmentProbability",vr:"FL",vm:"1",name:"ATD Assessment Probability",retired:""},"0x40101017":{keyword:"Mass",vr:"FL",vm:"1",name:"Mass",retired:""},"0x40101018":{keyword:"Density",vr:"FL",vm:"1",name:"Density",retired:""},"0x40101019":{keyword:"ZEffective",vr:"FL",vm:"1",name:"Z Effective",retired:""},"0x4010101A":{keyword:"BoardingPassID",vr:"SH",vm:"1",name:"Boarding Pass ID",retired:""},"0x4010101B":{keyword:"CenterOfMass",vr:"FL",vm:"3",name:"Center of Mass",retired:""},"0x4010101C":{keyword:"CenterOfPTO",vr:"FL",vm:"3",name:"Center of PTO",retired:""},"0x4010101D":{keyword:"BoundingPolygon",vr:"FL",vm:"6-n",name:"Bounding Polygon",retired:""},"0x4010101E":{keyword:"RouteSegmentStartLocationID",vr:"SH",vm:"1",name:"Route Segment Start Location ID",retired:""},"0x4010101F":{keyword:"RouteSegmentEndLocationID",vr:"SH",vm:"1",name:"Route Segment End Location ID",retired:""},"0x40101020":{keyword:"RouteSegmentLocationIDType",vr:"CS",vm:"1",name:"Route Segment Location ID Type",retired:""},"0x40101021":{keyword:"AbortReason",vr:"CS",vm:"1-n",name:"Abort Reason",retired:""},"0x40101023":{keyword:"VolumeOfPTO",vr:"FL",vm:"1",name:"Volume of PTO",retired:""},"0x40101024":{keyword:"AbortFlag",vr:"CS",vm:"1",name:"Abort Flag",retired:""},"0x40101025":{keyword:"RouteSegmentStartTime",vr:"DT",vm:"1",name:"Route Segment Start Time",retired:""},"0x40101026":{keyword:"RouteSegmentEndTime",vr:"DT",vm:"1",name:"Route Segment End Time",retired:""},"0x40101027":{keyword:"TDRType",vr:"CS",vm:"1",name:"TDR Type",retired:""},"0x40101028":{keyword:"InternationalRouteSegment",vr:"CS",vm:"1",name:"International Route Segment",retired:""},"0x40101029":{keyword:"ThreatDetectionAlgorithmAndVersion",vr:"LO",vm:"1-n",name:"Threat Detection Algorithm and Version",retired:""},"0x4010102A":{keyword:"AssignedLocation",vr:"SH",vm:"1",name:"Assigned Location",retired:""},"0x4010102B":{keyword:"AlarmDecisionTime",vr:"DT",vm:"1",name:"Alarm Decision Time",retired:""},"0x40101031":{keyword:"AlarmDecision",vr:"CS",vm:"1",name:"Alarm Decision",retired:""},"0x40101033":{keyword:"NumberOfTotalObjects",vr:"US",vm:"1",name:"Number of Total Objects",retired:""},"0x40101034":{keyword:"NumberOfAlarmObjects",vr:"US",vm:"1",name:"Number of Alarm Objects",retired:""},"0x40101037":{keyword:"PTORepresentationSequence",vr:"SQ",vm:"1",name:"PTO Representation Sequence",retired:""},"0x40101038":{keyword:"ATDAssessmentSequence",vr:"SQ",vm:"1",name:"ATD Assessment Sequence",retired:""},"0x40101039":{keyword:"TIPType",vr:"CS",vm:"1",name:"TIP Type",retired:""},"0x4010103A":{keyword:"DICOSVersion",vr:"CS",vm:"1",name:"DICOS Version",retired:""},"0x40101041":{keyword:"OOIOwnerCreationTime",vr:"DT",vm:"1",name:"OOI Owner Creation Time",retired:""},"0x40101042":{keyword:"OOIType",vr:"CS",vm:"1",name:"OOI Type",retired:""},"0x40101043":{keyword:"OOISize",vr:"FL",vm:"3",name:"OOI Size",retired:""},"0x40101044":{keyword:"AcquisitionStatus",vr:"CS",vm:"1",name:"Acquisition Status",retired:""},"0x40101045":{keyword:"BasisMaterialsCodeSequence",vr:"SQ",vm:"1",name:"Basis Materials Code Sequence",retired:""},"0x40101046":{keyword:"PhantomType",vr:"CS",vm:"1",name:"Phantom Type",retired:""},"0x40101047":{keyword:"OOIOwnerSequence",vr:"SQ",vm:"1",name:"OOI Owner Sequence",retired:""},"0x40101048":{keyword:"ScanType",vr:"CS",vm:"1",name:"Scan Type",retired:""},"0x40101051":{keyword:"ItineraryID",vr:"LO",vm:"1",name:"Itinerary ID",retired:""},"0x40101052":{keyword:"ItineraryIDType",vr:"SH",vm:"1",name:"Itinerary ID Type",retired:""},"0x40101053":{keyword:"ItineraryIDAssigningAuthority",vr:"LO",vm:"1",name:"Itinerary ID Assigning Authority",retired:""},"0x40101054":{keyword:"RouteID",vr:"SH",vm:"1",name:"Route ID",retired:""},"0x40101055":{keyword:"RouteIDAssigningAuthority",vr:"SH",vm:"1",name:"Route ID Assigning Authority",retired:""},"0x40101056":{keyword:"InboundArrivalType",vr:"CS",vm:"1",name:"Inbound Arrival Type",retired:""},"0x40101058":{keyword:"CarrierID",vr:"SH",vm:"1",name:"Carrier ID",retired:""},"0x40101059":{keyword:"CarrierIDAssigningAuthority",vr:"CS",vm:"1",name:"Carrier ID Assigning Authority",retired:""},"0x40101060":{keyword:"SourceOrientation",vr:"FL",vm:"3",name:"Source Orientation",retired:""},"0x40101061":{keyword:"SourcePosition",vr:"FL",vm:"3",name:"Source Position",retired:""},"0x40101062":{keyword:"BeltHeight",vr:"FL",vm:"1",name:"Belt Height",retired:""},"0x40101064":{keyword:"AlgorithmRoutingCodeSequence",vr:"SQ",vm:"1",name:"Algorithm Routing Code Sequence",retired:""},"0x40101067":{keyword:"TransportClassification",vr:"CS",vm:"1",name:"Transport Classification",retired:""},"0x40101068":{keyword:"OOITypeDescriptor",vr:"LT",vm:"1",name:"OOI Type Descriptor",retired:""},"0x40101069":{keyword:"TotalProcessingTime",vr:"FL",vm:"1",name:"Total Processing Time",retired:""},"0x4010106C":{keyword:"DetectorCalibrationData",vr:"OB",vm:"1",name:"Detector Calibration Data",retired:""},"0x4010106D":{keyword:"AdditionalScreeningPerformed",vr:"CS",vm:"1",name:"Additional Screening Performed",retired:""},"0x4010106E":{keyword:"AdditionalInspectionSelectionCriteria",vr:"CS",vm:"1",name:"Additional Inspection Selection Criteria",retired:""},"0x4010106F":{keyword:"AdditionalInspectionMethodSequence",vr:"SQ",vm:"1",name:"Additional Inspection Method Sequence",retired:""},"0x40101070":{keyword:"AITDeviceType",vr:"CS",vm:"1",name:"AIT Device Type",retired:""},"0x40101071":{keyword:"QRMeasurementsSequence",vr:"SQ",vm:"1",name:"QR Measurements Sequence",retired:""},"0x40101072":{keyword:"TargetMaterialSequence",vr:"SQ",vm:"1",name:"Target Material Sequence",retired:""},"0x40101073":{keyword:"SNRThreshold",vr:"FD",vm:"1",name:"SNR Threshold",retired:""},"0x40101075":{keyword:"ImageScaleRepresentation",vr:"DS",vm:"1",name:"Image Scale Representation",retired:""},"0x40101076":{keyword:"ReferencedPTOSequence",vr:"SQ",vm:"1",name:"Referenced PTO Sequence",retired:""},"0x40101077":{keyword:"ReferencedTDRInstanceSequence",vr:"SQ",vm:"1",name:"Referenced TDR Instance Sequence",retired:""},"0x40101078":{keyword:"PTOLocationDescription",vr:"ST",vm:"1",name:"PTO Location Description",retired:""},"0x40101079":{keyword:"AnomalyLocatorIndicatorSequence",vr:"SQ",vm:"1",name:"Anomaly Locator Indicator Sequence",retired:""},"0x4010107A":{keyword:"AnomalyLocatorIndicator",vr:"FL",vm:"3",name:"Anomaly Locator Indicator",retired:""},"0x4010107B":{keyword:"PTORegionSequence",vr:"SQ",vm:"1",name:"PTO Region Sequence",retired:""},"0x4010107C":{keyword:"InspectionSelectionCriteria",vr:"CS",vm:"1",name:"Inspection Selection Criteria",retired:""},"0x4010107D":{keyword:"SecondaryInspectionMethodSequence",vr:"SQ",vm:"1",name:"Secondary Inspection Method Sequence",retired:""},"0x4010107E":{keyword:"PRCSToRCSOrientation",vr:"DS",vm:"6",name:"PRCS to RCS Orientation",retired:""},"0x4FFE0001":{keyword:"MACParametersSequence",vr:"SQ",vm:"1",name:"MAC Parameters Sequence",retired:""},"0x52009229":{keyword:"SharedFunctionalGroupsSequence",vr:"SQ",vm:"1",name:"Shared Functional Groups Sequence",retired:""},"0x52009230":{keyword:"PerFrameFunctionalGroupsSequence",vr:"SQ",vm:"1",name:"Per-Frame Functional Groups Sequence",retired:""},"0x54000100":{keyword:"WaveformSequence",vr:"SQ",vm:"1",name:"Waveform Sequence",retired:""},"0x54000110":{keyword:"ChannelMinimumValue",vr:"OB or OW",vm:"1",name:"Channel Minimum Value",retired:""},"0x54000112":{keyword:"ChannelMaximumValue",vr:"OB or OW",vm:"1",name:"Channel Maximum Value",retired:""},"0x54001004":{keyword:"WaveformBitsAllocated",vr:"US",vm:"1",name:"Waveform Bits Allocated",retired:""},"0x54001006":{keyword:"WaveformSampleInterpretation",vr:"CS",vm:"1",name:"Waveform Sample Interpretation",retired:""},"0x5400100A":{keyword:"WaveformPaddingValue",vr:"OB or OW",vm:"1",name:"Waveform Padding Value",retired:""},"0x54001010":{keyword:"WaveformData",vr:"OB or OW",vm:"1",name:"Waveform Data",retired:""},"0x56000010":{keyword:"FirstOrderPhaseCorrectionAngle",vr:"OF",vm:"1",name:"First Order Phase Correction Angle",retired:""},"0x56000020":{keyword:"SpectroscopyData",vr:"OF",vm:"1",name:"Spectroscopy Data",retired:""},"0x7FE00001":{keyword:"ExtendedOffsetTable",vr:"OV",vm:"1",name:"Extended Offset Table",retired:""},"0x7FE00002":{keyword:"ExtendedOffsetTableLengths",vr:"OV",vm:"1",name:"Extended Offset Table Lengths",retired:""},"0x7FE00003":{keyword:"EncapsulatedPixelDataValueTotalLength",vr:"UV",vm:"1",name:"Encapsulated Pixel Data Value Total Length",retired:""},"0x7FE00008":{keyword:"FloatPixelData",vr:"OF",vm:"1",name:"Float Pixel Data",retired:""},"0x7FE00009":{keyword:"DoubleFloatPixelData",vr:"OD",vm:"1",name:"Double Float Pixel Data",retired:""},"0x7FE00010":{keyword:"PixelData",vr:"OB or OW",vm:"1",name:"Pixel Data",retired:""},"0x7FE00020":{keyword:"CoefficientsSDVN",vr:"OW",vm:"1",name:"Coefficients SDVN",retired:"Retired"},"0x7FE00030":{keyword:"CoefficientsSDHN",vr:"OW",vm:"1",name:"Coefficients SDHN",retired:"Retired"},"0x7FE00040":{keyword:"CoefficientsSDDN",vr:"OW",vm:"1",name:"Coefficients SDDN",retired:"Retired"},"0xFFFAFFFA":{keyword:"DigitalSignaturesSequence",vr:"SQ",vm:"1",name:"Digital Signatures Sequence",retired:""},"0xFFFCFFFC":{keyword:"DataSetTrailingPadding",vr:"OB",vm:"1",name:"Data Set Trailing Padding",retired:""},"0xFFFEE000":{keyword:"Item",vr:"NONE",vm:"1",name:"Item",retired:""},"0xFFFEE00D":{keyword:"ItemDelimitationItem",vr:"NONE",vm:"1",name:"Item Delimitation Item",retired:""},"0xFFFEE0DD":{keyword:"SequenceDelimitationItem",vr:"NONE",vm:"1",name:"Sequence Delimitation Item",retired:""}};function oh(t,n){1&t&&m.nrm(0,"metadata-tag-component",6),2&t&&m.Y8G("rootNode",n.$implicit)}function ah(t,n){if(1&t&&(m.j41(0,"ul"),m.DNE(1,oh,1,1,"metadata-tag-component",5),m.k0s()),2&t){const i=m.XpG(2);m.R7$(),m.Y8G("ngForOf",i.rootNode.childNodes)}}function sh(t,n){if(1&t&&(m.qex(0),m.j41(1,"li")(2,"div",1)(3,"span",2),m.EFF(4),m.k0s(),m.j41(5,"span",3),m.EFF(6),m.k0s(),m.j41(7,"span",4),m.EFF(8),m.k0s()(),m.DNE(9,ah,2,1,"ul",0),m.k0s(),m.bVm()),2&t){const i=m.XpG();m.R7$(4),m.SpI("(",i.rootNode.dicomKey||"",")"),m.R7$(2),m.JRh(i.rootNode.description||""),m.R7$(2),m.SpI("\xa0 ",i.rootNode.valueText||"",""),m.R7$(),m.Y8G("ngIf",null==i.rootNode?null:i.rootNode.childNodes)}}function ch(t,n){1&t&&m.nrm(0,"metadata-tag-component",7),2&t&&m.Y8G("rootNode",n.$implicit)}let lh=(()=>{class t{static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=m.VBU({type:t,selectors:[["metadata-tag-component"]],inputs:{rootNode:"rootNode"},decls:1,vars:1,consts:[[4,"ngIf"],[1,"row"],[1,"key"],[1,"description"],[1,"value"],[3,"rootNode",4,"ngFor","ngForOf"],[3,"rootNode"]],template:function(o,s){1&o&&m.DNE(0,sh,10,4,"ng-container",0),2&o&&m.Y8G("ngIf",s.rootNode)},dependencies:[t,q.MD,q.Sq,q.bT],styles:["ul[_ngcontent-%COMP%]{list-style-type:none}.key[_ngcontent-%COMP%]{color:#666;display:inline-block;font-size:12px}.description[_ngcontent-%COMP%]{color:#1a1a1a;display:inline-block;font-size:14px;padding-left:8px}.value[_ngcontent-%COMP%]{color:#000;display:inline-block;font-size:14px;margin-left:auto;text-overflow:ellipsis;overflow:hidden}.row[_ngcontent-%COMP%]{display:flex;font-size:14px;flex-flow:row wrap;border-bottom:1px solid #eee}"]})}}return t})(),mh=(()=>{class t{constructor(i,o){this.slideExtraMetadata=i,this.dialogRef=o,this.hidden=!0,this.rootNodes=[]}ngOnInit(){this.rootNodes=this.generateNodes(this.slideExtraMetadata.rawValue)}openSlideData(){this.dialogRef.close({openSlideData:!0})}generateNodes(i){return Object.keys(i).map(o=>this.generateNode(o,i[o])).sort((o,s)=>o.dicomKey.localeCompare(s.dicomKey))}generateNode(i,o){const s=o.Value,d=function uh(t){return ih_dicom_tags_main["0x"+t]?.name||""}(i);let u="",p=[];return(0,cn.bF)(s)||(0,cn.VE)(s)?u=s.join():(0,cn.AH)(s)?p=s.map(h=>this.makeNodeFromPersonName(h)):(0,cn.fd)(s)&&(p=s.flatMap(h=>this.generateNodes(h))),{dicomKey:i,description:d,valueText:u,childNodes:p}}makeNodeFromPersonName(i){return{dicomKey:"Alphabetic",description:"",valueText:i.Alphabetic}}static{this.\u0275fac=function(o){return new(o||t)(m.rXU(M.Vh),m.rXU(M.CP))}}static{this.\u0275cmp=m.VBU({type:t,selectors:[["slide-metadata-component"]],inputs:{hidden:"hidden"},decls:13,vars:1,consts:[["mat-dialog-title","",1,"mat-dialog-metadata-title"],[1,"dialog-title"],["mat-icon-button","","aria-label","Slide data","matTooltip","Open slide data",1,"slide-data-button",3,"click"],["mat-icon-button","","aria-label","Close","mat-dialog-close",""],["mat-dialog-content",""],[1,"metadata-root"],[3,"rootNode",4,"ngFor","ngForOf"],[3,"rootNode"]],template:function(o,s){1&o&&(m.j41(0,"div",0)(1,"div",1)(2,"div"),m.EFF(3," Slide Metadata "),m.k0s(),m.j41(4,"button",2),m.bIt("click",function(){return s.openSlideData()}),m.j41(5,"mat-icon"),m.EFF(6,"account_tree"),m.k0s()()(),m.j41(7,"button",3)(8,"mat-icon"),m.EFF(9,"close"),m.k0s()()(),m.j41(10,"div",4)(11,"ul",5),m.DNE(12,ch,1,1,"metadata-tag-component",6),m.k0s()()),2&o&&(m.R7$(12),m.Y8G("ngForOf",s.rootNodes))},dependencies:[K.m_,K.An,lh,q.MD,q.Sq,V.Hl,V.iY,M.hM,M.tx,M.BI,M.Yi],styles:[".metadata-root[_ngcontent-%COMP%]{list-style-type:none;padding:0}.mat-dialog-metadata-title[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr min-content}.dialog-title[_ngcontent-%COMP%]{align-content:center;display:grid;grid-template-columns:max-content max-content;grid-column-gap:.5em}"]})}}return t})();var Sa=D(2168),Bc=D(2639),Zu=D(9423),Vc=D(6372),el=D(7955),tl=D(2073),vh=D(3266),ph=D(6969),hh=D(5416),f0=D(7060),rl=D(3);const fh=["context_menu"],gh=["deleteAnnotationConfirmationDialogTemplate"],yh=["labelInput"],Sh=["overlayTemplate"],xh=["quickviewImageDialogTemplate"],wh=(t,n)=>n.accessionNumber,g0=t=>({"viewer-action-selected":t}),Ch=t=>({"annotations-header-scroll-bar-icon":t}),kh=t=>({"annotation-layer-info-selected ":t});function _h(t,n){if(1&t){const i=m.RV6();m.j41(0,"div",37),m.bIt("click",function(s){return m.eBV(i),m.Njj(s.stopPropagation())}),m.j41(1,"button",38),m.bIt("click",function(s){m.eBV(i);const d=m.XpG();return s.stopPropagation(),m.Njj(d.onDrawPolygonsTool(d.viewerMenuAction.DRAW_POLYGON))}),m.j41(2,"mat-icon",18),m.EFF(3,"draw"),m.k0s()()()}if(2&t){const i=m.XpG();m.Y8G("matTooltip",!i.olMap||i.disableAnnotationTools?"No read/write permissions to Dicom Annotation Store":""),m.R7$(),m.Y8G("ngClass",m.eq3(3,g0,i.selectedViewerAction===i.viewerMenuAction.DRAW_POLYGON))("disabled",!i.olMap||i.disableAnnotationTools||i.loadingDicomAnnotations)}}function Dh(t,n){if(1&t){const i=m.RV6();m.j41(0,"div",37),m.bIt("click",function(s){return m.eBV(i),m.Njj(s.stopPropagation())}),m.j41(1,"button",39),m.bIt("click",function(s){m.eBV(i);const d=m.XpG();return s.stopPropagation(),m.Njj(d.onDrawPolygonsTool(d.viewerMenuAction.DRAW_BOX))}),m.j41(2,"mat-icon",18),m.EFF(3,"square"),m.k0s()()()}if(2&t){const i=m.XpG();m.Y8G("matTooltip",!i.olMap||i.disableAnnotationTools?"No read/write permissions to Dicom Annotation Store":""),m.R7$(),m.Y8G("ngClass",m.eq3(3,g0,i.selectedViewerAction===i.viewerMenuAction.DRAW_BOX))("disabled",!i.olMap||i.disableAnnotationTools||i.loadingDicomAnnotations)}}function Ph(t,n){if(1&t){const i=m.RV6();m.j41(0,"div",37),m.bIt("click",function(s){return m.eBV(i),m.Njj(s.stopPropagation())}),m.j41(1,"button",40),m.bIt("click",function(s){m.eBV(i);const d=m.XpG();return s.stopPropagation(),m.Njj(d.onDrawPolygonsTool(d.viewerMenuAction.DRAW_POINT))}),m.j41(2,"mat-icon",41),m.EFF(3,"scatter_plot"),m.k0s()()()}if(2&t){const i=m.XpG();m.Y8G("matTooltip",!i.olMap||i.disableAnnotationTools?"No read/write permissions to Dicom Annotation Store":""),m.R7$(),m.Y8G("ngClass",m.eq3(3,g0,i.selectedViewerAction===i.viewerMenuAction.DRAW_POINT))("disabled",!i.olMap||i.disableAnnotationTools||i.loadingDicomAnnotations)}}function bh(t,n){1&t&&(m.j41(0,"div",42)(1,"mat-icon",43),m.EFF(2,"security"),m.k0s(),m.EFF(3," De-Identified "),m.k0s())}function Ih(t,n){if(1&t){const i=m.RV6();m.j41(0,"mat-option",46),m.bIt("click",function(){const s=m.eBV(i).$implicit,d=m.XpG(2);return m.Njj(d.goToCase(s))}),m.EFF(1),m.k0s()}if(2&t){const i=n.$implicit;m.Y8G("value",null==i?null:i.accessionNumber),m.R7$(),m.JRh(i.accessionNumber)}}function Th(t,n){if(1&t&&(m.j41(0,"mat-select",44),m.Z7z(1,Ih,2,2,"mat-option",45,wh),m.k0s()),2&t){const i=m.XpG();m.Y8G("value",null==i.selectedExtraMetaData?null:i.selectedExtraMetaData.caseId),m.R7$(),m.Dyx(i.selectedPathologyCohortCases)}}function Rh(t,n){if(1&t&&(m.j41(0,"span"),m.EFF(1),m.k0s()),2&t){const i=m.XpG();m.R7$(),m.JRh(null==i.selectedExtraMetaData?null:i.selectedExtraMetaData.caseId)}}function Ah(t,n){if(1&t&&(m.j41(0,"div",47),m.nrm(1,"ol-tile-viewer",48),m.k0s()),2&t){const i=m.XpG();m.R7$(),m.Y8G("slideDescriptor",i.selectedSplitViewSlideDescriptor)("slideInfo",i.selectedSlideInfo)("isLabelOrOverviewImage",!0)}}function Oh(t,n){1&t&&(m.j41(0,"div",55),m.EFF(1,' "Permission required." '),m.nrm(2,"br"),m.EFF(3," Your current access level doesn't allow you to retrieve Dicom annotations. "),m.k0s())}function Eh(t,n){1&t&&(m.j41(0,"div",55),m.EFF(1," No annotators "),m.k0s())}function Mh(t,n){if(1&t){const i=m.RV6();m.j41(0,"div",56)(1,"button",57),m.bIt("click",function(){const s=m.eBV(i).$implicit,d=m.XpG(2);return m.Njj(d.toggleAnnotationInstancesSelected(s))}),m.j41(2,"mat-icon"),m.EFF(3),m.k0s()(),m.j41(4,"div",58),m.EFF(5),m.k0s()()}if(2&t){let i,o;const s=n.$implicit,d=m.XpG(2);m.R7$(),m.Y8G("disabled",s.annotatorId===d.currentUser&&d.selectedInstanceIds.has(null!==(i=s.path.instanceUID)&&void 0!==i?i:"")&&d.selectedViewerAction!==d.viewerMenuAction.SELECT),m.R7$(2),m.SpI(" ",d.selectedInstanceIds.has(null!==(o=s.path.instanceUID)&&void 0!==o?o:"")?"check_box":"check_box_outline_blank"," "),m.R7$(),m.Y8G("matTooltip",s.annotatorId),m.R7$(),m.SpI(" ",s.annotatorId," ")}}function Lh(t,n){1&t&&(m.j41(0,"mat-icon",18),m.EFF(1,"visibility"),m.k0s())}function qh(t,n){1&t&&(m.j41(0,"mat-icon",18),m.EFF(1,"visibility_off"),m.k0s())}function Fh(t,n){if(1&t){const i=m.RV6();m.j41(0,"button",66),m.bIt("click",function(s){m.eBV(i);const d=m.XpG(3);return s.stopPropagation(),m.Njj(d.toggleAllSideNavLayerOpacity())}),m.DNE(1,Lh,2,0,"mat-icon",67)(2,qh,2,0,"mat-icon",67),m.k0s()}if(2&t){const i=m.XpG(3);m.Y8G("ngClass",m.eq3(3,Ch,i.sideNavDrawLayers.length>4)),m.R7$(),m.Y8G("ngIf",i.toggleSideNavLayerStyleByLayer.size{class t{constructor(i,o,s,d,u,p,h,v,f,y,S,w,U){this.activatedRoute=i,this.cohortService=o,this.dialogService=s,this.imageViewerPageStore=d,this.imageViewerSideNavElementRef=u,this.router=p,this.slideApiService=h,this.userService=v,this.windowService=f,this.overlay=y,this.viewContainerRef=S,this.snackBar=w,this.embeddingsService=U,this.activatedRouteParams={},this.annotationInstances=[],this.annotationLabelCtrl=new Te.MJ(""),this.annotationNoteCtrl=new Te.MJ(""),this.annotationOverlayActionCurrent=y0.NONE,this.contextMenuOverlay=void 0,this.currentUser="",this.debugMode=!1,this.disableAnnotationTools=!1,this.disableContextDelete=!1,this.disableContextMenuAdoptShapes=!1,this.disableContextMenuMergeShapes=!1,this.disableLabelInput=!0,this.drawLayer=void 0,this.editModeSelectedAnnotationOverlay=!1,this.enableAnnotationWritting=ai.c.ENABLE_ANNOTATION_WRITING,this.enableAnnotations=ai.c.ENABLE_ANNOTATIONS,this.enableModifyHandler=!1,this.enablePointTool=!1,this.enableSplitView=!0,this.hasAnnotationReadAccess=_s,this.hasCaseIdInCohortCases=!1,this.hasLabelOrOverviewImage=!1,this.initialChange=!0,this.isAnnotationOverlayEditMode=!1,this.isFlatImage=!1,this.isOverlayTemplateFocused=!1,this.labelOptions=[{name:"Gleason Grade 1",color:this.generateRandomColor()}],this.labels=new Set,this.layers=[],this.loadingCohorts=!0,this.loadingDicomAnnotations=!_s,this.measureDrawingGeometryChangeListener=void 0,this.measureTooltip=void 0,this.measureTooltipElement=void 0,this.olMap=void 0,this.overlayRef=void 0,this.helpTooltipElement=void 0,this.helpTooltipOverlay=void 0,this.destroyed$=new oe.m(1),this.activeInteraction=null,this.viewerMenuAction=vn,this.recentlyAddedFeatures=[],this.recentlyRemovedFeatures=[],this.selectFeatureAvailable=!0,this.selectedAnnotationKey=void 0,this.selectedAnnotationOverlay=void 0,this.selectedAnnotations=new Set,this.selectedContextMenuFeatures=[],this.selectedExtraMetaData=void 0,this.selectedInstanceIds=new Set,this.selectedPathologyCohortCases=[],this.selectedViewerAction=vn.SELECT,this.separatorKeysCodes=[ge.Fm,ge.KE],this.sideNavDrawLayers=[],this.toggleSideNavLayerStyleByLayer=new Map,this.filteredLabels=this.annotationLabelCtrl.valueChanges.pipe((0,Fr.Z)(null),(0,Ii.T)(E=>E&&"string"==typeof E?this.filterLabelOptions(E):this.labelOptions.slice())),this.setupannotationInstances()}goToCase(i){this.router.navigate(["/viewer"],{queryParams:{series:i.slides[0].dicomUri,cohortName:this.activatedRouteParams.cohortName}})}setupQueryParams(){this.activatedRoute.queryParams.subscribe(i=>{this.activatedRouteParams=i})}setupSelectedCohortCases(){this.cohortService.selectedPathologyCohortCases$.pipe((0,re.M)(i=>{this.selectedPathologyCohortCases=i,this.hasCaseIdInCohortCases=this.selectedPathologyCohortCases.some(o=>o.accessionNumber===this.selectedExtraMetaData?.caseId)})).subscribe()}setupannotationInstances(){(0,H.z)([this.imageViewerPageStore.selectedSplitViewSlideDescriptor$,this.imageViewerPageStore.annotationInstancesBySlideDescriptorId$,this.imageViewerPageStore.selectedInstanceIdsBySlideDescriptorId$]).pipe((0,he.Q)(this.destroyed$),(0,re.M)(([i,o])=>{if(!i)return;const s=i.id;if(!s)return;const d=o.get(s);this.annotationInstances=d??[]})).subscribe(),(0,H.z)([this.imageViewerPageStore.selectedSplitViewSlideDescriptor$,this.imageViewerPageStore.selectedInstanceIdsBySlideDescriptorId$]).pipe((0,he.Q)(this.destroyed$),(0,re.M)(([i,o])=>{const s=o.get(i?.id)??new Set;this.selectedInstanceIds=s})).subscribe(),(0,H.z)([this.imageViewerPageStore.selectedSplitViewSlideDescriptor$,this.imageViewerPageStore.sideNavLayersBySlideDescriptorId$]).pipe((0,he.Q)(this.destroyed$),(0,re.M)(([i,o])=>{this.sideNavDrawLayers=o.get(i?.id)??[]})).subscribe(),(0,H.z)([this.imageViewerPageStore.selectedSplitViewSlideDescriptor$,this.imageViewerPageStore.olMapBySlideDescriptorId$]).pipe((0,he.Q)(this.destroyed$),(0,re.M)(([i,o])=>{const s=o.get(i?.id);this.olMap=s,s&&this.handleOlMapChanged(s)})).subscribe()}handleOlMapChanged(i){this.reselectTools(),this.addOverlaysAndClickHandler(i),this.validateFlatImage(i)}validateFlatImage(i){i.getAllLayers().find(s=>"flat-image-layer"===s.get("name"))&&(this.enableAnnotations=!1,this.isFlatImage=!0)}addOverlaysAndClickHandler(i){this.contextMenuOverlay&&i.addOverlay(this.contextMenuOverlay),this.selectedAnnotationOverlay&&i.addOverlay(this.selectedAnnotationOverlay),this.enableAnnotationWritting&&i.getViewport().addEventListener("contextmenu",o=>{this.contextMenuOverlay&&this.contextMenuOpened(o)}),i.on("click",()=>{this.selectedAnnotationOverlay?.setPosition(void 0),this.contextMenuOverlay?.setPosition(void 0)})}reselectTools(){this.selectedViewerAction===vn.SELECT&&this.onSelectTool(),this.selectedViewerAction===vn.DRAW_POLYGON&&this.onDrawPolygonsTool(vn.DRAW_POLYGON)}handleKeyboardEvent(i){const o=i.key;"Backspace"===o&&!this.editModeSelectedAnnotationOverlay&&this.selectedFeature&&this.deleteSelectedAnnotation();const s=this.selectedAnnotationOverlay?.getPosition();if(this.isOverlayTemplateFocused||s)return;const d=this.olMap;if(!d)return;if("+"===o){const S=d.getView().getZoom()??0;d.getView().setZoom(S+1)}if("-"===o){const S=d.getView().getZoom()??0;d.getView().setZoom(S-1)}const u=o.toLowerCase(),p="s"===u,h="m"===u,f="r"===u,y="p"===u;ai.c.ENABLE_ANNOTATIONS&&("d"===u&&this.onDrawPolygonsTool(vn.DRAW_POLYGON),f&&this.onDrawPolygonsTool(vn.DRAW_BOX),y&&this.onDrawPolygonsTool(vn.DRAW_POINT),h&&this.onMeasureTool()),p&&this.onSelectTool()}ngOnDestroy(){this.destroyed$.next(!0),this.destroyed$.complete()}ngOnInit(){this.setupCurrentUser(),this.setupSelectedSplitViewSlideDescriptor(),this.setupSlideMetaData(),this.setupSlideInfo(),this.onSelectTool(),this.setupOverlays(),this.setupLoading(),_s||this.setupAnnotationAccess(),this.setupSelectedCohortCases(),this.setupQueryParams(),this.disableAnnotationsInMultiscreen(),this.embeddingsService.activatePolygonTool$.subscribe(()=>{this.activatePolygonTool()})}setupAnnotationAccess(){(0,H.z)([this.imageViewerPageStore.selectedSplitViewSlideDescriptor$,this.imageViewerPageStore.hasAnnotationReadAccessBySlideDescriptorId$]).pipe((0,he.Q)(this.destroyed$),(0,re.M)(([i,o])=>{this.hasAnnotationReadAccess=o.get(i?.id??"")??!1,this.disableAnnotationTools=!this.hasAnnotationReadAccess})).subscribe()}setupLoading(){this.cohortService.loading$.subscribe(i=>{this.loadingCohorts=i}),_s||this.imageViewerPageStore.loadingDicomAnnotations$.pipe((0,re.M)(i=>{this.loadingDicomAnnotations=i})).subscribe()}setupOverlays(){this.selectedAnnotationOverlay=new k.A({id:"annotationDetailsOverlay",element:this.annotationInfoOverlayTemplate.nativeElement,autoPan:{animation:{duration:250}}}),this.contextMenuOverlay=new k.A({id:"contextMenuOverlay",element:this.contextMenuOverlayTemplate.nativeElement,autoPan:{animation:{duration:250}}})}setupSelectedSplitViewSlideDescriptor(){this.imageViewerPageStore.selectedSplitViewSlideDescriptor$.subscribe(i=>{this.selectedSplitViewSlideDescriptor=i})}disableAnnotationsInMultiscreen(){this.imageViewerPageStore.multiViewScreens$.subscribe(i=>{this.onSelectTool(),i>1?(this.enableAnnotationWritting=!1,this.enableAnnotations=!1):(this.enableAnnotationWritting=ai.c.ENABLE_ANNOTATION_WRITING,this.enableAnnotations=ai.c.ENABLE_ANNOTATIONS)})}setupCurrentUser(){(ai.c.ANNOTATION_HASH_STORED_USER_EMAIL?this.userService.getCurrentUserHash$():this.userService.getCurrentUser$()).subscribe(i=>{this.currentUser=i||"",Ir.Qy.annotatorId=this.currentUser})}addLabel(i){const o=(i.value||"").trim();o&&this.labels.add({name:o,color:this.generateRandomColor()}),i.chipInput.clear(),this.annotationLabelCtrl.setValue(null)}adoptBorderAnnotations(){const i=this.olMap;if(!i)return;const o=this.getSelectedFeatures(i);o.length<2||(function eh(t,n,i){const o=t.getGeometry(),s=n.getGeometry();if(!(o instanceof L.Ay&&s instanceof L.Ay))return;const p=function qv(t,n){var i=Sr(t),o=Sr(n),s=t.properties||{},d=ic.difference(i.coordinates,o.coordinates);return 0===d.length?null:1===d.length?yn(d[0],s):Wo(d,s)}(yn(o.getCoordinates()??[]),yn(s.getCoordinates()??[]));if(!i.getLayers().getArray().find(y=>"draw-layer"===y.get("name")))return;const f=new ce.Ay(p?.geometry.coordinates??[]);t.setGeometry(f)}(o[0],o[1],i),this.saveAnnotation(),this.selectedAnnotationOverlay?.setPosition(void 0),this.contextMenuOverlay?.setPosition(void 0))}annotationSelected(i){if(!i.target)return;const o=i.target,s=o.getFeatures().getArray();if(!s.length)return this.selectedAnnotationOverlay?.setPosition(void 0),void this.selectedAnnotations.clear();const d=this.olMap;if(d&&this.imageViewerPageStore.cleanOldModifyInteractions(d),1===s.length){const u=s[0];eo(u).annotatorId===this.currentUser&&this.enableModifyHandler&&this.setupModifyHandler(o),this.selectFeature(u)}this.selectedAnnotations=new Set(o.getFeatures().getArray())}contextMenuEditAnnotation(){const i=this.olMap;if(!i)return;const o=i.getInteractions().getArray().filter(d=>d instanceof _r.A)[0];if(!o)return;const s=o.getFeatures().getArray();if(1===s.length){const d=s[0];this.contextMenuOverlay?.setPosition(void 0),this.openSelectedAnnotationOverlay(d)}}contextMenuOpened(i){const o=this.olMap;if(!o)return;const s=o.getEventCoordinate(i);if(!s)return;const u=o.getAllLayers().find(ne=>"draw-layer"===ne.get("name"))?.getSource();if(!u)return;const p=u.getFeaturesAtCoordinate(s);let h=o.getInteractions().getArray().filter(ne=>ne instanceof _r.A)[0];h||(h=new _r.A,o.addInteraction(h));const v=h.getFeatures();0===v.getArray().length&&v.extend(p),1===v.getArray().length&&p.length&&(v.clear(),v.extend(p)),this.disableContextDelete=!0,this.disableContextMenuAdoptShapes=!0,this.disableContextMenuMergeShapes=!0;const f=this.getSelectedFeatures(o);this.selectedContextMenuFeatures=f??[];const y=f.every(ne=>eo(ne).annotatorId===this.currentUser);if(y&&(this.disableContextDelete=!1),this.contextMenuOverlay?.setPosition(s),f.length<2)return this.disableContextMenuAdoptShapes=!0,void(this.disableContextMenuMergeShapes=!0);const S=f[0],w=f[1],U=function rh(t,n,i){if(!i)return!1;const o=t.getGeometry(),s=n.getGeometry();if(!(o instanceof L.Ay&&s instanceof L.Ay))return!1;const d=yn(o.getCoordinates()??[]),u=yn(s.getCoordinates()??[]);return!!function Yp(t,n,i){void 0===i&&(i={});var o=Sr(t),s=Sr(n),d=ic.intersection(o.coordinates,s.coordinates);return 0===d.length?null:1===d.length?yn(d[0],i.properties):Wo(d,i.properties)}(d,u)?.type}(S,w,o),E=th(S,w,o);return U?f.length>=2?(y?(this.disableContextMenuAdoptShapes=!1,this.disableContextMenuMergeShapes=!1):eo(S).annotatorId===this.currentUser&&(this.disableContextMenuAdoptShapes=!1,this.disableContextMenuMergeShapes=!0),void(E&&(this.disableContextMenuAdoptShapes=!0))):void 0:(this.disableContextMenuAdoptShapes=!0,void(this.disableContextMenuMergeShapes=!0))}getSelectedSlideId(){return this.imageViewerPageStore.selectedSplitViewSlideDescriptor$.value?.id}getSlideInfo(){const i=this.getSelectedSlideId();if(i)return this.imageViewerPageStore.slideInfoBySlideDescriptorId$.value.get(i)}createOrUpdateAnnotation(){const i=this.getSlideInfo();if(!i||!i.levelMap[0].properties[0].instanceUid)return;const d=[...this.sideNavDrawLayers].filter(f=>f.annotatorId===this.currentUser).map((f,y)=>{const S=eo(f.feature);S.notes=S?.notes?.trim()??"";const w=(f.feature.getGeometry()?.getCoordinates()??[])[0];return{idNumber:y+1,annotationGroupUid:"",annotationGroupLabel:(S.notes??"").split(" ").slice(0,3).join(" ").substring(0,15)||"ROI",annotationGroupDescription:S.notes??"",annotationGroupGenerationType:"MANUAL",annotationPropertyCategoryCodeSequence:[],graphicType:"POLYGON",pointCoordinatesData:w,longPrimitivePointIndexList:[1]}}),u=this.selectedSplitViewSlideDescriptor?.id,p=(0,Wa.LG)(u).path;if(!p.studyUID||!p.seriesUID)return;const h=this.annotationInstances.find(f=>f.annotatorId===this.currentUser&&f.referencedSeries.seriesInstanceUid===p.seriesUID)?.referencedSeries??{seriesInstanceUid:p.seriesUID,referencedImage:{sopClassUid:i.sopClassUid,sopInstanceUid:i.levelMap[0].properties[0].instanceUid,dicomModel:i.levelMap[0].dicomModel,pixelSize:{width:i.levelMap[0].pixelWidth,height:i.levelMap[0].pixelHeight}}},v={instance:{path:{studyUID:p.studyUID},annotatorId:this.currentUser,referencedSeries:h},annotationCoordinateType:"2D",annotationGroupSequence:d};this.imageViewerPageStore.createOrModifyDicomAnnotation(this.getSelectedSlideId(),v).pipe((0,Nn.W)(f=>(this.snackBar.open("Failed to write annotation","Dismiss",{duration:3e3}),this.handleRecentFeature(),f))).subscribe()}handleRecentFeature(){const i=this.olMap;if(!i)return;const o=i.getAllLayers().find(d=>"draw-layer"===d.get("name"));if(!o)return;const s=o.getSource();this.recentlyAddedFeatures.forEach(d=>{s.removeFeature(d)}),s.addFeatures(this.recentlyRemovedFeatures),this.selectedAnnotationOverlay?.setPosition(void 0),this.contextMenuOverlay?.setPosition(void 0)}deleteAnnotations(i){return this.dialogService.openComponentDialog(this.deleteAnnotationConfirmationDialogTemplate,{autoFocus:!1,disableClose:!1}).afterClosed().subscribe(s=>{s&&this.confirmedRemoveAnnotation(i)})}deleteSelectedAnnotation(){const i=this.olMap;if(!i)return;const o=i.getInteractions().getArray().filter(d=>d instanceof _r.A)[0];if(!o)return;const s=o.getFeatures().getArray();this.deleteAnnotations(s)}deleteSingleAnnotation(i){this.deleteAnnotations([i.feature])}downloadAnnotations(){const i=this.sideNavDrawLayers.map(u=>{const p=u.feature.getGeometry(),h=this.getSlideInfo();if(!h)return;const v={width:h.levelMap[0].pixelWidth??1,height:h.levelMap[0].pixelHeight??1};return{coordinates:(p?.getCoordinates()??[]).map(f=>(0,Ar.RI)(f.map(y=>[y[0],y[1]]),v)),annotationType:p?.getType()??"Invalid",annotatorId:u.annotatorId,names:u.names,notes:u.notes,pixelSize:v,sopInstanceUid:h.levelMap[0].properties[0].instanceUid}}),o=JSON.stringify(i),s=document.createElement("a"),d=this.getSelectedSlideId().replace(/.*studies/,"studies").replace(/\//g,"_")+"-annotations";s.setAttribute("href","data:text/json;charset=UTF-8,"+encodeURIComponent(o)),s.setAttribute("download",d+".json"),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)}formatArea(i){if(!i)return;let s=1e6*(0,pt.UG)(i);return s=Math.round(100*s)/100,String(s)}formatLength(i){if(!i)return;let s=1e3*(0,pt.R3)(i);return s=Math.round(100*s)/100,String(s)}getSelectedFeatures(i){if(!i)return[];const s=i.getInteractions().getArray().filter(u=>u instanceof _r.A)[0].getFeatures();return[...new Set([...s.getArray()])]}mergeAnnotations(){const i=this.olMap;if(!i)return;const o=this.getSelectedFeatures(i);o.length<2||(function Zp(t,n,i){if(!i)return;const o=eo(t),s=eo(n),d={names:`${o.names??""}`,notes:`${o.notes??""} ${s.notes??""}`.trim(),annotatorId:o.annotatorId,index:o.index},u=t.getGeometry(),p=n.getGeometry();if(!(u instanceof L.Ay&&p instanceof L.Ay))return;const f=function Hp(t,n,i){void 0===i&&(i={});var o=Sr(t),s=Sr(n),d=ic.union(o.coordinates,s.coordinates);return 0===d.length?null:1===d.length?yn(d[0],i.properties):Wo(d,i.properties)}(yn(u.getCoordinates()??[]),yn(p.getCoordinates()??[])),y=i.getAllLayers().find(E=>"draw-layer"===E.get("name"));if(!y)return;const S=y.getSource(),U=new ce.Ay(f?.geometry.coordinates??[]);t.setGeometry(U),t.setId(JSON.stringify(d)),S.removeFeature(n)}(o[0],o[1],i),this.saveAnnotation(),this.selectedAnnotationOverlay?.setPosition(void 0),this.contextMenuOverlay?.setPosition(void 0))}activatePolygonTool(){this.onDrawPolygonsTool(vn.DRAW_POLYGON)}onDrawPolygonsTool(i){const o=this.olMap;if(!o)return;const s=o.getAllLayers().find(f=>"draw-layer"===f.get("name"));if(!s)return;const d=s.getSource(),u=this.annotationInstances.find(f=>f.annotatorId===this.currentUser);u&&!this.selectedInstanceIds.has(u.path.instanceUID??"")&&this.toggleAnnotationInstancesSelected(u),this.resetOtherTools(),this.selectedViewerAction=vn.DRAW_POLYGON,o.getTargetElement().style.cursor="cell";let h,p="Polygon";i===vn.DRAW_POINT&&(this.selectedViewerAction=vn.DRAW_POINT,p="Point"),i===vn.DRAW_BOX&&(this.selectedViewerAction=vn.DRAW_BOX,p="Circle",h=function Pr(){return function(t,n,i){const o=(0,Ie.Tr)([t[0],t[t.length-1]].map(function(u){return(0,j.Ad)(u,i)})),s=[[(0,Ie.R)(o),(0,Ie.k_)(o),(0,Ie.WU)(o),(0,Ie.Py)(o),(0,Ie.R)(o)]];n?n.setCoordinates(s):n=new ce.Ay(s);const d=(0,j.Tf)();return d&&n.transform(i,d),n}}());const v=new Qr({source:d,type:p,freehand:!0,style:[h0.Gl],geometryFunction:h});this.measurePointerMessageHandler(),o.addInteraction(v),v.on("drawstart",()=>{this.resetHelpTooltipOverlay()}),v.on("drawend",f=>{if(!this.olMap)return;const S=f.feature;let w=0;d.getFeatures().forEach(U=>{const E=eo(U);w=Math.max(w,E.index)}),S.setId(JSON.stringify({...Ir.Qy,names:"ROI",index:w+1})),d.addFeature(S),this.recentlyAddedFeatures=[S],i!==vn.DRAW_POINT&&S.setStyle(af),setTimeout(()=>{this.saveAnnotation(),this.sideNavSelectFeature(S)})})}onMeasureTool(){const i=this.olMap;if(!i)return;this.resetOtherTools(),this.selectedViewerAction=vn.MEASURE,i.getTargetElement().style.cursor="cell",this.measurePointerMessageHandler();const s=i.getAllLayers().find(p=>"measure-layer"===p.get("name"));if(!s)return;const d=s.getProperties().source;if(!d)return;const u=new Qr({source:d,type:"LineString",freehand:!1,maxPoints:2,style:h0.oG});this.activeInteraction=u,i.addInteraction(this.activeInteraction),this.createMeasureTooltip(),u.on("drawstart",p=>{this.measureDrawing=p.feature;const h=this.measureDrawing.getGeometry();let v;this.measureDrawingGeometryChangeListener=this.measureDrawing?.getGeometry()?.on("change",()=>{let f;h instanceof ce.Ay&&(v=h.getInteriorPoint().getCoordinates()),h instanceof Y.A&&(v=h.getLastCoordinate()),h instanceof ce.Ay?f=this.formatArea(h):h instanceof Y.A&&(f=this.formatLength(h)),this.measureTooltipElement&&f&&(this.windowService.safelySetInnerHtml(this.measureTooltipElement,`${f} mm`),this.measureTooltip?.setPosition(v))})}),u.on("drawend",p=>{if(!this.measureTooltipElement)return;this.measureTooltipElement.className="ol-tooltip ol-tooltip-static",this.measureTooltip?.setOffset([0,-7]),this.measureDrawing=void 0,this.measureTooltipElement=void 0,this.createMeasureTooltip(),this.measureDrawingGeometryChangeListener&&(0,te.e)(this.measureDrawingGeometryChangeListener);const h=p.feature;let v=0;this.drawLayer&&this.drawLayer.getSource().getFeatures().forEach(y=>{const S=eo(y);v=Math.max(v,S.index)}),d.getFeatures().forEach(f=>{const y=eo(f);v=Math.max(v,y.index)}),h.setId(JSON.stringify({...Ir.Qy,names:"MEASURE",index:v+1})),d.addFeature(h)})}onSelectTool(){const i=this.olMap;i&&(this.resetOtherTools(),this.selectedViewerAction=vn.SELECT,i.getTargetElement().style.cursor="pointer",this.setupSelectHandler(i))}openSlideData(){this.dialogService.openComponentDialog(nh.r,{autoFocus:!1,disableClose:!1,panelClass:"slide-data-dialog-panel"})}openSlideDetailsDialog(){const i=this.olMap;if(!this.selectedSplitViewSlideDescriptor||!this.selectedSlideInfo)return;const s=[...this.selectedSlideInfo.levelMap].reverse()[Math.floor(i?.getView().getZoom()??0)].properties[0].instanceUid;this.slideApiService.getSlideExtraMetadata(`${this.selectedSplitViewSlideDescriptor?.id}/instances/${s}`).subscribe(u=>{this.dialogService.openComponentDialog(mh,{data:u,autoFocus:!1,disableClose:!1}).afterClosed().subscribe(h=>{h?.openSlideData&&this.openSlideData()})})}confirmedRemoveAnnotation(i){if(this.annotationOverlayActionCurrent=y0.DELETE,(this.setupRemoveAnnotationAndGetCurrentFeatures(i)??[]).length)return void this.createOrUpdateAnnotation();const s=this.annotationInstances.find(({annotatorId:d})=>d===this.currentUser);s?.path.instanceUID&&(_s||this.imageViewerPageStore.deleteDicomAnnotationsPath(s).subscribe())}setupRemoveAnnotationAndGetCurrentFeatures(i){const o=this.olMap;if(!o)return;const s=o.getAllLayers().find(h=>"draw-layer"===h.get("name"));if(!s)return;const d=s.getSource();return this.recentlyRemovedFeatures=[...i],i.forEach(h=>{d?.removeFeature(h)}),this.selectedFeature=void 0,this.selectedAnnotationOverlay?.setPosition(void 0),this.contextMenuOverlay?.setPosition(void 0),(d?.getFeatures()??[]).filter(h=>!!h.getId()&&eo(h).annotatorId===this.currentUser)}createHelpTooltip(){const i=this.olMap;i&&(this.helpTooltipElement&&this.helpTooltipElement.parentNode?.removeChild(this.helpTooltipElement),this.helpTooltipElement=document.createElement("div"),this.helpTooltipElement.className="ol-tooltip hidden",this.helpTooltipOverlay=new k.A({id:"helpTooltipOverlay",element:this.helpTooltipElement,offset:[15,0],positioning:"center-left"}),i.addOverlay(this.helpTooltipOverlay))}createMeasureTooltip(){const i=this.olMap;i&&(this.measureTooltipElement=document.createElement("div"),this.measureTooltipElement.className="ol-tooltip ol-tooltip-measure",this.measureTooltip=new k.A({id:nl,element:this.measureTooltipElement,offset:[0,-15],positioning:"bottom-center",stopEvent:!1,insertFirst:!1}),i.addOverlay(this.measureTooltip))}filterLabelOptions(i){if(!i)return[];const o=i.toLowerCase();return this.labelOptions.filter(s=>s.name.toLowerCase().includes(o))}generateRandomColor(i=!1){const o=Math.floor(256*Math.random()),s=Math.floor(256*Math.random()),d=Math.floor(256*Math.random());return i?`hsl(${360*Math.random()}, ${25+70*Math.random()}%, ${85+10*Math.random()}%)`:`rgb(${o}, ${s}, ${d})`}measurePointerMessageHandler(){const i=this.olMap;i&&(this.createHelpTooltip(),i.on("pointermove",o=>{if(!o.dragging){if([vn.MEASURE,vn.DRAW_POLYGON].includes(this.selectedViewerAction)){let d="Click to start drawing";if(this.measureDrawing){const u=this.measureDrawing.getGeometry();u instanceof ce.Ay?d="Click to continue drawing the polygon":u instanceof Y.A&&(d="Click to stop drawing the line")}if(!this.helpTooltipElement)return;return this.selectedViewerAction===vn.MEASURE&&(d=d.replace("drawing","measuring")),this.windowService.safelySetInnerHtml(this.helpTooltipElement,d),this.helpTooltipOverlay?.setPosition(o.coordinate),void this.helpTooltipElement?.classList.remove("hidden")}this.helpTooltipOverlay&&i&&this.resetHelpTooltipOverlay(),this.helpTooltipElement?.classList.remove("hidden")}}),i.getViewport().addEventListener("mouseout",()=>{this.helpTooltipElement?.classList.add("hidden")}))}openSelectedAnnotationOverlay(i,o=!0){}resetHelpTooltipOverlay(){const i=this.olMap;!i||!this.helpTooltipOverlay||i.removeOverlay(this.helpTooltipOverlay)}resetMeasureTooltips(){const i=this.olMap;if(!i)return;const o=i.getAllLayers().find(u=>"measure-layer"===u.get("name"));if(!o)return;const s=o.getProperties().source;s&&(s.clear(),i.getOverlays().getArray().filter(u=>u.getId()===nl).forEach(u=>{i?.removeOverlay(u)}))}setupSlideMetaData(){(0,H.z)([this.imageViewerPageStore.selectedSplitViewSlideDescriptor$,this.imageViewerPageStore.slideMetaDataBySlideDescriptorId$]).pipe((0,re.M)(([i,o])=>{!i||!o||(this.selectedExtraMetaData=o.get(i.id))})).subscribe()}setupSlideInfo(){(0,H.z)([this.imageViewerPageStore.selectedSplitViewSlideDescriptor$,this.imageViewerPageStore.slideInfoBySlideDescriptorId$]).pipe((0,re.M)(([i,o])=>{if(!i||!o)return;const s=o.get(i.id);this.slideApiService.selectedSlideInfo$.next(s),this.selectedSlideInfo=s,s&&this.validateLabelOrOverviewImage(s)})).subscribe()}validateLabelOrOverviewImage(i){const o=i.associatedImages.some(s=>s.type===cn.MV.LABEL||s.type===cn.MV.OVERVIEW);this.hasLabelOrOverviewImage=o}removeAnnotationLabel(i){this.labels.delete(i)}resetOtherTools(){const i=this.olMap;if(!i)return;this.resetMeasureTooltips();const o=i.getInteractions().getArray().filter(s=>s instanceof _r.A||s instanceof J.A||s instanceof Qr);o.length&&(o.forEach(s=>{i?.removeInteraction(s)}),this.selectedAnnotationOverlay?.setPosition(void 0))}saveAnnotation(){this.annotationOverlayActionCurrent=y0.SAVE,this.selectedAnnotationOverlay?.setPosition(void 0),this.createOrUpdateAnnotation()}saveAnnotationNote(i){const o=eo(i);o.notes=this.annotationNoteCtrl.value||"",i.setId(JSON.stringify(o)),this.saveAnnotation()}selectFeature(i,o=!1){if(!this.olMap)return;this.labels.clear(),this.annotationNoteCtrl.reset(),this.selectedAnnotationKey=void 0,this.editModeSelectedAnnotationOverlay=o;const d=i.getId();if(d&&"string"==typeof d){const u=eo(i),p=u.names.split(", ").map(h=>(h=h.trim(),{...this.labelOptions.find(f=>f.name===h),name:h,color:""}));this.labels=new Set(p),this.annotationNoteCtrl.setValue(u.notes),this.selectedAnnotationKey=u}this.isAnnotationOverlayEditMode=!0,this.selectedFeature=i,this.openSelectedAnnotationOverlay(i)}selected(i){this.labels.add(i.option.value),this.annotationLabelCtrl.setValue(null)}setupModifyHandler(i){const o=this.olMap;if(!o)return;const s=new J.A({features:i.getFeatures()});return s.on("modifyend",()=>{this.saveAnnotation()}),this.imageViewerPageStore.cleanOldModifyInteractions(o),o.addInteraction(s),s}setupSelectHandler(i){let o=i.getInteractions().getArray().filter(s=>s instanceof _r.A)[0];return o||(o=new _r.A({style:sf}),i.addInteraction(o)),o.on("select",s=>{this.annotationSelected(s)}),o}sideNavSelectFeature(i){const o=this.olMap;if(!o)return;this.onSelectTool();const s=o?.getInteractions().getArray().filter(u=>u instanceof _r.A)[0];if(this.selectFeature(i),!s)return;const d=s.getFeatures();d.clear(),d.push(i),this.selectedAnnotations=new Set(d.getArray())}toggleAllSideNavLayerOpacity(){this.toggleSideNavLayerStyleByLayer.size{this.toggleSideNavLayerOpacity(i)})):this.toggleSideNavLayerStyleByLayer.size===this.sideNavDrawLayers.length&&this.sideNavDrawLayers.forEach(i=>{this.toggleSideNavLayerOpacity(i)})}toggleAnnotationInstancesSelected(i){const o=this.imageViewerPageStore.selectedInstanceIdsBySlideDescriptorId$.value,s=this.getSelectedSlideId(),d=o.get(s)??new Set,u=i.path.instanceUID??"";d.has(u)?d.delete(u):d.add(u),o.set(s,d),this.imageViewerPageStore.selectedInstanceIdsBySlideDescriptorId$.next(o),this.selectedAnnotationOverlay?.setPosition(void 0),this.contextMenuOverlay?.setPosition(void 0)}toggleSideNavLayerOpacity(i){if(this.toggleSideNavLayerStyleByLayer.has(i.feature)){const o=this.toggleSideNavLayerStyleByLayer.get(i.feature);this.toggleSideNavLayerStyleByLayer.delete(i.feature),i.feature.setStyle(o)}else this.toggleSideNavLayerStyleByLayer.set(i.feature,i.feature.getStyle()),i.feature.setStyle(new G.Ay(void 0))}toggleSlideLayerOpacity(){const i=this.olMap;if(!i)return;const o=i.getAllLayers().find(s=>"slide-layer"===s.get("name"));o&&o.setVisible(!o.getVisible())}scrollAnnotationsIntoView(){setTimeout(()=>{const i=this.imageViewerSideNavElementRef.nativeElement.querySelector(".annotation-layers");i&&i.scrollIntoView({behavior:"smooth"})},150)}static{this.\u0275fac=function(o){return new(o||t)(m.rXU(Sa.nX),m.rXU(Bc.Do),m.rXU(Zu.o),m.rXU(Vc.y),m.rXU(m.aKT),m.rXU(Sa.Ix),m.rXU(el.T),m.rXU(tl.D),m.rXU(vh.s),m.rXU(ph.hJ),m.rXU(m.c1b),m.rXU(hh.UG),m.rXU(f0.w))}}static{this.\u0275cmp=m.VBU({type:t,selectors:[["image-viewer-side-nav"]],viewQuery:function(o,s){if(1&o&&(m.GBs(fh,7),m.GBs(gh,7),m.GBs(yh,7),m.GBs(Sh,7),m.GBs(xh,7)),2&o){let d;m.mGM(d=m.lsd())&&(s.contextMenuOverlayTemplate=d.first),m.mGM(d=m.lsd())&&(s.deleteAnnotationConfirmationDialogTemplate=d.first),m.mGM(d=m.lsd())&&(s.labelInput=d.first),m.mGM(d=m.lsd())&&(s.annotationInfoOverlayTemplate=d.first),m.mGM(d=m.lsd())&&(s.quickviewImageDialogTemplate=d.first)}},hostBindings:function(o,s){1&o&&m.bIt("keyup",function(u){return s.handleKeyboardEvent(u)},!1,m.EBC)},decls:68,vars:20,consts:[["overlayTemplate",""],["context_menu",""],["deleteAnnotationConfirmationDialogTemplate",""],["chipGrid",""],["labelInput",""],["auto","matAutocomplete"],["hideToggle","","expanded","",1,"image-viewer-side-nav-menu"],[1,"image-viewer-side-nav-menu-header"],[1,"viewer-actions-header"],[1,"viewer-actions"],["mat-icon-button","","aria-label","Select","matTooltip","Select (S)",1,"viewer-action-button",3,"click","ngClass"],[1,"google-symbols"],[3,"matTooltip","click",4,"ngIf"],["matExpansionPanelContent","",1,"image-viewer-side-nav"],["multi","",1,"image-viewer-side-widgets"],["hideToggle","","expanded",""],[1,"slide-details-header"],[1,"slide-details-header-title"],[1,"material-icons-outlined"],["mat-icon-button","","aria-label","Slide details","matTooltip","View details",3,"click"],["class","de-Identified-header",4,"ngIf"],[1,"metadata-info"],[1,"label-header"],[1,"metadata-info","metadata-info-case-id"],["class","metadata-info-case-id-select","panelClass","metadata-info-case-id-panel",3,"value",4,"ngIf"],[4,"ngIf"],["class","thumbnail label-image",4,"ngIf"],["hideToggle","","expanded","","class","annotators-expansion-panel",4,"ngIf"],[1,"annotation-info-overlay"],["class","annotation-info-overlay-note-form",4,"ngIf"],["class","annotation-info-overlay-readonly",4,"ngIf"],[1,"annotation-info-overlay-metrics-and-actions"],[1,"annotation-info-overlay-metrics"],[1,"annotation-info-overlay-metric"],["class","annotation-info-overlay-edit-actions",4,"ngIf"],["class","annotation-info-overlay-actions",4,"ngIf"],["class","context-menu","cdkMenu","",4,"ngIf"],[3,"click","matTooltip"],["mat-icon-button","","aria-label","Draw (D)","matTooltip","Draw (D)",1,"viewer-action-button",3,"click","ngClass","disabled"],["mat-icon-button","","aria-label","Rectangle (R)","matTooltip","Rectangle (R)",1,"viewer-action-button",3,"click","ngClass","disabled"],["mat-icon-button","","aria-label","Point (P)","matTooltip","Point (P)",1,"viewer-action-button",3,"click","ngClass","disabled"],[1,"material-icons"],[1,"de-Identified-header"],["matTooltip","De-Identified"],["panelClass","metadata-info-case-id-panel",1,"metadata-info-case-id-select",3,"value"],[3,"value"],[3,"click","value"],[1,"thumbnail","label-image"],[1,"thumbnail-image","label-thumbnail",3,"slideDescriptor","slideInfo","isLabelOrOverviewImage"],["hideToggle","","expanded","",1,"annotators-expansion-panel"],[1,"layers"],[1,"annotators-list"],["class","annotators-list-empty",4,"ngIf"],["class","annotator-info",4,"ngFor","ngForOf"],["hideToggle","",3,"expanded","opened",4,"ngIf"],[1,"annotators-list-empty"],[1,"annotator-info"],["mat-icon-button","","color","primary",3,"click","disabled"],[1,"annotator-id",3,"matTooltip"],["hideToggle","",3,"opened","expanded"],[1,"annotations-expand-header"],["mat-icon-button","","aria-label","Download annotations","matTooltip","Download annotations",1,"annotation-download-button",3,"click"],[1,"layer-info-actions"],["mat-icon-button","","aria-label","Toggle visibility",3,"ngClass","click",4,"ngIf"],[1,"annotation-layers"],[4,"ngFor","ngForOf"],["mat-icon-button","","aria-label","Toggle visibility",3,"click","ngClass"],["class","material-icons-outlined",4,"ngIf"],["class","annotation-layers-divider",4,"ngIf"],[1,"annotation-layer-info",3,"click","ngClass"],["mat-icon-button","","aria-label","Note","matTooltip","Note",4,"ngIf"],["matTooltipPosition","right",3,"matTooltip","matTooltipDisabled",4,"ngIf"],["mat-icon-button","","aria-label","Toggle visibility","matTooltip","Visibility",3,"click"],[1,"annotation-layers-divider"],["mat-icon-button","","aria-label","Note","matTooltip","Note"],["matTooltipPosition","right",3,"matTooltip","matTooltipDisabled"],["mat-icon-button","","aria-label","Delete annotation","matTooltip","Delete",3,"click","disabled"],[1,"annotation-info-overlay-note-form"],["appearance","outline",1,"annotation-info-overlay-form-field"],["matInput","","placeholder","Leave a note about this annotation",3,"formControl"],[1,"annotation-info-overlay-note-sub"],[1,"annotation-info-overlay-form-field"],["aria-label","Label selection"],[3,"background-color","removed",4,"ngFor","ngForOf"],["placeholder","Label",3,"focus","blur","matChipInputTokenEnd","formControl","matChipInputFor","matAutocomplete","matChipInputSeparatorKeyCodes"],[1,"label-autocomplete",3,"optionSelected"],[3,"value",4,"ngFor","ngForOf"],[3,"removed"],["matChipRemove","","type","button"],[1,"annotation-info-overlay-label-form-option"],[1,"annotation-info-overlay-label-form-option-label-color-preview"],[1,"annotation-info-overlay-readonly"],[1,"annotation-info-overlay-annotator-id"],[1,"annotation-info-overlay-edit-actions"],["mat-stroked-button","","color","primary","type","button",1,"annotation-info-overlay-action-button",3,"click"],[1,"annotation-info-overlay-actions"],["mat-icon-button","","aria-label","Edit note",3,"click"],["mat-icon-button","","aria-label","Delete note",3,"click"],["cdkMenu","",1,"context-menu"],["mat-stroked-button","","cdkMenuItem","","type","button",1,"context-menu-item",3,"click","disabled"],[1,"context-menu-info"],["mat-button","","cdkMenuItem","","type","button",1,"context-menu-item",3,"click","disabled"],["mat-dialog-content",""],["mat-dialog-actions","",1,"dialog-actions"],["mat-stroked-button","","color","primary","data-qa","cancel-button",3,"mat-dialog-close"],["mat-stroked-button","","color","warn","data-qa","cancel-button",3,"mat-dialog-close"]],template:function(o,s){if(1&o){const d=m.RV6();m.j41(0,"mat-expansion-panel",6)(1,"mat-expansion-panel-header",7)(2,"div",8)(3,"div",9)(4,"button",10),m.bIt("click",function(p){return m.eBV(d),p.stopPropagation(),m.Njj(s.onSelectTool())}),m.j41(5,"mat-icon",11),m.EFF(6,"arrow_selector_tool"),m.k0s()(),m.DNE(7,_h,4,5,"div",12)(8,Dh,4,5,"div",12)(9,Ph,4,5,"div",12),m.k0s()()(),m.j41(10,"div",13)(11,"mat-accordion",14)(12,"mat-expansion-panel",15)(13,"mat-expansion-panel-header")(14,"div",16)(15,"div",17)(16,"div"),m.EFF(17," Slide Details "),m.k0s(),m.j41(18,"mat-icon",18),m.EFF(19,"arrow_drop_down"),m.k0s()(),m.j41(20,"button",19),m.bIt("click",function(p){return m.eBV(d),p.stopPropagation(),m.Njj(s.openSlideDetailsDialog())}),m.j41(21,"mat-icon"),m.EFF(22,"info_outline"),m.k0s()()()(),m.j41(23,"div"),m.DNE(24,bh,4,0,"div",20),m.j41(25,"div",21)(26,"span",22),m.EFF(27,"Patient name: "),m.k0s(),m.j41(28,"span"),m.EFF(29),m.k0s()(),m.j41(30,"div",21)(31,"span",22),m.EFF(32,"Patient ID: "),m.k0s(),m.j41(33,"span"),m.EFF(34),m.k0s()(),m.j41(35,"div",23)(36,"span",22),m.EFF(37,"Case ID: "),m.k0s(),m.DNE(38,Th,3,1,"mat-select",24)(39,Rh,2,1,"span",25),m.k0s(),m.DNE(40,Ah,2,3,"div",26),m.k0s()(),m.DNE(41,Hh,13,4,"mat-expansion-panel",27),m.k0s()()(),m.j41(42,"div",null,0)(44,"div",28),m.DNE(45,$h,6,2,"form",29)(46,Kh,5,2,"div",30),m.j41(47,"div",31)(48,"div",32)(49,"div",33)(50,"div"),m.EFF(51," Area: "),m.k0s(),m.j41(52,"div"),m.EFF(53),m.j41(54,"sup"),m.EFF(55,"2"),m.k0s()()(),m.j41(56,"div",33)(57,"div"),m.EFF(58," Perimeter: "),m.k0s(),m.j41(59,"div"),m.EFF(60),m.k0s()()(),m.DNE(61,Jh,5,0,"div",34)(62,Zh,7,0,"div",35),m.k0s()(),m.j41(63,"div",null,1),m.DNE(65,ef,16,3,"div",36),m.k0s(),m.DNE(66,tf,7,2,"ng-template",null,2,m.C5r),m.k0s()}2&o&&(m.R7$(4),m.Y8G("ngClass",m.eq3(18,g0,s.selectedViewerAction===s.viewerMenuAction.SELECT)),m.R7$(3),m.Y8G("ngIf",s.enableAnnotationWritting),m.R7$(),m.Y8G("ngIf",s.enableAnnotationWritting),m.R7$(),m.Y8G("ngIf",s.enableAnnotationWritting&&s.enablePointTool),m.R7$(15),m.Y8G("ngIf",null==s.selectedExtraMetaData?null:s.selectedExtraMetaData.deided),m.R7$(5),m.JRh(null==s.selectedExtraMetaData?null:s.selectedExtraMetaData.patientName),m.R7$(5),m.JRh(null==s.selectedExtraMetaData?null:s.selectedExtraMetaData.patientId),m.R7$(4),m.Y8G("ngIf",s.hasCaseIdInCohortCases),m.R7$(),m.Y8G("ngIf",!s.hasCaseIdInCohortCases),m.R7$(),m.Y8G("ngIf",s.hasLabelOrOverviewImage&&s.selectedSplitViewSlideDescriptor&&s.selectedSlideInfo&&s.olMap),m.R7$(),m.Y8G("ngIf",s.enableAnnotations),m.R7$(4),m.Y8G("ngIf",s.editModeSelectedAnnotationOverlay),m.R7$(),m.Y8G("ngIf",!s.editModeSelectedAnnotationOverlay),m.R7$(7),m.SpI(" ",s.formatArea(null==s.selectedFeature?null:s.selectedFeature.getGeometry())," mm"),m.R7$(7),m.SpI(" ",s.formatLength(null==s.selectedFeature?null:s.selectedFeature.getGeometry())," mm "),m.R7$(),m.Y8G("ngIf",s.editModeSelectedAnnotationOverlay&&s.selectedFeature),m.R7$(),m.Y8G("ngIf",!s.editModeSelectedAnnotationOverlay&&s.currentUser===(null==s.selectedAnnotationKey?null:s.selectedAnnotationKey.annotatorId)),m.R7$(3),m.Y8G("ngIf",s.enableAnnotationWritting))},dependencies:[M.hM,M.tx,M.E7,M.Yi,K.m_,K.An,Q.w,Q.q,Te.YN,Te.qT,Te.me,Te.BC,Te.cb,Te.cV,Te.X1,Te.l_,X.RG,X.rl,X.nJ,O.Ve,O.VO,rl.wT,A.jL,A.$3,A.pN,R.YN,R.HW,R.D7,R.Zv,R.jH,F.uc,F.oV,q.MD,q.YU,q.Sq,q.bT,q.Jj,I.MY,I.BS,I.GK,I.Z2,h0.Bh,V.Hl,V.$z,V.iY,T.fS,T.fg],styles:[".annotators-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;max-height:16em;overflow:hidden auto;padding-bottom:.5em}.annotators-list[_ngcontent-%COMP%] .annotators-list-empty[_ngcontent-%COMP%]{height:min-content;padding-left:1em}.annotators-list[_ngcontent-%COMP%] .annotator-info[_ngcontent-%COMP%]{display:grid;grid-template-columns:min-content 26ch;align-items:center;height:2.5em}.annotators-list[_ngcontent-%COMP%] .annotator-info[_ngcontent-%COMP%] .annotator-id[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .label-thumbnail .thumbnail-image{object-fit:contain}.annotations-expand-header[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr min-content;width:100%;align-items:center}.layer-info-actions[_ngcontent-%COMP%] .annotations-header-scroll-bar-icon[_ngcontent-%COMP%]{padding-right:.65em}.image-viewer-side-nav-menu[_ngcontent-%COMP%]{color:#5f6368;width:132px}.image-viewer-side-nav-menu[_ngcontent-%COMP%] .image-viewer-side-nav-menu-header[_ngcontent-%COMP%]{height:3em;padding:.3em .7em 0 .2em;display:grid} .image-viewer-side-nav .annotators-expansion-panel .mat-expansion-panel-body{padding:0} .image-viewer-side-nav .mat-expansion-panel-body{padding:0 .2em 1em .7em;color:#5f6368} .annotators-expansion-panel .mat-expansion-panel-body{padding:0;color:#5f6368}.image-viewer-side-widgets[_ngcontent-%COMP%]{overflow:auto;overflow-y:scroll}.image-viewer-side-nav[_ngcontent-%COMP%]{height:65vh;background:#fff;display:grid;grid-template-rows:1fr min-content min-content;padding-bottom:.1em;display:none}.image-viewer-side-nav[_ngcontent-%COMP%] mat-expansion-panel-header[_ngcontent-%COMP%]{font-size:1.3em;font-weight:700;padding:0 0 0 .5em;color:#5f6368}.slide-details-header[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr min-content;align-items:center;width:100%}.slide-details-header-title[_ngcontent-%COMP%]{align-items:center;display:flex}.annotation-download-button[_ngcontent-%COMP%]{margin-left:auto}.thumbnails[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr;grid-row-gap:1em;justify-items:center}.thumbnail[_ngcontent-%COMP%]{border-radius:8px;display:grid;height:10em;outline:1px solid #1976d2;overflow:hidden;position:relative;width:15em}.thumbnail[_ngcontent-%COMP%] .thumbnail-image[_ngcontent-%COMP%]{width:inherit;height:inherit}.viewer-actions-header[_ngcontent-%COMP%]{column-gap:.5em;display:grid;grid-template-columns:min-content 1fr;justify-content:space-between;width:100%}.viewer-actions-header[_ngcontent-%COMP%] .viewer-actions[_ngcontent-%COMP%]{display:flex;grid-gap:.5em;justify-content:end}.viewer-actions-header[_ngcontent-%COMP%] .viewer-action-button[_ngcontent-%COMP%]:hover, .viewer-actions-header[_ngcontent-%COMP%] .viewer-action-selected[_ngcontent-%COMP%]{background:#d3e3fd}.mat-expansion-panel-spacing[_ngcontent-%COMP%]{border-radius:0;margin:0}.quickview-button[_ngcontent-%COMP%]{bottom:.5em;position:absolute;right:.2em}.quickview-button[_ngcontent-%COMP%]:hover{transform:scale(1.2)}.quickview-checkbox[_ngcontent-%COMP%]{bottom:1em;right:.2em;position:absolute;z-index:2}.quickview-dialog-content[_ngcontent-%COMP%]{height:60vh;position:relative;overflow:hidden;width:70vw}.thumbnails-section[_ngcontent-%COMP%]{display:grid;grid-row-gap:1em;grid-template-rows:1fr}.thumbnail-actions[_ngcontent-%COMP%]{display:grid;grid-template-columns:max-content min-content;justify-content:space-between}.thumbnail-select-actions[_ngcontent-%COMP%]{display:grid;grid-column-gap:.5em;grid-template-columns:min-content min-content min-content}.quickview-dialog-open-full-image-button[_ngcontent-%COMP%]{bottom:.2em;position:absolute;right:.2em;z-index:2}.selected-image[_ngcontent-%COMP%]{outline:3px solid #1976d2}.layer-info[_ngcontent-%COMP%]{align-items:center;display:grid;grid-column-gap:.5em;grid-template-columns:1fr min-content}.layer-info-actions[_ngcontent-%COMP%]{display:flex;grid-column-gap:.5em}.annotation-layer-info[_ngcontent-%COMP%]{align-items:center;display:grid;grid-column-gap:.5em;grid-template-columns:1fr min-content;height:max-content}.annotation-layer-info[_ngcontent-%COMP%]:hover, .annotation-layer-info-selected[_ngcontent-%COMP%]{background:#d3e3fd}.annotation-layers[_ngcontent-%COMP%]{align-content:start;display:grid;grid-column:1/3;grid-row-gap:.5em;grid-template-rows:min-content;max-height:11em;overflow:auto;overflow-x:hidden;padding:0 0 .5em 1em}.annotation-layers-divider[_ngcontent-%COMP%]{color:#5f6368;font-weight:700;padding:.4em 0}.annotation-info-overlay[_ngcontent-%COMP%]{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;background:#fff;color:light_gray;cursor:pointer;display:grid;grid-row-gap:.2em;grid-template-rows:min-content min-content;padding:1em;width:20em}.annotation-info-overlay-title[_ngcontent-%COMP%]{font-size:1.4em}.annotation-info-overlay-note-form[_ngcontent-%COMP%]{display:grid;row-gap:.2em}.annotation-info-overlay-note-sub[_ngcontent-%COMP%]{color:#1f1f1f;font-size:.8em}.annotation-info-overlay-actions[_ngcontent-%COMP%]{color:#5f6368;display:grid;grid-template-columns:repeat(2,2.5em);justify-content:space-between}.annotation-info-overlay-action-button[_ngcontent-%COMP%]{background:#f5f5f5}.annotation-info-overlay-label-form-option[_ngcontent-%COMP%]{display:grid;grid-template-columns:min-content 1fr;grid-column-gap:.5em}.annotation-info-overlay-label-form-option-label-color-preview[_ngcontent-%COMP%]{height:1em;width:1em;border-radius:50%}.annotation-info-overlay-form-field[_ngcontent-%COMP%]{display:grid}.annotation-info-overlay-annotator-id[_ngcontent-%COMP%]{color:#959595}.annotation-info-overlay-readonly[_ngcontent-%COMP%]{padding-bottom:1em}.annotation-info-overlay-metrics-and-actions[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr max-content}.annotation-info-overlay-metrics-and-actions[_ngcontent-%COMP%] .annotation-info-overlay-metrics[_ngcontent-%COMP%]{display:grid;color:#959595}.annotation-info-overlay-metrics-and-actions[_ngcontent-%COMP%] .annotation-info-overlay-metrics[_ngcontent-%COMP%] .annotation-info-overlay-metric[_ngcontent-%COMP%]{display:grid;grid-template-columns:min-content 1fr;grid-column-gap:.2em;align-items:baseline} .label-autocomplete{--mat-autocomplete-background-color: #f5f5f5}.context-menu[_ngcontent-%COMP%]{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;background:#fff;display:grid;max-width:14em;min-width:10em;padding:.3em 0}.context-menu-item[_ngcontent-%COMP%]{align-items:center;background-color:transparent;border:none;cursor:pointer;display:grid;grid-column-gap:.5em;grid-template-columns:min-content max-content;font-size:1em;justify-content:start;padding:.3em 1em;-webkit-user-select:none;user-select:none}.context-menu-item[_ngcontent-%COMP%]:focus-visible{outline:none}.context-menu-item[_ngcontent-%COMP%]:active{background-color:#aaa}.context-menu-info[_ngcontent-%COMP%]{display:grid;grid-row-gap:.3em;padding:.3em 1em}.minor-actions[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr}.minor-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{color:#5f6368}.dialog-actions[_ngcontent-%COMP%]{justify-content:space-between}kbd[_ngcontent-%COMP%]{background-color:#eee;border-radius:3px;border:1px solid #b4b4b4;box-shadow:0 1px 1px #0003,0 2px #ffffffb3 inset;color:#333;display:inline-block;font-size:.85em;font-weight:700;line-height:1;padding:2px 4px;white-space:nowrap}.label-header[_ngcontent-%COMP%]{font-weight:700;font-size:1em}.label-image[_ngcontent-%COMP%]{height:10em;margin:.5em auto 0}.de-Identified-header[_ngcontent-%COMP%]{align-items:center;display:grid;grid-template-columns:min-content max-content;grid-column-gap:.2em} .slide-data-dialog-panel{max-height:80vh}.slide-divider[_ngcontent-%COMP%]{width:100%}.metadata-info[_ngcontent-%COMP%]{width:15em}.metadata-info-case-id[_ngcontent-%COMP%]{align-items:center;display:grid;grid-template-columns:max-content max-content;grid-column-gap:.2em;padding:.4em 0}.metadata-info-case-id-select[_ngcontent-%COMP%]{padding:0 4px;border:1px solid #ccc;border-radius:4px} .cdk-overlay-pane:has(.mat-mdc-select-panel){min-width:fit-content}"]})}}return t})();function df(t,n){1&t&&m.nrm(0,"div",2)}const uf=new m.nKC("MAT_PROGRESS_BAR_DEFAULT_OPTIONS");let mf=(()=>{class t{_elementRef=(0,m.WQX)(m.aKT);_ngZone=(0,m.WQX)(m.SKi);_changeDetectorRef=(0,m.WQX)(m.gRc);_renderer=(0,m.WQX)(m.sFG);_cleanupTransitionEnd;_animationMode=(0,m.WQX)(m.bc$,{optional:!0});constructor(){const i=(0,m.WQX)(uf,{optional:!0});this._isNoopAnimation="NoopAnimations"===this._animationMode,i&&(i.color&&(this.color=this._defaultColor=i.color),this.mode=i.mode||this.mode)}_isNoopAnimation=!1;get color(){return this._color||this._defaultColor}set color(i){this._color=i}_color;_defaultColor="primary";get value(){return this._value}set value(i){this._value=il(i||0),this._changeDetectorRef.markForCheck()}_value=0;get bufferValue(){return this._bufferValue||0}set bufferValue(i){this._bufferValue=il(i||0),this._changeDetectorRef.markForCheck()}_bufferValue=0;animationEnd=new m.bkB;get mode(){return this._mode}set mode(i){this._mode=i,this._changeDetectorRef.markForCheck()}_mode="determinate";ngAfterViewInit(){this._ngZone.runOutsideAngular(()=>{this._cleanupTransitionEnd=this._renderer.listen(this._elementRef.nativeElement,"transitionend",this._transitionendHandler)})}ngOnDestroy(){this._cleanupTransitionEnd?.()}_getPrimaryBarTransform(){return`scaleX(${this._isIndeterminate()?1:this.value/100})`}_getBufferBarFlexBasis(){return`${"buffer"===this.mode?this.bufferValue:100}%`}_isIndeterminate(){return"indeterminate"===this.mode||"query"===this.mode}_transitionendHandler=i=>{0===this.animationEnd.observers.length||!i.target||!i.target.classList.contains("mdc-linear-progress__primary-bar")||("determinate"===this.mode||"buffer"===this.mode)&&this._ngZone.run(()=>this.animationEnd.next({value:this.value}))};static \u0275fac=function(o){return new(o||t)};static \u0275cmp=m.VBU({type:t,selectors:[["mat-progress-bar"]],hostAttrs:["role","progressbar","aria-valuemin","0","aria-valuemax","100","tabindex","-1",1,"mat-mdc-progress-bar","mdc-linear-progress"],hostVars:10,hostBindings:function(o,s){2&o&&(m.BMQ("aria-valuenow",s._isIndeterminate()?null:s.value)("mode",s.mode),m.HbH("mat-"+s.color),m.AVh("_mat-animation-noopable",s._isNoopAnimation)("mdc-linear-progress--animation-ready",!s._isNoopAnimation)("mdc-linear-progress--indeterminate",s._isIndeterminate()))},inputs:{color:"color",value:[2,"value","value",m.Udg],bufferValue:[2,"bufferValue","bufferValue",m.Udg],mode:"mode"},outputs:{animationEnd:"animationEnd"},exportAs:["matProgressBar"],features:[m.GFd],decls:7,vars:5,consts:[["aria-hidden","true",1,"mdc-linear-progress__buffer"],[1,"mdc-linear-progress__buffer-bar"],[1,"mdc-linear-progress__buffer-dots"],["aria-hidden","true",1,"mdc-linear-progress__bar","mdc-linear-progress__primary-bar"],[1,"mdc-linear-progress__bar-inner"],["aria-hidden","true",1,"mdc-linear-progress__bar","mdc-linear-progress__secondary-bar"]],template:function(o,s){1&o&&(m.j41(0,"div",0),m.nrm(1,"div",1),m.DNE(2,df,1,0,"div",2),m.k0s(),m.j41(3,"div",3),m.nrm(4,"span",4),m.k0s(),m.j41(5,"div",5),m.nrm(6,"span",4),m.k0s()),2&o&&(m.R7$(),m.xc7("flex-basis",s._getBufferBarFlexBasis()),m.R7$(),m.vxM("buffer"===s.mode?2:-1),m.R7$(),m.xc7("transform",s._getPrimaryBarTransform()))},styles:[".mat-mdc-progress-bar{display:block;text-align:start}.mat-mdc-progress-bar[mode=query]{transform:scaleX(-1)}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-dots,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__secondary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__bar-inner.mdc-linear-progress__bar-inner{animation:none}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-bar{transition:transform 1ms}.mdc-linear-progress{position:relative;width:100%;transform:translateZ(0);outline:1px solid rgba(0,0,0,0);overflow-x:hidden;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);height:max(var(--mdc-linear-progress-track-height, 4px),var(--mdc-linear-progress-active-indicator-height, 4px))}@media(forced-colors: active){.mdc-linear-progress{outline-color:CanvasText}}.mdc-linear-progress__bar{position:absolute;top:0;bottom:0;margin:auto 0;width:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);height:var(--mdc-linear-progress-active-indicator-height, 4px)}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}[dir=rtl] .mdc-linear-progress__bar{right:0;transform-origin:center right}.mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;animation:none;border-top-style:solid;border-color:var(--mdc-linear-progress-active-indicator-color, var(--mat-sys-primary));border-top-width:var(--mdc-linear-progress-active-indicator-height, 4px)}.mdc-linear-progress__buffer{display:flex;position:absolute;top:0;bottom:0;margin:auto 0;width:100%;overflow:hidden;height:var(--mdc-linear-progress-track-height, 4px);border-radius:var(--mdc-linear-progress-track-shape, var(--mat-sys-corner-none))}.mdc-linear-progress__buffer-dots{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E\");background-repeat:repeat-x;flex:auto;transform:rotate(180deg);animation:mdc-linear-progress-buffering 250ms infinite linear;background-color:var(--mdc-linear-progress-track-color, var(--mat-sys-surface-variant))}@media(forced-colors: active){.mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}[dir=rtl] .mdc-linear-progress__buffer-dots{animation:mdc-linear-progress-buffering-reverse 250ms infinite linear;transform:rotate(0)}.mdc-linear-progress__buffer-bar{flex:0 1 100%;transition:flex-basis 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);background-color:var(--mdc-linear-progress-track-color, var(--mat-sys-surface-variant))}.mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation:mdc-linear-progress-primary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-primary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation-name:mdc-linear-progress-primary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}.mdc-linear-progress__secondary-bar{display:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;display:block}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation:mdc-linear-progress-secondary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-secondary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation-name:mdc-linear-progress-secondary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}@keyframes mdc-linear-progress-buffering{from{transform:rotate(180deg) translateX(calc(var(--mdc-linear-progress-track-height, 4px) * -2.5))}}@keyframes mdc-linear-progress-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(83.67142%)}100%{transform:translateX(200.611057%)}}@keyframes mdc-linear-progress-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(84.386165%)}100%{transform:translateX(160.277782%)}}@keyframes mdc-linear-progress-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(-83.67142%)}100%{transform:translateX(-200.611057%)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(-37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(-84.386165%)}100%{transform:translateX(-160.277782%)}}@keyframes mdc-linear-progress-buffering-reverse{from{transform:translateX(-10px)}}"],encapsulation:2,changeDetection:0})}return t})();function il(t,n=0,i=100){return Math.max(n,Math.min(i,t))}let vf=(()=>{class t{static \u0275fac=function(o){return new(o||t)};static \u0275mod=m.$C({type:t});static \u0275inj=m.G2t({imports:[rl.yE]})}return t})();var pf=D(4412),hf=D(5964),ff=D(5717);let gf=(()=>{class t{transform(i,o){return o.map((u,p)=>({id:u.id,index:p+1})).filter(u=>u.id===i.id).map(u=>u.index).filter(u=>u>0).join(", ")}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275pipe=m.EJ8({name:"SplitViewSlideDescriptorToIndexPipe",type:t,pure:!0})}}return t})();var ol=D(9183);function yf(t,n){if(1&t&&(m.j41(0,"button",5)(1,"mat-icon"),m.EFF(2,"view_stream"),m.k0s(),m.j41(3,"span"),m.EFF(4),m.k0s()()),2&t){const i=n.$implicit;m.Y8G("mat-dialog-close",i.name),m.R7$(4),m.SpI(" ",i.displayName," ")}}function Sf(t,n){1&t&&m.nrm(0,"mat-progress-spinner",6)}function xf(t,n){1&t&&(m.j41(0,"div"),m.EFF(1,"You have no cohorts that can be added to."),m.k0s())}let wf=(()=>{class t{constructor(i,o){this.cohortService=i,this.data=o,this.title="Select cohort",this.ownedCohorts=!0,this.adminCohorts=!0,this.editableSharedCohorts=!0,this.viewOnlySharedCohorts=!1,this.requiredDeidValue=void 0,this.allowAccessList=new Set([...this.ownedCohorts?["PATHOLOGY_USER_ACCESS_ROLE_OWNER"]:[],...this.adminCohorts?["PATHOLOGY_USER_ACCESS_ROLE_ADMIN"]:[],...this.editableSharedCohorts?["PATHOLOGY_USER_ACCESS_ROLE_EDITOR"]:[],...this.viewOnlySharedCohorts?["PATHOLOGY_USER_ACCESS_ROLE_VIEWER"]:[]]),this.cohorts=[],this.loadingCohorts=!1,this.destroy$=new oe.m,o&&(this.title=o.title??"Select cohort",this.ownedCohorts=o.ownedCohorts??!0,this.editableSharedCohorts=o.editableSharedCohorts??!0,this.viewOnlySharedCohorts=o.viewOnlySharedCohorts??!1,this.requiredDeidValue=o.requiredDeidValue??void 0)}ngOnInit(){this.cohortService.loadAllCohorts(),this.cohortService.cohorts$.pipe((0,he.Q)(this.destroy$),(0,Ii.T)(i=>i.filter(s=>this.allowAccessList.has(s.access)&&(void 0===this.requiredDeidValue||s.isDeid===this.requiredDeidValue))),(0,re.M)(i=>{this.cohorts=i})).subscribe(),this.cohortService.loadingCohortInfos$.pipe((0,he.Q)(this.destroy$),(0,re.M)(i=>{this.loadingCohorts=i})).subscribe()}ngOnDestroy(){this.destroy$.next(""),this.destroy$.complete()}static{this.\u0275fac=function(o){return new(o||t)(m.rXU(Bc.Do),m.rXU(M.Vh,8))}}static{this.\u0275cmp=m.VBU({type:t,selectors:[["dialog-cohort-select"]],decls:6,vars:4,consts:[["mat-dialog-title",""],["mat-dialog-content",""],["mat-button","","class","cohort-entry",3,"mat-dialog-close",4,"ngFor","ngForOf"],["diameter","20",4,"ngIf"],[4,"ngIf"],["mat-button","",1,"cohort-entry",3,"mat-dialog-close"],["diameter","20"]],template:function(o,s){1&o&&(m.j41(0,"div",0),m.EFF(1),m.k0s(),m.j41(2,"div",1),m.DNE(3,yf,5,2,"button",2)(4,Sf,1,0,"mat-progress-spinner",3)(5,xf,2,0,"div",4),m.k0s()),2&o&&(m.R7$(),m.SpI(" ",s.title,"\n"),m.R7$(2),m.Y8G("ngForOf",s.cohorts),m.R7$(),m.Y8G("ngIf",s.loadingCohorts),m.R7$(),m.Y8G("ngIf",0===s.cohorts.length))},dependencies:[ol.D6,ol.LG,K.m_,K.An,M.hM,M.tx,M.BI,M.Yi,q.MD,q.Sq,q.bT],styles:['@import"https://fonts.googleapis.com/css?family=Google+Sans";@import"https://fonts.googleapis.com/css?family=Google+Sans+Text:400,500";@import"https://fonts.googleapis.com/css?family=Google+Sans+Display:400,500,700";@import"https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp";@import"https://fonts.googleapis.com/css2?family=Google+Symbols:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200";.mat-elevation-z0[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z0[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-0, none)}.mat-elevation-z1[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z1[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-1, none)}.mat-elevation-z2[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z2[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-2, none)}.mat-elevation-z3[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z3[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-3, none)}.mat-elevation-z4[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z4[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-4, none)}.mat-elevation-z5[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z5[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-5, none)}.mat-elevation-z6[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z6[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-6, none)}.mat-elevation-z7[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z7[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-7, none)}.mat-elevation-z8[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z8[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-8, none)}.mat-elevation-z9[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z9[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-9, none)}.mat-elevation-z10[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z10[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-10, none)}.mat-elevation-z11[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z11[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-11, none)}.mat-elevation-z12[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z12[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-12, none)}.mat-elevation-z13[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z13[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-13, none)}.mat-elevation-z14[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z14[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-14, none)}.mat-elevation-z15[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z15[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-15, none)}.mat-elevation-z16[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z16[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-16, none)}.mat-elevation-z17[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z17[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-17, none)}.mat-elevation-z18[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z18[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-18, none)}.mat-elevation-z19[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z19[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-19, none)}.mat-elevation-z20[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z20[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-20, none)}.mat-elevation-z21[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z21[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-21, none)}.mat-elevation-z22[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z22[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-22, none)}.mat-elevation-z23[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z23[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-23, none)}.mat-elevation-z24[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z24[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-24, none)}html[_ngcontent-%COMP%]{--mat-sys-on-surface: initial}.mat-app-background[_ngcontent-%COMP%]{background-color:var(--mat-app-background-color, var(--mat-sys-background, transparent));color:var(--mat-app-text-color, var(--mat-sys-on-background, inherit))}.mat-elevation-0[_ngcontent-%COMP%]{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-1[_ngcontent-%COMP%]{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-2[_ngcontent-%COMP%]{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-3[_ngcontent-%COMP%]{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-4[_ngcontent-%COMP%]{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-5[_ngcontent-%COMP%]{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-6[_ngcontent-%COMP%]{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-7[_ngcontent-%COMP%]{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-8[_ngcontent-%COMP%]{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-9[_ngcontent-%COMP%]{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-10[_ngcontent-%COMP%]{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-11[_ngcontent-%COMP%]{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-12[_ngcontent-%COMP%]{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-13[_ngcontent-%COMP%]{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-14[_ngcontent-%COMP%]{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-15[_ngcontent-%COMP%]{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-16[_ngcontent-%COMP%]{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-17[_ngcontent-%COMP%]{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-18[_ngcontent-%COMP%]{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-19[_ngcontent-%COMP%]{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-20[_ngcontent-%COMP%]{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-21[_ngcontent-%COMP%]{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-22[_ngcontent-%COMP%]{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-23[_ngcontent-%COMP%]{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-24[_ngcontent-%COMP%]{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}html[_ngcontent-%COMP%]{--mat-ripple-color: rgba(0, 0, 0, .1)}html[_ngcontent-%COMP%]{--mat-option-selected-state-label-text-color: #2196f3;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent[_ngcontent-%COMP%]{--mat-option-selected-state-label-text-color: #b0bec5;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-warn[_ngcontent-%COMP%]{--mat-option-selected-state-label-text-color: #f44336;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}html[_ngcontent-%COMP%]{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%]{--mat-full-pseudo-checkbox-selected-icon-color: #b0bec5;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}html[_ngcontent-%COMP%]{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #b0bec5;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-primary[_ngcontent-%COMP%]{--mat-full-pseudo-checkbox-selected-icon-color: #2196f3;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-primary[_ngcontent-%COMP%]{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #2196f3;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-accent[_ngcontent-%COMP%]{--mat-full-pseudo-checkbox-selected-icon-color: #b0bec5;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-accent[_ngcontent-%COMP%]{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #b0bec5;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-warn[_ngcontent-%COMP%]{--mat-full-pseudo-checkbox-selected-icon-color: #f44336;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-warn[_ngcontent-%COMP%]{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #f44336;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}html[_ngcontent-%COMP%]{--mat-app-background-color: #fafafa;--mat-app-text-color: rgba(0, 0, 0, .87);--mat-app-elevation-shadow-level-0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-2: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-3: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-4: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-5: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 5px 8px 0px rgba(0, 0, 0, .14), 0px 1px 14px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-6: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-7: 0px 4px 5px -2px rgba(0, 0, 0, .2), 0px 7px 10px 1px rgba(0, 0, 0, .14), 0px 2px 16px 1px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-8: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-9: 0px 5px 6px -3px rgba(0, 0, 0, .2), 0px 9px 12px 1px rgba(0, 0, 0, .14), 0px 3px 16px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-10: 0px 6px 6px -3px rgba(0, 0, 0, .2), 0px 10px 14px 1px rgba(0, 0, 0, .14), 0px 4px 18px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-11: 0px 6px 7px -4px rgba(0, 0, 0, .2), 0px 11px 15px 1px rgba(0, 0, 0, .14), 0px 4px 20px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-12: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-13: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 13px 19px 2px rgba(0, 0, 0, .14), 0px 5px 24px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-14: 0px 7px 9px -4px rgba(0, 0, 0, .2), 0px 14px 21px 2px rgba(0, 0, 0, .14), 0px 5px 26px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-15: 0px 8px 9px -5px rgba(0, 0, 0, .2), 0px 15px 22px 2px rgba(0, 0, 0, .14), 0px 6px 28px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-16: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-17: 0px 8px 11px -5px rgba(0, 0, 0, .2), 0px 17px 26px 2px rgba(0, 0, 0, .14), 0px 6px 32px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-18: 0px 9px 11px -5px rgba(0, 0, 0, .2), 0px 18px 28px 2px rgba(0, 0, 0, .14), 0px 7px 34px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-19: 0px 9px 12px -6px rgba(0, 0, 0, .2), 0px 19px 29px 2px rgba(0, 0, 0, .14), 0px 7px 36px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-20: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 20px 31px 3px rgba(0, 0, 0, .14), 0px 8px 38px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-21: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 21px 33px 3px rgba(0, 0, 0, .14), 0px 8px 40px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-22: 0px 10px 14px -6px rgba(0, 0, 0, .2), 0px 22px 35px 3px rgba(0, 0, 0, .14), 0px 8px 42px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-23: 0px 11px 14px -7px rgba(0, 0, 0, .2), 0px 23px 36px 3px rgba(0, 0, 0, .14), 0px 9px 44px 8px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-24: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-elevated-card-container-shape: 4px}html[_ngcontent-%COMP%]{--mdc-outlined-card-container-shape: 4px;--mdc-outlined-card-outline-width: 1px}html[_ngcontent-%COMP%]{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}html[_ngcontent-%COMP%]{--mdc-linear-progress-active-indicator-height: 4px;--mdc-linear-progress-track-height: 4px;--mdc-linear-progress-track-shape: 0}.mat-mdc-progress-bar[_ngcontent-%COMP%]{--mdc-linear-progress-active-indicator-color: #2196f3;--mdc-linear-progress-track-color: rgba(33, 150, 243, .25)}.mat-mdc-progress-bar.mat-accent[_ngcontent-%COMP%]{--mdc-linear-progress-active-indicator-color: #b0bec5;--mdc-linear-progress-track-color: rgba(176, 190, 197, .25)}.mat-mdc-progress-bar.mat-warn[_ngcontent-%COMP%]{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}html[_ngcontent-%COMP%]{--mdc-plain-tooltip-container-shape: 4px;--mdc-plain-tooltip-supporting-text-line-height: 16px}html[_ngcontent-%COMP%]{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html[_ngcontent-%COMP%]{--mdc-filled-text-field-active-indicator-height: 1px;--mdc-filled-text-field-focus-active-indicator-height: 2px;--mdc-filled-text-field-container-shape: 4px}html[_ngcontent-%COMP%]{--mdc-outlined-text-field-outline-width: 1px;--mdc-outlined-text-field-focus-outline-width: 2px;--mdc-outlined-text-field-container-shape: 4px}html[_ngcontent-%COMP%]{--mdc-filled-text-field-caret-color: #2196f3;--mdc-filled-text-field-focus-active-indicator-color: #2196f3;--mdc-filled-text-field-focus-label-text-color: rgba(33, 150, 243, .87);--mdc-filled-text-field-container-color: rgb(244.8, 244.8, 244.8);--mdc-filled-text-field-disabled-container-color: rgb(249.9, 249.9, 249.9);--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-hover-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-hover-label-text-color: #f44336;--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336}html[_ngcontent-%COMP%]{--mdc-outlined-text-field-caret-color: #2196f3;--mdc-outlined-text-field-focus-outline-color: #2196f3;--mdc-outlined-text-field-focus-label-text-color: rgba(33, 150, 243, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-hover-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-error-hover-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336}html[_ngcontent-%COMP%]{--mat-form-field-focus-select-arrow-color: rgba(33, 150, 243, .87);--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38);--mat-form-field-state-layer-color: rgba(0, 0, 0, .87);--mat-form-field-error-text-color: #f44336;--mat-form-field-select-option-text-color: inherit;--mat-form-field-select-disabled-option-text-color: GrayText;--mat-form-field-leading-icon-color: unset;--mat-form-field-disabled-leading-icon-color: unset;--mat-form-field-trailing-icon-color: unset;--mat-form-field-disabled-trailing-icon-color: unset;--mat-form-field-error-focus-trailing-icon-color: unset;--mat-form-field-error-hover-trailing-icon-color: unset;--mat-form-field-error-trailing-icon-color: unset;--mat-form-field-enabled-select-arrow-color: rgba(0, 0, 0, .54);--mat-form-field-disabled-select-arrow-color: rgba(0, 0, 0, .38);--mat-form-field-hover-state-layer-opacity: .04;--mat-form-field-focus-state-layer-opacity: .08}.mat-mdc-form-field.mat-accent[_ngcontent-%COMP%]{--mdc-filled-text-field-caret-color: #b0bec5;--mdc-filled-text-field-focus-active-indicator-color: #b0bec5;--mdc-filled-text-field-focus-label-text-color: rgba(176, 190, 197, .87)}.mat-mdc-form-field.mat-accent[_ngcontent-%COMP%]{--mdc-outlined-text-field-caret-color: #b0bec5;--mdc-outlined-text-field-focus-outline-color: #b0bec5;--mdc-outlined-text-field-focus-label-text-color: rgba(176, 190, 197, .87)}.mat-mdc-form-field.mat-accent[_ngcontent-%COMP%]{--mat-form-field-focus-select-arrow-color: rgba(176, 190, 197, .87)}.mat-mdc-form-field.mat-warn[_ngcontent-%COMP%]{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-warn[_ngcontent-%COMP%]{--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-warn[_ngcontent-%COMP%]{--mat-form-field-focus-select-arrow-color: rgba(244, 67, 54, .87)}html[_ngcontent-%COMP%]{--mat-form-field-container-height: 56px;--mat-form-field-filled-label-display: block;--mat-form-field-container-vertical-padding: 16px;--mat-form-field-filled-with-label-container-padding-top: 24px;--mat-form-field-filled-with-label-container-padding-bottom: 8px}html[_ngcontent-%COMP%]{--mat-select-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(33, 150, 243, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html[_ngcontent-%COMP%] .mat-mdc-form-field.mat-accent[_ngcontent-%COMP%]{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(176, 190, 197, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html[_ngcontent-%COMP%] .mat-mdc-form-field.mat-warn[_ngcontent-%COMP%]{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html[_ngcontent-%COMP%]{--mat-select-arrow-transform: translateY(-8px)}html[_ngcontent-%COMP%]{--mat-autocomplete-container-shape: 4px;--mat-autocomplete-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-autocomplete-background-color: white}html[_ngcontent-%COMP%]{--mdc-dialog-container-shape: 4px}html[_ngcontent-%COMP%]{--mat-dialog-container-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12);--mat-dialog-container-max-width: 80vw;--mat-dialog-container-small-max-width: 80vw;--mat-dialog-container-min-width: 0;--mat-dialog-actions-alignment: start;--mat-dialog-actions-padding: 8px;--mat-dialog-content-padding: 20px 24px;--mat-dialog-with-actions-content-padding: 20px 24px;--mat-dialog-headline-padding: 0 24px 9px}html[_ngcontent-%COMP%]{--mdc-dialog-container-color: white;--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mdc-chip-container-shape-radius: 16px;--mdc-chip-with-avatar-avatar-shape-radius: 14px;--mdc-chip-with-avatar-avatar-size: 28px;--mdc-chip-with-icon-icon-size: 18px;--mdc-chip-outline-width: 0;--mdc-chip-outline-color: transparent;--mdc-chip-disabled-outline-color: transparent;--mdc-chip-focus-outline-color: transparent;--mdc-chip-hover-state-layer-opacity: .04;--mdc-chip-with-avatar-disabled-avatar-opacity: 1;--mdc-chip-flat-selected-outline-width: 0;--mdc-chip-selected-hover-state-layer-opacity: .04;--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity: 1;--mdc-chip-with-icon-disabled-icon-opacity: 1}.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mat-chip-disabled-container-opacity: .4;--mat-chip-trailing-action-opacity: .54;--mat-chip-trailing-action-focus-opacity: 1;--mat-chip-trailing-action-state-layer-color: transparent;--mat-chip-selected-trailing-action-state-layer-color: transparent;--mat-chip-trailing-action-hover-state-layer-opacity: 0;--mat-chip-trailing-action-focus-state-layer-opacity: 0}.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-elevated-selected-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-elevated-disabled-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-flat-disabled-selected-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-selected-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121}.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mat-chip-selected-disabled-trailing-icon-color: #212121;--mat-chip-selected-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary[_ngcontent-%COMP%]{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #2196f3;--mdc-chip-elevated-selected-container-color: #2196f3;--mdc-chip-elevated-disabled-container-color: #2196f3;--mdc-chip-flat-disabled-selected-container-color: #2196f3;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-selected-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary[_ngcontent-%COMP%]{--mat-chip-selected-disabled-trailing-icon-color: white;--mat-chip-selected-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent[_ngcontent-%COMP%]{--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-elevated-container-color: #b0bec5;--mdc-chip-elevated-selected-container-color: #b0bec5;--mdc-chip-elevated-disabled-container-color: #b0bec5;--mdc-chip-flat-disabled-selected-container-color: #b0bec5;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-selected-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent[_ngcontent-%COMP%]{--mat-chip-selected-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mat-chip-selected-trailing-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn[_ngcontent-%COMP%]{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-selected-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-flat-disabled-selected-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-selected-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn[_ngcontent-%COMP%]{--mat-chip-selected-disabled-trailing-icon-color: white;--mat-chip-selected-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mdc-chip-container-height: 32px}html[_ngcontent-%COMP%]{--mdc-switch-disabled-selected-icon-opacity: .38;--mdc-switch-disabled-track-opacity: .12;--mdc-switch-disabled-unselected-icon-opacity: .38;--mdc-switch-handle-height: 20px;--mdc-switch-handle-shape: 10px;--mdc-switch-handle-width: 20px;--mdc-switch-selected-icon-size: 18px;--mdc-switch-track-height: 14px;--mdc-switch-track-shape: 7px;--mdc-switch-track-width: 36px;--mdc-switch-unselected-icon-size: 18px;--mdc-switch-selected-focus-state-layer-opacity: .12;--mdc-switch-selected-hover-state-layer-opacity: .04;--mdc-switch-selected-pressed-state-layer-opacity: .1;--mdc-switch-unselected-focus-state-layer-opacity: .12;--mdc-switch-unselected-hover-state-layer-opacity: .04;--mdc-switch-unselected-pressed-state-layer-opacity: .1}html[_ngcontent-%COMP%] .mat-mdc-slide-toggle[_ngcontent-%COMP%]{--mat-switch-disabled-selected-handle-opacity: .38;--mat-switch-disabled-unselected-handle-opacity: .38;--mat-switch-unselected-handle-size: 20px;--mat-switch-selected-handle-size: 20px;--mat-switch-pressed-handle-size: 20px;--mat-switch-with-icon-handle-size: 20px;--mat-switch-selected-handle-horizontal-margin: 0;--mat-switch-selected-with-icon-handle-horizontal-margin: 0;--mat-switch-selected-pressed-handle-horizontal-margin: 0;--mat-switch-unselected-handle-horizontal-margin: 0;--mat-switch-unselected-with-icon-handle-horizontal-margin: 0;--mat-switch-unselected-pressed-handle-horizontal-margin: 0;--mat-switch-visible-track-opacity: 1;--mat-switch-hidden-track-opacity: 1;--mat-switch-visible-track-transition: transform 75ms 0ms cubic-bezier(0, 0, .2, 1);--mat-switch-hidden-track-transition: transform 75ms 0ms cubic-bezier(.4, 0, .6, 1);--mat-switch-track-outline-width: 1px;--mat-switch-track-outline-color: transparent;--mat-switch-selected-track-outline-width: 1px;--mat-switch-selected-track-outline-color: transparent;--mat-switch-disabled-unselected-track-outline-width: 1px;--mat-switch-disabled-unselected-track-outline-color: transparent}html[_ngcontent-%COMP%]{--mdc-switch-selected-focus-state-layer-color: #1e88e5;--mdc-switch-selected-handle-color: #1e88e5;--mdc-switch-selected-hover-state-layer-color: #1e88e5;--mdc-switch-selected-pressed-state-layer-color: #1e88e5;--mdc-switch-selected-focus-handle-color: #0d47a1;--mdc-switch-selected-hover-handle-color: #0d47a1;--mdc-switch-selected-pressed-handle-color: #0d47a1;--mdc-switch-selected-focus-track-color: #64b5f6;--mdc-switch-selected-hover-track-color: #64b5f6;--mdc-switch-selected-pressed-track-color: #64b5f6;--mdc-switch-selected-track-color: #64b5f6;--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: #fff;--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-switch-disabled-label-text-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%] .mat-mdc-slide-toggle[_ngcontent-%COMP%]{--mat-switch-label-text-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%] .mat-mdc-slide-toggle.mat-accent[_ngcontent-%COMP%]{--mdc-switch-selected-focus-state-layer-color: #546e7a;--mdc-switch-selected-handle-color: #546e7a;--mdc-switch-selected-hover-state-layer-color: #546e7a;--mdc-switch-selected-pressed-state-layer-color: #546e7a;--mdc-switch-selected-focus-handle-color: #263238;--mdc-switch-selected-hover-handle-color: #263238;--mdc-switch-selected-pressed-handle-color: #263238;--mdc-switch-selected-focus-track-color: #90a4ae;--mdc-switch-selected-hover-track-color: #90a4ae;--mdc-switch-selected-pressed-track-color: #90a4ae;--mdc-switch-selected-track-color: #90a4ae}html[_ngcontent-%COMP%] .mat-mdc-slide-toggle.mat-warn[_ngcontent-%COMP%]{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}html[_ngcontent-%COMP%]{--mdc-switch-state-layer-size: 40px}html[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-opacity: .38;--mdc-radio-disabled-unselected-icon-opacity: .38;--mdc-radio-state-layer-size: 40px}.mat-mdc-radio-button.mat-primary[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #2196f3;--mdc-radio-selected-hover-icon-color: #2196f3;--mdc-radio-selected-icon-color: #2196f3;--mdc-radio-selected-pressed-icon-color: #2196f3}.mat-mdc-radio-button.mat-primary[_ngcontent-%COMP%]{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #2196f3;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-accent[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #b0bec5;--mdc-radio-selected-hover-icon-color: #b0bec5;--mdc-radio-selected-icon-color: #b0bec5;--mdc-radio-selected-pressed-icon-color: #b0bec5}.mat-mdc-radio-button.mat-accent[_ngcontent-%COMP%]{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #b0bec5;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-warn[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-radio-button.mat-warn[_ngcontent-%COMP%]{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%]{--mdc-radio-state-layer-size: 40px}html[_ngcontent-%COMP%]{--mat-radio-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-slider-active-track-height: 6px;--mdc-slider-active-track-shape: 9999px;--mdc-slider-handle-height: 20px;--mdc-slider-handle-shape: 50%;--mdc-slider-handle-width: 20px;--mdc-slider-inactive-track-height: 4px;--mdc-slider-inactive-track-shape: 9999px;--mdc-slider-with-overlap-handle-outline-width: 1px;--mdc-slider-with-tick-marks-active-container-opacity: .6;--mdc-slider-with-tick-marks-container-shape: 50%;--mdc-slider-with-tick-marks-container-size: 2px;--mdc-slider-with-tick-marks-inactive-container-opacity: .6;--mdc-slider-handle-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-slider-value-indicator-width: auto;--mat-slider-value-indicator-height: 32px;--mat-slider-value-indicator-caret-display: block;--mat-slider-value-indicator-border-radius: 4px;--mat-slider-value-indicator-padding: 0 12px;--mat-slider-value-indicator-text-transform: none;--mat-slider-value-indicator-container-transform: translateX(-50%)}html[_ngcontent-%COMP%]{--mdc-slider-handle-color: #2196f3;--mdc-slider-focus-handle-color: #2196f3;--mdc-slider-hover-handle-color: #2196f3;--mdc-slider-active-track-color: #2196f3;--mdc-slider-inactive-track-color: #2196f3;--mdc-slider-with-tick-marks-inactive-container-color: #2196f3;--mdc-slider-with-tick-marks-active-container-color: white;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-label-container-color: #000;--mdc-slider-label-label-text-color: #fff;--mdc-slider-with-overlap-handle-outline-color: #fff;--mdc-slider-with-tick-marks-disabled-container-color: #000}html[_ngcontent-%COMP%]{--mat-slider-ripple-color: #2196f3;--mat-slider-hover-state-layer-color: rgba(33, 150, 243, .05);--mat-slider-focus-state-layer-color: rgba(33, 150, 243, .2);--mat-slider-value-indicator-opacity: .6}html[_ngcontent-%COMP%] .mat-accent[_ngcontent-%COMP%]{--mdc-slider-handle-color: #b0bec5;--mdc-slider-focus-handle-color: #b0bec5;--mdc-slider-hover-handle-color: #b0bec5;--mdc-slider-active-track-color: #b0bec5;--mdc-slider-inactive-track-color: #b0bec5;--mdc-slider-with-tick-marks-inactive-container-color: #b0bec5;--mdc-slider-with-tick-marks-active-container-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%] .mat-accent[_ngcontent-%COMP%]{--mat-slider-ripple-color: #b0bec5;--mat-slider-hover-state-layer-color: rgba(176, 190, 197, .05);--mat-slider-focus-state-layer-color: rgba(176, 190, 197, .2)}html[_ngcontent-%COMP%] .mat-warn[_ngcontent-%COMP%]{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: white}html[_ngcontent-%COMP%] .mat-warn[_ngcontent-%COMP%]{--mat-slider-ripple-color: #f44336;--mat-slider-hover-state-layer-color: rgba(244, 67, 54, .05);--mat-slider-focus-state-layer-color: rgba(244, 67, 54, .2)}html[_ngcontent-%COMP%]{--mat-menu-container-shape: 4px;--mat-menu-divider-bottom-spacing: 0;--mat-menu-divider-top-spacing: 0;--mat-menu-item-spacing: 16px;--mat-menu-item-icon-size: 24px;--mat-menu-item-leading-spacing: 16px;--mat-menu-item-trailing-spacing: 16px;--mat-menu-item-with-icon-leading-spacing: 16px;--mat-menu-item-with-icon-trailing-spacing: 16px;--mat-menu-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white;--mat-menu-divider-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-list-list-item-container-shape: 0;--mdc-list-list-item-leading-avatar-shape: 50%;--mdc-list-list-item-container-color: transparent;--mdc-list-list-item-selected-container-color: transparent;--mdc-list-list-item-leading-avatar-color: transparent;--mdc-list-list-item-leading-icon-size: 24px;--mdc-list-list-item-leading-avatar-size: 40px;--mdc-list-list-item-trailing-icon-size: 24px;--mdc-list-list-item-disabled-state-layer-color: transparent;--mdc-list-list-item-disabled-state-layer-opacity: 0;--mdc-list-list-item-disabled-label-text-opacity: .38;--mdc-list-list-item-disabled-leading-icon-opacity: .38;--mdc-list-list-item-disabled-trailing-icon-opacity: .38}html[_ngcontent-%COMP%]{--mat-list-active-indicator-color: transparent;--mat-list-active-indicator-shape: 4px}html[_ngcontent-%COMP%]{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mdc-list-item__start[_ngcontent-%COMP%], .mdc-list-item__end[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #2196f3;--mdc-radio-selected-hover-icon-color: #2196f3;--mdc-radio-selected-icon-color: #2196f3;--mdc-radio-selected-pressed-icon-color: #2196f3}.mat-accent[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%], .mat-accent[_ngcontent-%COMP%] .mdc-list-item__end[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #b0bec5;--mdc-radio-selected-hover-icon-color: #b0bec5;--mdc-radio-selected-icon-color: #b0bec5;--mdc-radio-selected-pressed-icon-color: #b0bec5}.mat-warn[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%], .mat-warn[_ngcontent-%COMP%] .mdc-list-item__end[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #2196f3;--mdc-checkbox-selected-hover-icon-color: #2196f3;--mdc-checkbox-selected-icon-color: #2196f3;--mdc-checkbox-selected-pressed-icon-color: #2196f3;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #2196f3;--mdc-checkbox-selected-hover-state-layer-color: #2196f3;--mdc-checkbox-selected-pressed-state-layer-color: #2196f3;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: black;--mdc-checkbox-selected-focus-icon-color: #b0bec5;--mdc-checkbox-selected-hover-icon-color: #b0bec5;--mdc-checkbox-selected-icon-color: #b0bec5;--mdc-checkbox-selected-pressed-icon-color: #b0bec5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #b0bec5;--mdc-checkbox-selected-hover-state-layer-color: #b0bec5;--mdc-checkbox-selected-pressed-state-layer-color: #b0bec5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-base.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--selected[_ngcontent-%COMP%] .mdc-list-item__primary-text[_ngcontent-%COMP%], .mat-mdc-list-base.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--selected[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%], .mat-mdc-list-base.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--activated[_ngcontent-%COMP%] .mdc-list-item__primary-text[_ngcontent-%COMP%], .mat-mdc-list-base.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--activated[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%]{color:#2196f3}.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--disabled[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%], .mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--disabled[_ngcontent-%COMP%] .mdc-list-item__content[_ngcontent-%COMP%], .mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--disabled[_ngcontent-%COMP%] .mdc-list-item__end[_ngcontent-%COMP%]{opacity:1}html[_ngcontent-%COMP%]{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}html[_ngcontent-%COMP%]{--mat-list-list-item-leading-icon-start-space: 16px;--mat-list-list-item-leading-icon-end-space: 32px}.mdc-list-item__start[_ngcontent-%COMP%], .mdc-list-item__end[_ngcontent-%COMP%]{--mdc-radio-state-layer-size: 40px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line[_ngcontent-%COMP%], .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line[_ngcontent-%COMP%], .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line[_ngcontent-%COMP%]{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines[_ngcontent-%COMP%], .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines[_ngcontent-%COMP%], .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines[_ngcontent-%COMP%]{height:72px}html[_ngcontent-%COMP%]{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-paginator-container-size: 56px;--mat-paginator-form-field-container-height: 40px;--mat-paginator-form-field-container-vertical-padding: 8px;--mat-paginator-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-secondary-navigation-tab-container-height: 48px}html[_ngcontent-%COMP%]{--mdc-tab-indicator-active-indicator-height: 2px;--mdc-tab-indicator-active-indicator-shape: 0}html[_ngcontent-%COMP%]{--mat-tab-header-divider-color: transparent;--mat-tab-header-divider-height: 0}.mat-mdc-tab-group[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar[_ngcontent-%COMP%]{--mdc-tab-indicator-active-indicator-color: #2196f3}.mat-mdc-tab-group[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar[_ngcontent-%COMP%]{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #2196f3;--mat-tab-header-active-ripple-color: #2196f3;--mat-tab-header-inactive-ripple-color: #2196f3;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #2196f3;--mat-tab-header-active-hover-label-text-color: #2196f3;--mat-tab-header-active-focus-indicator-color: #2196f3;--mat-tab-header-active-hover-indicator-color: #2196f3}.mat-mdc-tab-group.mat-accent[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-accent[_ngcontent-%COMP%]{--mdc-tab-indicator-active-indicator-color: #b0bec5}.mat-mdc-tab-group.mat-accent[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-accent[_ngcontent-%COMP%]{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #b0bec5;--mat-tab-header-active-ripple-color: #b0bec5;--mat-tab-header-inactive-ripple-color: #b0bec5;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #b0bec5;--mat-tab-header-active-hover-label-text-color: #b0bec5;--mat-tab-header-active-focus-indicator-color: #b0bec5;--mat-tab-header-active-hover-indicator-color: #b0bec5}.mat-mdc-tab-group.mat-warn[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-warn[_ngcontent-%COMP%]{--mdc-tab-indicator-active-indicator-color: #f44336}.mat-mdc-tab-group.mat-warn[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-warn[_ngcontent-%COMP%]{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-background-primary[_ngcontent-%COMP%]{--mat-tab-header-with-background-background-color: #2196f3;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-background-accent[_ngcontent-%COMP%]{--mat-tab-header-with-background-background-color: #b0bec5;--mat-tab-header-with-background-foreground-color: rgba(0, 0, 0, .87)}.mat-mdc-tab-group.mat-background-warn[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-background-warn[_ngcontent-%COMP%]{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header[_ngcontent-%COMP%]{--mdc-secondary-navigation-tab-container-height: 48px}html[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-state-layer-opacity: .16;--mdc-checkbox-selected-hover-state-layer-opacity: .04;--mdc-checkbox-selected-pressed-state-layer-opacity: .16;--mdc-checkbox-unselected-focus-state-layer-opacity: .16;--mdc-checkbox-unselected-hover-state-layer-opacity: .04;--mdc-checkbox-unselected-pressed-state-layer-opacity: .16}html[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: black;--mdc-checkbox-selected-focus-icon-color: #b0bec5;--mdc-checkbox-selected-hover-icon-color: #b0bec5;--mdc-checkbox-selected-icon-color: #b0bec5;--mdc-checkbox-selected-pressed-icon-color: #b0bec5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #b0bec5;--mdc-checkbox-selected-hover-state-layer-color: #b0bec5;--mdc-checkbox-selected-pressed-state-layer-color: #b0bec5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}html[_ngcontent-%COMP%]{--mat-checkbox-disabled-label-color: rgba(0, 0, 0, .38);--mat-checkbox-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-checkbox.mat-primary[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #2196f3;--mdc-checkbox-selected-hover-icon-color: #2196f3;--mdc-checkbox-selected-icon-color: #2196f3;--mdc-checkbox-selected-pressed-icon-color: #2196f3;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #2196f3;--mdc-checkbox-selected-hover-state-layer-color: #2196f3;--mdc-checkbox-selected-pressed-state-layer-color: #2196f3;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}html[_ngcontent-%COMP%]{--mdc-checkbox-state-layer-size: 40px}html[_ngcontent-%COMP%]{--mat-checkbox-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-text-button-container-shape: 4px;--mdc-text-button-keep-touch-target: false}html[_ngcontent-%COMP%]{--mdc-filled-button-container-shape: 4px;--mdc-filled-button-keep-touch-target: false}html[_ngcontent-%COMP%]{--mdc-protected-button-container-shape: 4px;--mdc-protected-button-container-elevation-shadow: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mdc-protected-button-disabled-container-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-protected-button-focus-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-hover-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-pressed-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-outlined-button-keep-touch-target: false;--mdc-outlined-button-outline-width: 1px;--mdc-outlined-button-container-shape: 4px}html[_ngcontent-%COMP%]{--mat-text-button-horizontal-padding: 8px;--mat-text-button-with-icon-horizontal-padding: 8px;--mat-text-button-icon-spacing: 8px;--mat-text-button-icon-offset: 0}html[_ngcontent-%COMP%]{--mat-filled-button-horizontal-padding: 16px;--mat-filled-button-icon-spacing: 8px;--mat-filled-button-icon-offset: -4px}html[_ngcontent-%COMP%]{--mat-protected-button-horizontal-padding: 16px;--mat-protected-button-icon-spacing: 8px;--mat-protected-button-icon-offset: -4px}html[_ngcontent-%COMP%]{--mat-outlined-button-horizontal-padding: 15px;--mat-outlined-button-icon-spacing: 8px;--mat-outlined-button-icon-offset: -4px}html[_ngcontent-%COMP%]{--mdc-text-button-label-text-color: black;--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mat-text-button-state-layer-color: black;--mat-text-button-disabled-state-layer-color: black;--mat-text-button-ripple-color: rgba(0, 0, 0, .1);--mat-text-button-hover-state-layer-opacity: .04;--mat-text-button-focus-state-layer-opacity: .12;--mat-text-button-pressed-state-layer-opacity: .12}html[_ngcontent-%COMP%]{--mdc-filled-button-container-color: white;--mdc-filled-button-label-text-color: black;--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mat-filled-button-state-layer-color: black;--mat-filled-button-disabled-state-layer-color: black;--mat-filled-button-ripple-color: rgba(0, 0, 0, .1);--mat-filled-button-hover-state-layer-opacity: .04;--mat-filled-button-focus-state-layer-opacity: .12;--mat-filled-button-pressed-state-layer-opacity: .12}html[_ngcontent-%COMP%]{--mdc-protected-button-container-color: white;--mdc-protected-button-label-text-color: black;--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mat-protected-button-state-layer-color: black;--mat-protected-button-disabled-state-layer-color: black;--mat-protected-button-ripple-color: rgba(0, 0, 0, .1);--mat-protected-button-hover-state-layer-opacity: .04;--mat-protected-button-focus-state-layer-opacity: .12;--mat-protected-button-pressed-state-layer-opacity: .12}html[_ngcontent-%COMP%]{--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-label-text-color: black;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-outlined-button-state-layer-color: black;--mat-outlined-button-disabled-state-layer-color: black;--mat-outlined-button-ripple-color: rgba(0, 0, 0, .1);--mat-outlined-button-hover-state-layer-opacity: .04;--mat-outlined-button-focus-state-layer-opacity: .12;--mat-outlined-button-pressed-state-layer-opacity: .12}.mat-mdc-button.mat-primary[_ngcontent-%COMP%]{--mdc-text-button-label-text-color: #2196f3}.mat-mdc-button.mat-primary[_ngcontent-%COMP%]{--mat-text-button-state-layer-color: #2196f3;--mat-text-button-ripple-color: rgba(33, 150, 243, .1)}.mat-mdc-button.mat-accent[_ngcontent-%COMP%]{--mdc-text-button-label-text-color: #b0bec5}.mat-mdc-button.mat-accent[_ngcontent-%COMP%]{--mat-text-button-state-layer-color: #b0bec5;--mat-text-button-ripple-color: rgba(176, 190, 197, .1)}.mat-mdc-button.mat-warn[_ngcontent-%COMP%]{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button.mat-warn[_ngcontent-%COMP%]{--mat-text-button-state-layer-color: #f44336;--mat-text-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-unelevated-button.mat-primary[_ngcontent-%COMP%]{--mdc-filled-button-container-color: #2196f3;--mdc-filled-button-label-text-color: white}.mat-mdc-unelevated-button.mat-primary[_ngcontent-%COMP%]{--mat-filled-button-state-layer-color: white;--mat-filled-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-unelevated-button.mat-accent[_ngcontent-%COMP%]{--mdc-filled-button-container-color: #b0bec5;--mdc-filled-button-label-text-color: black}.mat-mdc-unelevated-button.mat-accent[_ngcontent-%COMP%]{--mat-filled-button-state-layer-color: black;--mat-filled-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-unelevated-button.mat-warn[_ngcontent-%COMP%]{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: white}.mat-mdc-unelevated-button.mat-warn[_ngcontent-%COMP%]{--mat-filled-button-state-layer-color: white;--mat-filled-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-primary[_ngcontent-%COMP%]{--mdc-protected-button-container-color: #2196f3;--mdc-protected-button-label-text-color: white}.mat-mdc-raised-button.mat-primary[_ngcontent-%COMP%]{--mat-protected-button-state-layer-color: white;--mat-protected-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-accent[_ngcontent-%COMP%]{--mdc-protected-button-container-color: #b0bec5;--mdc-protected-button-label-text-color: black}.mat-mdc-raised-button.mat-accent[_ngcontent-%COMP%]{--mat-protected-button-state-layer-color: black;--mat-protected-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button.mat-warn[_ngcontent-%COMP%]{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: white}.mat-mdc-raised-button.mat-warn[_ngcontent-%COMP%]{--mat-protected-button-state-layer-color: white;--mat-protected-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-outlined-button.mat-primary[_ngcontent-%COMP%]{--mdc-outlined-button-label-text-color: #2196f3;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-primary[_ngcontent-%COMP%]{--mat-outlined-button-state-layer-color: #2196f3;--mat-outlined-button-ripple-color: rgba(33, 150, 243, .1)}.mat-mdc-outlined-button.mat-accent[_ngcontent-%COMP%]{--mdc-outlined-button-label-text-color: #b0bec5;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-accent[_ngcontent-%COMP%]{--mat-outlined-button-state-layer-color: #b0bec5;--mat-outlined-button-ripple-color: rgba(176, 190, 197, .1)}.mat-mdc-outlined-button.mat-warn[_ngcontent-%COMP%]{--mdc-outlined-button-label-text-color: #f44336;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-warn[_ngcontent-%COMP%]{--mat-outlined-button-state-layer-color: #f44336;--mat-outlined-button-ripple-color: rgba(244, 67, 54, .1)}html[_ngcontent-%COMP%]{--mdc-text-button-container-height: 36px}html[_ngcontent-%COMP%]{--mdc-filled-button-container-height: 36px}html[_ngcontent-%COMP%]{--mdc-protected-button-container-height: 36px}html[_ngcontent-%COMP%]{--mdc-outlined-button-container-height: 36px}html[_ngcontent-%COMP%]{--mat-text-button-touch-target-display: block}html[_ngcontent-%COMP%]{--mat-filled-button-touch-target-display: block}html[_ngcontent-%COMP%]{--mat-protected-button-touch-target-display: block}html[_ngcontent-%COMP%]{--mat-outlined-button-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-icon-button-icon-size: 24px}html[_ngcontent-%COMP%]{--mdc-icon-button-icon-color: inherit;--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mat-icon-button-state-layer-color: black;--mat-icon-button-disabled-state-layer-color: black;--mat-icon-button-ripple-color: rgba(0, 0, 0, .1);--mat-icon-button-hover-state-layer-opacity: .04;--mat-icon-button-focus-state-layer-opacity: .12;--mat-icon-button-pressed-state-layer-opacity: .12}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-primary[_ngcontent-%COMP%]{--mdc-icon-button-icon-color: #2196f3}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-primary[_ngcontent-%COMP%]{--mat-icon-button-state-layer-color: #2196f3;--mat-icon-button-ripple-color: rgba(33, 150, 243, .1)}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-accent[_ngcontent-%COMP%]{--mdc-icon-button-icon-color: #b0bec5}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-accent[_ngcontent-%COMP%]{--mat-icon-button-state-layer-color: #b0bec5;--mat-icon-button-ripple-color: rgba(176, 190, 197, .1)}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-warn[_ngcontent-%COMP%]{--mdc-icon-button-icon-color: #f44336}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-warn[_ngcontent-%COMP%]{--mat-icon-button-state-layer-color: #f44336;--mat-icon-button-ripple-color: rgba(244, 67, 54, .1)}html[_ngcontent-%COMP%]{--mat-icon-button-touch-target-display: block}.mat-mdc-icon-button.mat-mdc-button-base[_ngcontent-%COMP%]{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}html[_ngcontent-%COMP%]{--mdc-fab-container-shape: 50%;--mdc-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-fab-small-container-shape: 50%;--mdc-fab-small-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-extended-fab-container-height: 48px;--mdc-extended-fab-container-shape: 24px;--mdc-extended-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-fab-container-color: white}html[_ngcontent-%COMP%]{--mat-fab-foreground-color: black;--mat-fab-state-layer-color: black;--mat-fab-disabled-state-layer-color: black;--mat-fab-ripple-color: rgba(0, 0, 0, .1);--mat-fab-hover-state-layer-opacity: .04;--mat-fab-focus-state-layer-opacity: .12;--mat-fab-pressed-state-layer-opacity: .12;--mat-fab-disabled-state-container-color: rgba(0, 0, 0, .12);--mat-fab-disabled-state-foreground-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mdc-fab-small-container-color: white}html[_ngcontent-%COMP%]{--mat-fab-small-foreground-color: black;--mat-fab-small-state-layer-color: black;--mat-fab-small-disabled-state-layer-color: black;--mat-fab-small-ripple-color: rgba(0, 0, 0, .1);--mat-fab-small-hover-state-layer-opacity: .04;--mat-fab-small-focus-state-layer-opacity: .12;--mat-fab-small-pressed-state-layer-opacity: .12;--mat-fab-small-disabled-state-container-color: rgba(0, 0, 0, .12);--mat-fab-small-disabled-state-foreground-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-primary[_ngcontent-%COMP%]{--mdc-fab-container-color: #2196f3}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-primary[_ngcontent-%COMP%]{--mat-fab-foreground-color: white;--mat-fab-state-layer-color: white;--mat-fab-ripple-color: rgba(255, 255, 255, .1)}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-accent[_ngcontent-%COMP%]{--mdc-fab-container-color: #b0bec5}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-accent[_ngcontent-%COMP%]{--mat-fab-foreground-color: black;--mat-fab-state-layer-color: black;--mat-fab-ripple-color: rgba(0, 0, 0, .1)}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-warn[_ngcontent-%COMP%]{--mdc-fab-container-color: #f44336}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-warn[_ngcontent-%COMP%]{--mat-fab-foreground-color: white;--mat-fab-state-layer-color: white;--mat-fab-ripple-color: rgba(255, 255, 255, .1)}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-primary[_ngcontent-%COMP%]{--mdc-fab-small-container-color: #2196f3}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-primary[_ngcontent-%COMP%]{--mat-fab-small-foreground-color: white;--mat-fab-small-state-layer-color: white;--mat-fab-small-ripple-color: rgba(255, 255, 255, .1)}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-accent[_ngcontent-%COMP%]{--mdc-fab-small-container-color: #b0bec5}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-accent[_ngcontent-%COMP%]{--mat-fab-small-foreground-color: black;--mat-fab-small-state-layer-color: black;--mat-fab-small-ripple-color: rgba(0, 0, 0, .1)}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-warn[_ngcontent-%COMP%]{--mdc-fab-small-container-color: #f44336}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-warn[_ngcontent-%COMP%]{--mat-fab-small-foreground-color: white;--mat-fab-small-state-layer-color: white;--mat-fab-small-ripple-color: rgba(255, 255, 255, .1)}html[_ngcontent-%COMP%]{--mat-fab-touch-target-display: block}html[_ngcontent-%COMP%]{--mat-fab-small-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-snackbar-container-shape: 4px}html[_ngcontent-%COMP%]{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}html[_ngcontent-%COMP%]{--mat-snack-bar-button-color: #b0bec5}html[_ngcontent-%COMP%]{--mat-table-row-item-outline-width: 1px}html[_ngcontent-%COMP%]{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}html[_ngcontent-%COMP%]{--mdc-circular-progress-active-indicator-width: 4px;--mdc-circular-progress-size: 48px}html[_ngcontent-%COMP%]{--mdc-circular-progress-active-indicator-color: #2196f3}html[_ngcontent-%COMP%] .mat-accent[_ngcontent-%COMP%]{--mdc-circular-progress-active-indicator-color: #b0bec5}html[_ngcontent-%COMP%] .mat-warn[_ngcontent-%COMP%]{--mdc-circular-progress-active-indicator-color: #f44336}html[_ngcontent-%COMP%]{--mat-badge-container-shape: 50%;--mat-badge-container-size: unset;--mat-badge-small-size-container-size: unset;--mat-badge-large-size-container-size: unset;--mat-badge-legacy-container-size: 22px;--mat-badge-legacy-small-size-container-size: 16px;--mat-badge-legacy-large-size-container-size: 28px;--mat-badge-container-offset: -11px 0;--mat-badge-small-size-container-offset: -8px 0;--mat-badge-large-size-container-offset: -14px 0;--mat-badge-container-overlap-offset: -11px;--mat-badge-small-size-container-overlap-offset: -8px;--mat-badge-large-size-container-overlap-offset: -14px;--mat-badge-container-padding: 0;--mat-badge-small-size-container-padding: 0;--mat-badge-large-size-container-padding: 0}html[_ngcontent-%COMP%]{--mat-badge-background-color: #2196f3;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent[_ngcontent-%COMP%]{--mat-badge-background-color: #b0bec5;--mat-badge-text-color: rgba(0, 0, 0, .87)}.mat-badge-warn[_ngcontent-%COMP%]{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html[_ngcontent-%COMP%]{--mat-bottom-sheet-container-shape: 4px}html[_ngcontent-%COMP%]{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html[_ngcontent-%COMP%]{--mat-legacy-button-toggle-height: 36px;--mat-legacy-button-toggle-shape: 2px;--mat-legacy-button-toggle-focus-state-layer-opacity: 1}html[_ngcontent-%COMP%]{--mat-standard-button-toggle-shape: 4px;--mat-standard-button-toggle-hover-state-layer-opacity: .04;--mat-standard-button-toggle-focus-state-layer-opacity: .12}html[_ngcontent-%COMP%]{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd}html[_ngcontent-%COMP%]{--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: rgb(224.4, 224.4, 224.4)}html[_ngcontent-%COMP%]{--mat-standard-button-toggle-height: 48px}html[_ngcontent-%COMP%]{--mat-datepicker-calendar-container-shape: 4px;--mat-datepicker-calendar-container-touch-shape: 4px;--mat-datepicker-calendar-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-datepicker-calendar-container-touch-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #2196f3;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(33, 150, 243, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(33, 150, 243, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(33, 150, 243, .3);--mat-datepicker-toggle-active-state-icon-color: #2196f3;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(33, 150, 243, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032);--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-text-color: black;--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent[_ngcontent-%COMP%]{--mat-datepicker-calendar-date-selected-state-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-selected-state-background-color: #b0bec5;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(176, 190, 197, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-focus-state-background-color: rgba(176, 190, 197, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(176, 190, 197, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(176, 190, 197, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032)}.mat-datepicker-content.mat-warn[_ngcontent-%COMP%]{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032)}.mat-datepicker-toggle-active.mat-accent[_ngcontent-%COMP%]{--mat-datepicker-toggle-active-state-icon-color: #b0bec5}.mat-datepicker-toggle-active.mat-warn[_ngcontent-%COMP%]{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls[_ngcontent-%COMP%]{--mat-icon-button-touch-target-display: none}.mat-calendar-controls[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-mdc-button-base[_ngcontent-%COMP%]{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}html[_ngcontent-%COMP%]{--mat-divider-width: 1px}html[_ngcontent-%COMP%]{--mat-divider-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-expansion-container-shape: 4px;--mat-expansion-legacy-header-indicator-display: inline-block;--mat-expansion-header-indicator-display: none}html[_ngcontent-%COMP%]{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html[_ngcontent-%COMP%]{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html[_ngcontent-%COMP%]{--mat-icon-color: inherit}.mat-icon.mat-primary[_ngcontent-%COMP%]{--mat-icon-color: #2196f3}.mat-icon.mat-accent[_ngcontent-%COMP%]{--mat-icon-color: #b0bec5}.mat-icon.mat-warn[_ngcontent-%COMP%]{--mat-icon-color: #f44336}html[_ngcontent-%COMP%]{--mat-sidenav-container-shape: 0;--mat-sidenav-container-elevation-shadow: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-sidenav-container-width: auto}html[_ngcontent-%COMP%]{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html[_ngcontent-%COMP%]{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #2196f3;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #2196f3;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #2196f3;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html[_ngcontent-%COMP%] .mat-step-header.mat-accent[_ngcontent-%COMP%]{--mat-stepper-header-icon-foreground-color: rgba(0, 0, 0, .87);--mat-stepper-header-selected-state-icon-background-color: #b0bec5;--mat-stepper-header-selected-state-icon-foreground-color: rgba(0, 0, 0, .87);--mat-stepper-header-done-state-icon-background-color: #b0bec5;--mat-stepper-header-done-state-icon-foreground-color: rgba(0, 0, 0, .87);--mat-stepper-header-edit-state-icon-background-color: #b0bec5;--mat-stepper-header-edit-state-icon-foreground-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%] .mat-step-header.mat-warn[_ngcontent-%COMP%]{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html[_ngcontent-%COMP%]{--mat-stepper-header-height: 72px}html[_ngcontent-%COMP%]{--mat-sort-arrow-color: rgb(117.3, 117.3, 117.3)}html[_ngcontent-%COMP%]{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary[_ngcontent-%COMP%]{--mat-toolbar-container-background-color: #2196f3;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent[_ngcontent-%COMP%]{--mat-toolbar-container-background-color: #b0bec5;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-warn[_ngcontent-%COMP%]{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html[_ngcontent-%COMP%]{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}html[_ngcontent-%COMP%]{--mat-tree-container-background-color: white;--mat-tree-node-text-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%]{--mat-tree-node-min-height: 48px}html[_ngcontent-%COMP%]{--mat-timepicker-container-shape: 4px;--mat-timepicker-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-timepicker-container-background-color: white}.overlay[_ngcontent-%COMP%]{z-index:1000;inset:0 0 0 0 absolute;background-color:#0003;display:flex;align-items:center;justify-content:center}.hidden[_ngcontent-%COMP%]{visibility:hidden;pointer-events:none}.hidden[_ngcontent-%COMP%], .hidden[_ngcontent-%COMP%] canvas[_ngcontent-%COMP%]{visibility:hidden;pointer-events:none}html[_ngcontent-%COMP%], body[_ngcontent-%COMP%]{height:100%;font-family:Google Symbols;font-family:Roboto,Helvetica Neue,sans-serif}html[_ngcontent-%COMP%]{overflow:hidden}body[_ngcontent-%COMP%]{background-color:#f5f5f5;margin:0;overflow:auto}body.search[_ngcontent-%COMP%]{background-color:#fff}.cursor-overlay[_ngcontent-%COMP%]{height:100%;left:0;position:fixed;top:0;width:100%;z-index:999;pointer-events:none}.cursor-overlay.grabbing[_ngcontent-%COMP%]{cursor:-webkit-grabbing}.cursor-overlay.wait[_ngcontent-%COMP%]{cursor:wait}hr[_ngcontent-%COMP%]{border-color:#0000001f;border-style:solid;border-width:1px 0 0;margin:0}.mat-icon[_ngcontent-%COMP%]{bottom:1px;position:relative}.mat-tooltip[_ngcontent-%COMP%]{margin:4px;font-size:12px}.cdk-overlay-pane[_ngcontent-%COMP%] .mat-mdc-dialog-container[_ngcontent-%COMP%]{min-width:25em}.mat-mdc-menu-content[_ngcontent-%COMP%]{background:#fff}.mat-drawer.mat-drawer-side[_ngcontent-%COMP%] .mat-drawer-inner-container[_ngcontent-%COMP%]{display:grid}.mat-mdc-dialog-container[_ngcontent-%COMP%] .mat-mdc-dialog-actions[_ngcontent-%COMP%]{padding:1em}.mat-mdc-dialog-container[_ngcontent-%COMP%] .mat-mdc-dialog-title[_ngcontent-%COMP%]{padding-top:1em}.mat-mdc-dialog-container[_ngcontent-%COMP%] .mat-mdc-dialog-title[_ngcontent-%COMP%]:before{content:unset}.mat-mdc-icon-button.mat-mdc-icon-button.mat-mdc-button-base[_ngcontent-%COMP%]{display:grid;height:auto;place-content:center center;padding:.2em;width:auto}.mat-icon[_ngcontent-%COMP%]{overflow:visible}.mat-dialog-container[_ngcontent-%COMP%] .mat-card[_ngcontent-%COMP%]{padding:24px}.mat-dialog-container[_ngcontent-%COMP%] .mat-card-header-text[_ngcontent-%COMP%]{margin:0}[_ngcontent-%COMP%]::-webkit-scrollbar{-webkit-appearance:none}[_ngcontent-%COMP%]::-webkit-scrollbar:horizontal{height:11px}[_ngcontent-%COMP%]::-webkit-scrollbar:vertical{width:11px}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border-radius:8px;border:2px solid white;background-color:#00000080}[_ngcontent-%COMP%]::-webkit-scrollbar-track{background-color:#fff;border-radius:8px}.cohort-entry[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-start;flex-direction:row}mat-spinner[_ngcontent-%COMP%]{position:absolute;left:45%}']})}}return t})();const Cf=["slidesExpansionPanel"],kf=t=>({"slides-expansion-panel-collapsed":t}),_f=t=>({quickViewSlideDescriptors:t}),Df=t=>({quickViewSlideDescriptors:t,notInCohort:!0}),Pf=t=>({"thumbnail-selected-action":t}),bf=(t,n)=>({"selected-image":t,"slide-not-in-cohort":n}),If=t=>({"selected-quickview-checkbox":t});function Tf(t,n){if(1&t&&(m.j41(0,"span"),m.EFF(1),m.k0s()),2&t){const i=m.XpG();m.R7$(),m.SpI("(",i.slideDescriptors.length,")")}}function Rf(t,n){if(1&t){const i=m.RV6();m.j41(0,"button",22),m.bIt("click",function(s){m.eBV(i);const d=m.XpG(2);return s.stopPropagation(),m.Njj(d.openAddToCohortDialog())}),m.j41(1,"mat-icon",23),m.EFF(2,"list_alt_add"),m.k0s()()}if(2&t){const i=m.XpG(2);m.Y8G("disabled",0===i.quickViewSelectedDescriptors.size)}}function Af(t,n){if(1&t){const i=m.RV6();m.j41(0,"button",24),m.bIt("click",function(s){m.eBV(i);const d=m.XpG(2);return s.stopPropagation(),m.Njj(d.removeSlideFromCurrentCohort())}),m.j41(1,"mat-icon"),m.EFF(2,"remove"),m.k0s()()}if(2&t){const i=m.XpG(2);m.Y8G("disabled",0===i.quickViewSelectedDescriptors.size)}}function Of(t,n){if(1&t){const i=m.RV6();m.j41(0,"button",25),m.bIt("click",function(s){m.eBV(i);const d=m.XpG(2);return s.stopPropagation(),m.Njj(d.toggleSelectAllQuickViewSelectedDescriptors())}),m.j41(1,"mat-icon"),m.EFF(2),m.k0s(),m.EFF(3," Select all "),m.k0s()}if(2&t){const i=m.XpG(2);m.R7$(2),m.SpI(" ",i.quickViewSelectedDescriptors.size>0&&i.quickViewSelectedDescriptors.size!==i.slideDescriptors.length?"indeterminate_check_box":i.quickViewSelectedDescriptors.size===i.slideDescriptors.length?"check_box":"check_box_outline_blank"," ")}}function Ef(t,n){if(1&t&&(m.j41(0,"div",17)(1,"div",18),m.DNE(2,Rf,3,1,"button",19),m.k0s(),m.j41(3,"div",18),m.DNE(4,Af,3,1,"button",20),m.nI1(5,"async"),m.k0s(),m.DNE(6,Of,4,1,"button",21),m.k0s()),2&t){const i=m.XpG(),o=m.sdS(1);m.R7$(),m.Y8G("matTooltip",0===i.quickViewSelectedDescriptors.size?"Select a slide to add to cohort":""),m.R7$(),m.Y8G("ngIf",o.expanded),m.R7$(),m.Y8G("matTooltip",0===i.quickViewSelectedDescriptors.size?"Select a slide to remove from cohort":""),m.R7$(),m.Y8G("ngIf",o.expanded&&i.activatedRouteParams.cohortName&&m.bMT(5,5,i.cohortEditAllowed)),m.R7$(2),m.Y8G("ngIf",o.expanded)}}function Mf(t,n){1&t&&m.nrm(0,"mat-progress-bar",26)}function Lf(t,n){1&t&&m.eu8(0)}function qf(t,n){1&t&&m.eu8(0)}function Ff(t,n){if(1&t&&(m.qex(0),m.nrm(1,"mat-divider",27),m.j41(2,"div",28),m.EFF(3,"Case slides not part of cohort \u27a4"),m.k0s(),m.nrm(4,"mat-divider",27),m.DNE(5,qf,1,0,"ng-container",12),m.bVm()),2&t){const i=m.XpG(),o=m.sdS(22);m.R7$(5),m.Y8G("ngTemplateOutlet",o)("ngTemplateOutletContext",m.eq3(2,Df,i.slideDescriptorsNotInCohort))}}function Nf(t,n){if(1&t){const i=m.RV6();m.j41(0,"button",29),m.bIt("click",function(){m.eBV(i);const s=m.XpG();return m.Njj(s.toggleMultiView())}),m.j41(1,"mat-icon"),m.EFF(2,"grid_view"),m.k0s()()}if(2&t){const i=m.XpG();m.Y8G("ngClass",m.eq3(1,Pf,i.multiViewScreens>1||i.isMultiViewSlidePicker))}}function Bf(t,n){if(1&t){const i=m.RV6();m.j41(0,"button",35),m.bIt("click",function(){m.eBV(i);const s=m.XpG().$implicit,d=m.XpG(2);return m.Njj(d.toggleQuickViewSelectedDescriptors(s))}),m.j41(1,"mat-icon"),m.EFF(2),m.k0s()()}if(2&t){const i=m.XpG().$implicit,o=m.XpG(2);m.Y8G("ngClass",m.eq3(2,If,o.quickViewSelectedDescriptors.has(i))),m.R7$(2),m.SpI(" ",o.quickViewSelectedDescriptors.has(i)?"check_box":"check_box_outline_blank"," ")}}function Vf(t,n){if(1&t){const i=m.RV6();m.j41(0,"div",36),m.bIt("click",function(s){m.eBV(i);const d=m.XpG().$implicit,u=m.XpG(2);return s.stopPropagation(),m.Njj(u.selectSplitViewScreen(d))}),m.EFF(1),m.k0s()}if(2&t){const i=n.$implicit;m.R7$(),m.SpI(" ",i," ")}}function Uf(t,n){if(1&t&&(m.j41(0,"div",31),m.nrm(1,"image-viewer-quick-view",32),m.DNE(2,Bf,3,4,"button",33)(3,Vf,2,1,"div",34),m.nI1(4,"SplitViewSlideDescriptorToIndexPipe"),m.k0s()),2&t){const i=n.$implicit,o=m.XpG().notInCohort,s=m.XpG();m.Y8G("ngClass",m.l_i(9,bf,i.id===(null==s.selectedSplitViewSlideDescriptor?null:s.selectedSplitViewSlideDescriptor.id),o))("matTooltip",o?"Case slide not part of cohort":""),m.R7$(),m.Y8G("slideDescriptor",i)("enableExpandedView",!1),m.R7$(),m.Y8G("ngIf",s.cohortsEnabled&&s.selectFeatureAvailable),m.R7$(),m.Y8G("ngIf",m.i5U(4,6,s.multiViewScreens>1&&i,s.splitViewSlideDescriptors))}}function Gf(t,n){1&t&&m.DNE(0,Uf,5,12,"div",30),2&t&&m.Y8G("ngForOf",n.quickViewSlideDescriptors)}let Qf=(()=>{class t{constructor(i,o,s,d,u,p,h){this.activatedRoute=i,this.cohortService=o,this.dialogService=s,this.imageViewerPageStore=d,this.router=u,this.slideApiService=p,this.userService=h,this.activatedRouteParams={},this.cohortsEnabled=ai.c.ENABLE_COHORTS,this.cohortEditAllowed=new pf.t(!1),this.enableSplitView=!0,this.isMultiViewSlidePicker=!1,this.loadingCohorts=!0,this.multiViewScreens=0,this.olMap=void 0,this.destroyed$=new oe.m(1),this.quickViewSelectedDescriptors=new Set,this.selectFeatureAvailable=!0,this.slideDescriptors=[],this.slideDescriptorsInCohort=[],this.slideDescriptorsNotInCohort=[],this.splitViewSlideDescriptors=[],this.activatedRoute.queryParams.pipe((0,ae.F)(),(0,re.M)(v=>{this.activatedRouteParams=v})).subscribe(),(0,H.z)([this.cohortService.selectedPathologyCohort$.pipe((0,he.Q)(this.destroyed$),(0,hf.p)(v=>void 0!==v)),this.userService.getCurrentUser$()]).pipe((0,he.Q)(this.destroyed$),(0,re.M)(([v,f])=>{if(v&&f){const y=v?.userAccess,S=(v.userAccess??[]).find(({userEmail:w})=>w===f);if(!y||!S)return void this.cohortEditAllowed.next(!1);this.cohortEditAllowed.next("PATHOLOGY_USER_ACCESS_ROLE_OWNER"===S.accessRole||"PATHOLOGY_USER_ACCESS_ROLE_EDITOR"===S.accessRole||"PATHOLOGY_USER_ACCESS_ROLE_ADMIN"===S.accessRole)}else this.cohortEditAllowed.next(!1)})).subscribe()}ngOnDestroy(){this.destroyed$.next(!0),this.destroyed$.complete()}ngOnInit(){this.setupOlMap(),this.setupSlideDescriptors(),this.setupSelectedSplitViewSlideDescriptor(),this.setupMultiView()}setupMultiView(){this.imageViewerPageStore.multiViewScreens$.subscribe(i=>{this.multiViewScreens=i}),this.imageViewerPageStore.isMultiViewSlidePicker$.subscribe(i=>{this.isMultiViewSlidePicker=i})}setupSelectedSplitViewSlideDescriptor(){this.imageViewerPageStore.selectedSplitViewSlideDescriptor$.subscribe(i=>{this.selectedSplitViewSlideDescriptor=i}),this.imageViewerPageStore.splitViewSlideDescriptors$.subscribe(i=>{this.splitViewSlideDescriptors=i.filter(o=>!!o?.id),1===this.splitViewSlideDescriptors.length&&this.slidesExpansionPanel.close()})}setupOlMap(){(0,H.z)([this.imageViewerPageStore.selectedSplitViewSlideDescriptor$,this.imageViewerPageStore.olMapBySlideDescriptorId$]).pipe((0,he.Q)(this.destroyed$),(0,re.M)(([i,o])=>{const s=o.get(i?.id);s&&(this.olMap=s)})).subscribe()}setupSlideDescriptors(){this.cohortService.loading$.subscribe(i=>{this.loadingCohorts=i}),(0,H.z)([this.cohortService.selectedPathologyCohort$,this.slideApiService.slideDescriptors$]).subscribe(([i,o])=>{let s=new Set;if(i?.slides&&(s=new Set(i?.slides.map(d=>d.dicomUri).filter(d=>!!d))),this.slideDescriptors=[...o],this.activatedRouteParams.cohortName){const d=[],u=[];[...o].forEach(p=>{s.has(p?.id)?d.push(p):u.push(p)}),this.slideDescriptorsInCohort=d,this.slideDescriptorsNotInCohort=u}else this.slideDescriptorsInCohort=[...o]})}addToSplitView(){const i=[...this.quickViewSelectedDescriptors.values()];this.splitViewSlideDescriptors.length>1&&!i.length&&this.selectedSplitViewSlideDescriptor&&i.push(this.selectedSplitViewSlideDescriptor);const o={series:i.map(s=>s.id).join(",")};this.router.navigate([],{relativeTo:this.activatedRoute,queryParams:o,queryParamsHandling:"merge"}),this.quickViewSelectedDescriptors.clear()}openAddToCohortDialog(){const i=[...this.quickViewSelectedDescriptors.values()];if(!i.length)return;const o=i.some(d=>(0,ff.Eb)(d.id||""));this.dialogService.openComponentDialog(wf,{data:{title:"Add selected slide to cohort",viewOnlySharedCohorts:!1,requiredDeidValue:o},maxHeight:"100vh",autoFocus:!1}).afterClosed().subscribe(d=>{d&&this.cohortService.addSlidesToCohort(d,i.map(u=>u.id)).subscribe()})}resetQuickViewSelectedDescriptors(){this.quickViewSelectedDescriptors.clear()}removeSlideFromCurrentCohort(){const i=[...this.quickViewSelectedDescriptors.values()];i.length&&this.cohortService.isCohortSelected()&&this.cohortService.removeSlidesFromCohort(this.cohortService.getSelectedCohortName(),i.map(o=>o.id)).pipe((0,he.Q)(this.destroyed$)).subscribe()}toggleQuickViewSelectedDescriptors(i){this.quickViewSelectedDescriptors.has(i)?this.quickViewSelectedDescriptors.delete(i):this.quickViewSelectedDescriptors.add(i)}toggleSelectAllQuickViewSelectedDescriptors(){this.quickViewSelectedDescriptors.size!==this.slideDescriptors.length?this.quickViewSelectedDescriptors=new Set(this.slideDescriptors):this.resetQuickViewSelectedDescriptors()}selectSplitViewScreen(i){this.imageViewerPageStore.selectedSplitViewSlideDescriptor$.next(i)}toggleMultiView(){const i=this.imageViewerPageStore.splitViewSlideDescriptors$.value;if(this.imageViewerPageStore.syncLock$.next(!1),this.imageViewerPageStore.multiViewScreenSelectedIndex$.next(0),i.length>1){let o=i[this.imageViewerPageStore.multiViewScreenSelectedIndex$.value];o||(o=i[0]);const s={series:o?.id,cohortName:this.activatedRouteParams.cohortName};return this.imageViewerPageStore.multiViewScreenSelectedIndex$.next(0),void this.router.navigate(["/viewer"],{queryParams:s,replaceUrl:!0})}this.imageViewerPageStore.isMultiViewSlidePicker$.next(!this.imageViewerPageStore.isMultiViewSlidePicker$.value)}static{this.\u0275fac=function(o){return new(o||t)(m.rXU(Sa.nX),m.rXU(Bc.Do),m.rXU(Zu.o),m.rXU(Vc.y),m.rXU(Sa.Ix),m.rXU(el.T),m.rXU(tl.D))}}static{this.\u0275cmp=m.VBU({type:t,selectors:[["image-viewer-slides"]],viewQuery:function(o,s){if(1&o&&m.GBs(Cf,7),2&o){let d;m.mGM(d=m.lsd())&&(s.slidesExpansionPanel=d.first)}},decls:23,vars:12,consts:[["slidesExpansionPanel",""],["quickViewThumbnails",""],["hideToggle","","expanded","",1,"slides-expansion-panel",3,"ngClass"],[1,"slide-details-header-title"],[1,"title-label"],[1,"material-icons-outlined"],[4,"ngIf"],["class","selected-slide-cohort-actions",4,"ngIf"],[1,"thumbnails-section"],[1,"thumbnails-progress"],["color","primary","mode","indeterminate",4,"ngIf"],[1,"thumbnails"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["vertical","",1,"action-divider"],[1,"thumbnail-actions"],[1,"thumbnail-select-actions"],["mat-icon-button","","aria-label","Multiview","matTooltip","Multiview","class","remove-image-button","disabled","",3,"ngClass","click",4,"ngIf"],[1,"selected-slide-cohort-actions"],[3,"matTooltip"],["mat-icon-button","","aria-label","Add slides to cohort","matTooltip","Add slides to cohort","class","add-image-button",3,"disabled","click",4,"ngIf"],["mat-icon-button","","aria-label","Remove slides from cohort","matTooltip","Remove slides from cohort","class","remove-image-button",3,"disabled","click",4,"ngIf"],["mat-stroked-button","","color","primary","class","select-all",3,"click",4,"ngIf"],["mat-icon-button","","aria-label","Add slides to cohort","matTooltip","Add slides to cohort",1,"add-image-button",3,"click","disabled"],[1,"google-symbols"],["mat-icon-button","","aria-label","Remove slides from cohort","matTooltip","Remove slides from cohort",1,"remove-image-button",3,"click","disabled"],["mat-stroked-button","","color","primary",1,"select-all",3,"click"],["color","primary","mode","indeterminate"],["vertical","",1,"slide-divider"],[1,"not-in-cohort-warning"],["mat-icon-button","","aria-label","Multiview","matTooltip","Multiview","disabled","",1,"remove-image-button",3,"click","ngClass"],["class","thumbnail",3,"ngClass","matTooltip",4,"ngFor","ngForOf"],[1,"thumbnail",3,"ngClass","matTooltip"],[1,"thumbnail-image",3,"slideDescriptor","enableExpandedView"],["class","quickview-checkbox","mat-icon-button","","color","primary",3,"ngClass","click",4,"ngIf"],["class","splitview-index",3,"click",4,"ngIf"],["mat-icon-button","","color","primary",1,"quickview-checkbox",3,"click","ngClass"],[1,"splitview-index",3,"click"]],template:function(o,s){if(1&o&&(m.j41(0,"mat-expansion-panel",2,0)(2,"mat-expansion-panel-header")(3,"div",3)(4,"div",4)(5,"mat-icon",5),m.EFF(6,"menu"),m.k0s(),m.j41(7,"div"),m.EFF(8," Slides "),m.DNE(9,Tf,2,1,"span",6),m.k0s()(),m.DNE(10,Ef,7,7,"div",7),m.k0s()(),m.j41(11,"div",8)(12,"div",9),m.DNE(13,Mf,1,0,"mat-progress-bar",10),m.j41(14,"div",11),m.DNE(15,Lf,1,0,"ng-container",12)(16,Ff,6,4,"ng-container",6),m.k0s()(),m.nrm(17,"mat-divider",13),m.j41(18,"div",14)(19,"div",15),m.DNE(20,Nf,3,3,"button",16),m.k0s()()()(),m.DNE(21,Gf,1,1,"ng-template",null,1,m.C5r)),2&o){const d=m.sdS(1),u=m.sdS(22);m.Y8G("ngClass",m.eq3(8,kf,!d.expanded)),m.R7$(9),m.Y8G("ngIf",s.slideDescriptors.length),m.R7$(),m.Y8G("ngIf",s.cohortsEnabled&&s.selectFeatureAvailable),m.R7$(3),m.Y8G("ngIf",s.loadingCohorts),m.R7$(2),m.Y8G("ngTemplateOutlet",u)("ngTemplateOutletContext",m.eq3(10,_f,s.slideDescriptorsInCohort)),m.R7$(),m.Y8G("ngIf",s.slideDescriptorsNotInCohort.length),m.R7$(4),m.Y8G("ngIf",s.enableSplitView)}},dependencies:[K.m_,K.An,q.MD,q.YU,q.Sq,q.bT,q.T3,q.Jj,gf,fe.x,F.uc,F.oV,Q.w,Q.q,vf,mf,I.MY,I.GK,I.Z2,V.Hl,V.$z,V.iY],styles:[".label-thumbnail .thumbnail-image{object-fit:contain}.slides-expansion-panel[_ngcontent-%COMP%]{max-width:80vw;transition:max-width 225ms cubic-bezier(.4,0,.2,1)}.slides-expansion-panel-collapsed[_ngcontent-%COMP%]{max-width:20ch}.image-viewer-side-nav-menu[_ngcontent-%COMP%]{color:#5f6368}.image-viewer-side-nav-menu[_ngcontent-%COMP%] .image-viewer-side-nav-menu-header[_ngcontent-%COMP%]{height:3em;padding:.3em .7em 0 .2em;display:grid} .image-viewer-side-nav-menu .mat-expansion-panel-body{padding:0;color:#5f6368} .image-viewer-side-nav .mat-expansion-panel-body{padding:0 .2em 1em .7em;color:#5f6368}.image-viewer-side-widgets[_ngcontent-%COMP%]{overflow:auto;overflow-y:scroll}.image-viewer-side-nav[_ngcontent-%COMP%]{height:80vh;background:#fff;display:grid;grid-template-rows:1fr min-content min-content}.image-viewer-side-nav[_ngcontent-%COMP%] mat-expansion-panel-header[_ngcontent-%COMP%]{font-size:1.3em;font-weight:700;padding:0 0 0 .5em;color:#5f6368}.slide-details-header[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr min-content;align-items:center;width:100%}.slide-details-header-title[_ngcontent-%COMP%]{display:grid;grid-template-columns:max-content max-content;align-items:center;justify-content:space-between;width:100%}.slide-details-header-title[_ngcontent-%COMP%] .title-label[_ngcontent-%COMP%]{align-items:center;display:grid;grid-column-gap:1em;grid-template-columns:min-content max-content}.thumbnails[_ngcontent-%COMP%]{display:grid;grid-auto-flow:column;grid-gap:1em;overflow-x:scroll;padding:.2em}.thumbnails-progress[_ngcontent-%COMP%]{display:grid;row-gap:.2em}.selected-slide-cohort-actions[_ngcontent-%COMP%]{display:grid;grid-template-columns:max-content max-content max-content}.thumbnail[_ngcontent-%COMP%]{border-radius:8px;display:grid;height:8em;outline:1px solid #1976d2;overflow:hidden;position:relative;width:13em}.thumbnail[_ngcontent-%COMP%]:hover{outline:3px solid #1976d2;transform:scale(1.01)}.thumbnail[_ngcontent-%COMP%] .thumbnail-image[_ngcontent-%COMP%]{width:inherit;height:inherit}.viewer-actions-header[_ngcontent-%COMP%]{column-gap:.5em;display:grid;grid-template-columns:min-content 1fr;justify-content:space-between;width:100%}.viewer-actions-header[_ngcontent-%COMP%] .viewer-actions[_ngcontent-%COMP%]{display:flex;grid-gap:.5em;justify-content:end}.viewer-actions-header[_ngcontent-%COMP%] .viewer-action-button[_ngcontent-%COMP%]:hover, .viewer-actions-header[_ngcontent-%COMP%] .viewer-action-selected[_ngcontent-%COMP%]{background:#d3e3fd}.mat-expansion-panel-spacing[_ngcontent-%COMP%]{border-radius:0;margin:0}.quickview-button[_ngcontent-%COMP%]{bottom:.5em;position:absolute;right:.2em}.quickview-button[_ngcontent-%COMP%]:hover{transform:scale(1.2)}.quickview-checkbox[_ngcontent-%COMP%]{bottom:1em;right:.2em;position:absolute;z-index:2}.quickview-dialog-content[_ngcontent-%COMP%]{height:60vh;position:relative;overflow:hidden;width:70vw}.thumbnails-section[_ngcontent-%COMP%]{display:grid;grid-column-gap:1em;grid-template-columns:1fr min-content min-content}.thumbnail-actions[_ngcontent-%COMP%]{display:grid;grid-template-columns:max-content min-content;justify-content:space-between}.thumbnail-select-actions[_ngcontent-%COMP%]{display:grid;grid-row-gap:.5em;grid-template-columns:min-content;grid-template-rows:min-content;color:#5f6368}.thumbnail-selected-action[_ngcontent-%COMP%]{background:#d3e3fd}.quickview-dialog-open-full-image-button[_ngcontent-%COMP%]{bottom:.2em;position:absolute;right:.2em;z-index:2}.selected-image[_ngcontent-%COMP%]{outline:.2em dashed #f44336}.layer-info[_ngcontent-%COMP%]{align-items:center;display:grid;grid-column-gap:.5em;grid-template-columns:1fr min-content}.layer-info-actions[_ngcontent-%COMP%]{display:flex;grid-column-gap:.5em}.de-Identified-header[_ngcontent-%COMP%]{align-items:center;display:grid;grid-template-columns:min-content max-content;grid-column-gap:.2em} .slide-data-dialog-panel{max-height:80vh}.slide-not-in-cohort[_ngcontent-%COMP%]:not(.selected-image){outline-color:#bcbcbc}.slide-divider[_ngcontent-%COMP%]{width:100%}.action-divider[_ngcontent-%COMP%]{height:100%}.splitview-index[_ngcontent-%COMP%]{align-content:center;background:#d3e3fd;border:1px solid #1976d2;cursor:pointer;color:#5f6368;display:grid;height:1.2em;justify-items:center;padding:.1em .5em;position:absolute;right:1em;top:.5em;width:max-content}.splitview-index[_ngcontent-%COMP%]:hover{transform:scale(1.2)}.not-in-cohort-warning[_ngcontent-%COMP%]{width:6em}"]})}}return t})();var zf=D(3881),al=D(6493);function Xf(t,n){if(1&t){const i=m.RV6();m.j41(0,"div"),m.nrm(1,"br"),m.j41(2,"div",4),m.EFF(3,"Outlier Tissue Detection"),m.k0s(),m.nrm(4,"br"),m.j41(5,"div",5)(6,"div",6)(7,"button",7),m.bIt("click",function(){m.eBV(i);const s=m.XpG();return m.Njj(s.detectAction())}),m.EFF(8,"Detect"),m.k0s(),m.qSk(),m.j41(9,"svg",8),m.nrm(10,"path",9),m.k0s()(),m.joV(),m.j41(11,"div"),m.EFF(12,'Pan and zoom using the viewer. To analyze the field of view, click "Detect" to identify outlier patches.'),m.k0s()(),m.j41(13,"div",10)(14,"p"),m.EFF(15," This detector identifies tissue that differs from the typical background tissue in this dataset. "),m.nrm(16,"br"),m.EFF(17," Red highlights potential outliers, while blue indicates tissue more similar to the background. "),m.k0s()(),m.j41(18,"div",10)(19,"p"),m.EFF(20," Use the slider below to adjust the color scale (based on the distance between patch and background embeddings) "),m.k0s()()()}}function Hf(t,n){if(1&t){const i=m.RV6();m.j41(0,"div"),m.nrm(1,"br"),m.j41(2,"div",4),m.EFF(3,"Detect Similar Tissue with Simple Classifier"),m.k0s(),m.nrm(4,"br"),m.j41(5,"div",10),m.EFF(6,"1. Look for the annotated arrows, pan and zoom the viewer to that area"),m.k0s(),m.nrm(7,"br"),m.j41(8,"div",5)(9,"div",6)(10,"div",11),m.bIt("click",function(){m.eBV(i);const s=m.XpG();return m.Njj(s.selectTool())}),m.qSk(),m.j41(11,"svg",12)(12,"g",13),m.nrm(13,"path",14),m.k0s(),m.j41(14,"defs")(15,"clipPath",15),m.nrm(16,"rect",16),m.k0s()()()(),m.j41(17,"svg",8),m.nrm(18,"path",9),m.k0s()(),m.joV(),m.j41(19,"div",17),m.EFF(20,"2. Use the drawing tool to outline target tissue of interest (for example, a small area of tumor cells, without other cell types)."),m.k0s()(),m.nrm(21,"br"),m.j41(22,"div",5)(23,"button",18),m.bIt("click",function(){m.eBV(i);const s=m.XpG();return m.Njj(s.setTargetPolygon())}),m.EFF(24,"Train on Selection"),m.k0s(),m.j41(25,"div",17),m.EFF(26,'3. Then click "Train on Selection"'),m.k0s()(),m.j41(27,"div",5)(28,"button",7),m.bIt("click",function(){m.eBV(i);const s=m.XpG();return m.Njj(s.detectAction())}),m.EFF(29,"Detect"),m.k0s(),m.j41(30,"div",17),m.EFF(31,"4. Once trained, pan and zoom to analyze the desired field of view"),m.k0s()(),m.nrm(32,"br"),m.j41(33,"div",10)(34,"p"),m.EFF(35," Use the slider below to adjust the color scale (based on the score of the classifier output) "),m.k0s()()()}}let Wf=(()=>{class t{constructor(i,o){this.embeddingsService=i,this.router=o,this.selectedDemo=null,this.demoType=f0.Y,this.windowMinValue=.5,this.windowMaxValue=.7,this.options={floor:0,ceil:1,step:.1,translate:(s,d)=>this.selectedDemo===f0.Y.OutlierTissueDetector?(40*s).toFixed(0):s.toFixed(1)}}ngOnInit(){this.embeddingsService.setup(),this.selectedDemo=this.embeddingsService.demoType}detectAction(){console.log("Detect action triggered"),this.changeWindowLevel(),this.embeddingsService.drawHeatMapForViewport()}endDemo(){this.router.navigate(["/demo"],{queryParams:{content:"1"}})}setTargetPolygon(){this.embeddingsService.setTargetPolygon()}drawHeatMapForViewport(){this.embeddingsService.drawHeatMapForViewport()}changeWindowLevel(){this.embeddingsService.setWindow(this.windowMinValue,this.windowMaxValue)}toggleGuidance(){this.embeddingsService.toggleGuidance()}selectTool(){this.embeddingsService.selectPolygonTool()}static{this.\u0275fac=function(o){return new(o||t)(m.rXU(f0.w),m.rXU(Sa.Ix))}}static{this.\u0275cmp=m.VBU({type:t,selectors:[["demo-dialog"]],decls:7,vars:5,consts:[[4,"ngIf"],[1,"customSlider",3,"valueChange","highValueChange","userChangeEnd","value","highValue","options"],[2,"cursor","pointer","text-decoration","underline","color","gray",3,"click"],[2,"cursor","pointer","text-decoration","underline","color","gray","font-size","small",3,"click"],[1,"medium","horizontal-center"],[1,"horizontal"],[1,"horizontal",2,"min-width","140px"],["mat-button","",3,"click"],["xmlns","http://www.w3.org/2000/svg","width","28","height","6","viewBox","0 0 28 6","fill","none",2,"margin","auto"],["d","M0 3L5 5.88675L5 0.113249L0 3ZM4.5 3.5L28 3.5L28 2.5L4.5 2.5L4.5 3.5Z","fill","black"],[2,"margin-left","140px"],[1,"action-button",2,"margin-left","40px","margin-right","0",3,"click"],["width","24","height","24","viewBox","0 0 24 24","fill","none","xmlns","http://www.w3.org/2000/svg"],["clip-path","url(#clip0_6199_9813)"],["d","M4 21V16.75L17.175 3.6C17.375 3.4 17.6 3.25 17.85 3.15C18.1 3.05 18.35 3 18.6 3C18.8667 3 19.1167 3.05 19.35 3.15C19.6 3.25 19.8167 3.4 20 3.6L21.4 5C21.6 5.18333 21.75 5.4 21.85 5.65C21.95 5.88333 22 6.13333 22 6.4C22 6.65 21.95 6.9 21.85 7.15C21.75 7.4 21.6 7.625 21.4 7.825L8.25 21H4ZM6 19H7.4L17.225 9.2L16.525 8.475L15.8 7.775L6 17.6V19ZM20 6.425L18.575 5L20 6.425ZM16.525 8.475L15.8 7.775L17.225 9.2L16.525 8.475ZM14 21C15.2333 21 16.375 20.6917 17.425 20.075C18.475 19.4583 19 18.6 19 17.5C19 16.9 18.8417 16.3833 18.525 15.95C18.2083 15.5167 17.7833 15.1417 17.25 14.825L15.775 16.3C16.1583 16.4667 16.4583 16.65 16.675 16.85C16.8917 17.05 17 17.2667 17 17.5C17 17.8833 16.6917 18.2333 16.075 18.55C15.475 18.85 14.7833 19 14 19C13.7167 19 13.475 19.1 13.275 19.3C13.0917 19.4833 13 19.7167 13 20C13 20.2833 13.0917 20.525 13.275 20.725C13.475 20.9083 13.7167 21 14 21ZM4.575 13.35L6.075 11.85C5.74167 11.7167 5.475 11.5833 5.275 11.45C5.09167 11.3 5 11.15 5 11C5 10.8 5.15 10.6 5.45 10.4C5.75 10.2 6.38333 9.89167 7.35 9.475C8.81667 8.84167 9.79167 8.26667 10.275 7.75C10.7583 7.23333 11 6.65 11 6C11 5.08333 10.6333 4.35833 9.9 3.825C9.16667 3.275 8.2 3 7 3C6.25 3 5.575 3.13333 4.975 3.4C4.39167 3.66667 3.94167 3.99167 3.625 4.375C3.44167 4.59167 3.36667 4.83333 3.4 5.1C3.43333 5.36667 3.55833 5.58333 3.775 5.75C3.99167 5.93333 4.23333 6.00833 4.5 5.975C4.76667 5.94167 4.99167 5.83333 5.175 5.65C5.40833 5.41667 5.66667 5.25 5.95 5.15C6.23333 5.05 6.58333 5 7 5C7.68333 5 8.18333 5.1 8.5 5.3C8.83333 5.5 9 5.73333 9 6C9 6.23333 8.85 6.45 8.55 6.65C8.26667 6.83333 7.6 7.16667 6.55 7.65C5.21667 8.23333 4.29167 8.76667 3.775 9.25C3.25833 9.71667 3 10.3 3 11C3 11.5333 3.14167 11.9917 3.425 12.375C3.70833 12.7417 4.09167 13.0667 4.575 13.35Z","fill","white"],["id","clip0_6199_9813"],["width","24","height","24","fill","white"],[2,"width","360px"],["mat-button","",1,"horizontal-center",2,"width","100px",3,"click"]],template:function(o,s){1&o&&(m.DNE(0,Xf,21,0,"div",0)(1,Hf,36,0,"div",0),m.j41(2,"ngx-slider",1),m.mxI("valueChange",function(u){return m.DH7(s.windowMinValue,u)||(s.windowMinValue=u),u})("highValueChange",function(u){return m.DH7(s.windowMaxValue,u)||(s.windowMaxValue=u),u}),m.bIt("userChangeEnd",function(){return s.changeWindowLevel()}),m.k0s(),m.j41(3,"div",2),m.bIt("click",function(){return s.endDemo()}),m.EFF(4,"Go back to Path Foundation Demos"),m.k0s(),m.j41(5,"span",3),m.bIt("click",function(){return s.toggleGuidance()}),m.EFF(6,"show/hide guidance"),m.k0s()),2&o&&(m.Y8G("ngIf",s.selectedDemo==s.demoType.OutlierTissueDetector),m.R7$(),m.Y8G("ngIf",s.selectedDemo==s.demoType.SimilarTissueWithLinearProbe),m.R7$(),m.R50("value",s.windowMinValue)("highValue",s.windowMaxValue),m.Y8G("options",s.options))},dependencies:[zf.Ez,Te.YN,q.MD,q.bT,I.MY,al.Ti,al.d1],styles:["[_nghost-%COMP%]{font-family:Google Sans;position:fixed;top:40px;right:20px;background:#e8eaf6;border:1px solid #C5CAE9;box-shadow:0 2px 4px #0003;border-radius:5px;padding:10px;display:flex;flex-direction:column;gap:5px;animation:dialogSlideIn .7s ease-out forwards;z-index:1000;width:500px;align-items:center}.horizontal[_ngcontent-%COMP%]{display:flex}.horizontal-center[_ngcontent-%COMP%]{margin-left:auto;margin-right:auto;width:fit-content}.detectButton[_ngcontent-%COMP%]{margin:0 30px 0 10px}.customSlider[_ngcontent-%COMP%]{margin-left:140px;margin-right:20px;width:340px}.medium[_ngcontent-%COMP%]{color:#000;font-size:24px;font-style:normal;font-weight:400;line-height:normal}.action-button[_ngcontent-%COMP%]{border-radius:20px;background-color:#0b57d0;color:#fff;padding:8px 16px;border:none;margin:auto;cursor:pointer}.action-button[_ngcontent-%COMP%]:active{transform:scale(.95)}button[_ngcontent-%COMP%]{border-radius:20px;background-color:#0b57d0;color:#fff;padding:8px 16px;border:none;margin:auto}.flat-button[_ngcontent-%COMP%]{background-color:gray} .ngx-slider .ngx-slider-pointer{width:8px!important;height:16px!important;top:auto!important;bottom:0!important;border-top-left-radius:3px!important;border-top-right-radius:3px!important} .ngx-slider .ngx-slider-pointer-min{background-color:#00f!important} .ngx-slider .ngx-slider-pointer-max{background-color:red!important} .ngx-slider-selection{background:linear-gradient(to right,#00f,#0ff,#ff0,red)!important} .ngx-slider .ngx-slider-pointer:after{display:none!important}"]})}}return t})();const Yf=(t,n)=>({"multi-screen-viewer-2":t,"multi-screen-viewer-4":n}),jf=t=>({"locked-button":t}),sl=t=>({"selected-split-viewer":t}),$f=()=>[];function Kf(t,n){if(1&t&&m.nrm(0,"image-viewer-quick-view",15),2&t){const i=m.XpG(2);m.Y8G("slideDescriptor",i.splitViewSlideDescriptors[0])("enableExpandedView",!1)}}function Jf(t,n){if(1&t&&m.nrm(0,"image-viewer-quick-view",15),2&t){const i=m.XpG(2);m.Y8G("slideDescriptor",i.splitViewSlideDescriptors[0])("enableExpandedView",!1)}}function Zf(t,n){if(1&t){const i=m.RV6();m.j41(0,"div",6)(1,"div"),m.EFF(2," Select a layout. "),m.k0s(),m.j41(3,"div",7)(4,"div",8)(5,"div",9)(6,"div",10),m.DNE(7,Kf,1,2,"image-viewer-quick-view",11),m.k0s(),m.nrm(8,"div",10),m.k0s(),m.j41(9,"div"),m.EFF(10,"View two slides side by side"),m.k0s(),m.j41(11,"button",12),m.bIt("click",function(){m.eBV(i);const s=m.XpG();return m.Njj(s.toggleMultiView(2))}),m.EFF(12,"2-Up"),m.k0s()(),m.nrm(13,"mat-divider",13),m.j41(14,"div",8)(15,"div",14)(16,"div",10),m.DNE(17,Jf,1,2,"image-viewer-quick-view",11),m.k0s(),m.nrm(18,"div",10)(19,"div",10)(20,"div",10),m.k0s(),m.j41(21,"div"),m.EFF(22,"View up to four slides side by side"),m.k0s(),m.j41(23,"button",12),m.bIt("click",function(){m.eBV(i);const s=m.XpG();return m.Njj(s.toggleMultiView(4))}),m.EFF(24,"4-Up"),m.k0s()()()()}if(2&t){const i=m.XpG();m.R7$(7),m.Y8G("ngIf",i.splitViewSlideDescriptors[0]),m.R7$(10),m.Y8G("ngIf",i.splitViewSlideDescriptors[0])}}function e1(t,n){if(1&t&&(m.j41(0,"div"),m.EFF(1),m.k0s()),2&t){const i=n.index;m.R7$(),m.JRh(i+1)}}function t1(t,n){if(1&t){const i=m.RV6();m.qex(0),m.j41(1,"div",19),m.DNE(2,e1,2,1,"div",20),m.nI1(3,"slice"),m.k0s(),m.j41(4,"button",21),m.bIt("click",function(s){m.eBV(i);const d=m.XpG(2);return s.stopPropagation(),m.Njj(d.toggleSyncLock())}),m.j41(5,"mat-icon",22),m.EFF(6),m.k0s()(),m.bVm()}if(2&t){const i=m.XpG(2);m.R7$(2),m.Y8G("ngForOf",m.brH(3,3,i.splitViewSlideDescriptors,0,4)),m.R7$(2),m.Y8G("ngClass",m.eq3(7,jf,i.syncLock)),m.R7$(2),m.SpI(" ",i.syncLock?"lock":"lock_open_right"," ")}}function r1(t,n){if(1&t){const i=m.RV6();m.j41(0,"div",24),m.bIt("click",function(){m.eBV(i);const s=m.XpG().index,d=m.XpG(2);return m.Njj(d.selectMultiViewScreenSelected(s))}),m.EFF(1," Select from the Slides Panel "),m.k0s()}if(2&t){const i=m.XpG().index,o=m.XpG(2);m.Y8G("ngClass",m.eq3(1,sl,o.multiViewScreenSelectedIndex===i))}}function n1(t,n){if(1&t){const i=m.RV6();m.j41(0,"ol-tile-viewer",26),m.bIt("click",function(){m.eBV(i);const s=m.XpG(2).index,d=m.XpG(2);return m.Njj(d.selectMultiViewScreenSelected(s))})("olMapLoaded",function(s){m.eBV(i);const d=m.XpG(2).$implicit,u=m.XpG(2);return m.Njj(u.olMapLoaded(s,d))}),m.k0s()}if(2&t){const i=n.$implicit,o=m.XpG(2),s=o.$implicit,d=o.index,u=m.XpG(2);m.Y8G("slideDescriptor",s)("slideInfo",i)("ngClass",m.eq3(3,sl,u.multiViewScreenSelectedIndex===d))}}function i1(t,n){if(1&t&&(m.qex(0),m.DNE(1,n1,1,5,"ol-tile-viewer",25),m.nI1(2,"GetSlideInfoPipe"),m.bVm()),2&t){const i=m.XpG().$implicit,o=m.XpG(2);m.R7$(),m.Y8G("ngIf",m.i5U(2,1,o.slideInfoBySlideDescriptorId,i))}}function o1(t,n){if(1&t&&(m.qex(0),m.DNE(1,r1,2,3,"div",23)(2,i1,3,4,"ng-container",17),m.bVm()),2&t){const i=n.$implicit;m.R7$(),m.Y8G("ngIf",!i),m.R7$(),m.Y8G("ngIf",i)}}function a1(t,n){1&t&&(m.qex(0),m.j41(1,"div",27)(2,"button",28),m.EFF(3,"Select a slide"),m.k0s()(),m.bVm())}function s1(t,n){if(1&t&&(m.qex(0),m.DNE(1,a1,4,0,"ng-container",20),m.nI1(2,"slice"),m.bVm()),2&t){const i=m.XpG(2);m.R7$(),m.Y8G("ngForOf",m.brH(2,1,m.lJ4(5,$f).constructor(i.multiViewScreens),i.splitViewSlideDescriptors.length,i.multiViewScreens))}}function c1(t,n){if(1&t&&(m.j41(0,"div",16),m.DNE(1,t1,7,9,"ng-container",17)(2,o1,3,2,"ng-container",18)(3,s1,3,6,"ng-container",17),m.k0s()),2&t){const i=m.XpG();m.Y8G("ngClass",m.l_i(5,Yf,i.splitViewSlideDescriptors.length>1||2===i.multiViewScreens,i.splitViewSlideDescriptors.length>2||4===i.multiViewScreens)),m.R7$(),m.Y8G("ngIf",i.splitViewSlideDescriptors.length>1),m.R7$(),m.Y8G("ngForOf",i.splitViewSlideDescriptors)("ngForTrackBy",i.trackBySlideDescriptor),m.R7$(),m.Y8G("ngIf",i.splitViewSlideDescriptors.length-1{class t{constructor(i,o,s){this.activatedRoute=i,this.router=o,this.imageViewerPageStore=s,this.seriesId="",this.selectedOlMap=void 0,this.slideDescriptors=[],this.splitViewSlideDescriptors=[],this.splitViewFirstOlMap=void 0,this.slideInfoBySlideDescriptorId=new Map,this.isMenuOpen=!1,this.syncLock=!1,this.syncLockListeners=[],this.activatedRouteParams={},this.isMultiViewScreenPicker=!1,this.mapAnimationSyncLock=!1,this.multiViewScreenSelectedIndex=0,this.destroy$=new oe.m,this.multiViewScreens=1,this.activatedRoute.queryParams.pipe((0,ae.F)(),(0,re.M)(d=>{this.activatedRouteParams=d})).subscribe()}ngOnDestroy(){this.destroy$.next(""),this.destroy$.complete()}ngOnInit(){this.imageViewerPageStore.multiViewScreens$.pipe((0,he.Q)(this.destroy$),(0,re.M)(i=>{this.multiViewScreens=i})).subscribe(),this.imageViewerPageStore.isMultiViewSlidePicker$.pipe((0,he.Q)(this.destroy$),(0,re.M)(i=>{this.isMultiViewScreenPicker=i})).subscribe(),this.imageViewerPageStore.syncLock$.pipe((0,he.Q)(this.destroy$),(0,re.M)(i=>{this.syncLock=i})).subscribe(),this.imageViewerPageStore.splitViewSlideDescriptors$.pipe((0,he.Q)(this.destroy$),(0,re.M)(i=>{this.splitViewSlideDescriptors=i})).subscribe(),this.imageViewerPageStore.slideInfoBySlideDescriptorId$.pipe((0,he.Q)(this.destroy$),(0,re.M)(i=>{this.slideInfoBySlideDescriptorId=new Map(i)})).subscribe(),this.imageViewerPageStore.multiViewScreenSelectedIndex$.pipe((0,he.Q)(this.destroy$),(0,re.M)(i=>{this.multiViewScreenSelectedIndex=i})).subscribe(),(0,H.z)([this.imageViewerPageStore.selectedSplitViewSlideDescriptor$,this.imageViewerPageStore.olMapBySlideDescriptorId$]).subscribe(([i,o])=>{!i||!o||!o.has(i.id)||(this.selectedOlMap=o.get(i.id))})}olMapLoaded(i,o){if(!i)return;const s=this.imageViewerPageStore.olMapBySlideDescriptorId$.value,d=this.imageViewerPageStore.olMapOriginalViewBySlideDescriptorId$.value;s.set(o.id,i),d.set(o.id,i.getView()),this.imageViewerPageStore.olMapBySlideDescriptorId$.next(s),this.imageViewerPageStore.olMapOriginalViewBySlideDescriptorId$.next(d),this.splitViewFirstOlMap=i}setupViewDiffInOlMaps(i,o){const s=i.getView().getCenter()??[0,0],d=o.getView().getCenter()??[0,0],u=i.getView().getZoom()??0,p=o.getView().getZoom()??0,h=i.getView().getRotation(),v=o.getView().getRotation();return{dx:d[0]-s[0],dy:d[1]-s[1],dz:p-u,dr:v-h}}selectSlideDescriptor(i){this.imageViewerPageStore.selectedSplitViewSlideDescriptor$.value?.id!==i.id&&this.imageViewerPageStore.selectedSplitViewSlideDescriptor$.next(i)}trackBySlideDescriptor(i,o){return`${i}-${o?.id}`}toggleSyncLock(){const i=!this.syncLock;this.imageViewerPageStore.syncLock$.next(i),this.mapAnimationSyncLock=i,this.mapAnimationSyncLock&&this.handleSyncLock(),this.mapAnimationSyncLock||(this.syncLockListeners.forEach(o=>{(0,te.e)(o)}),this.syncLockListeners=[])}handleSyncLock(){const i=this.imageViewerPageStore.splitViewSlideDescriptors$.value.filter(u=>!!u?.id),o=this.imageViewerPageStore.olMapBySlideDescriptorId$.value,s=i.map(u=>o.get(u.id)).filter(u=>void 0!==u),d=s.map(u=>{const p=s.filter(v=>v!==u).map(v=>({mapToAnimate:v,mapDiff:this.computeDiffBetweenTwoMaps(u,v)}));return u.getView().on(["change:center","change:resolution","change:rotation"],()=>{this.mapAnimationSyncLock&&(this.mapAnimationSyncLock=!1,p.forEach(({mapToAnimate:v,mapDiff:f})=>{const y=this.computeMapAnimationParmas(u,f);v.getView().animate(y,()=>{this.mapAnimationSyncLock=!0})}))})}).flat();this.syncLockListeners.push(...d)}computeMapAnimationParmas(i,o){const s=i.getView(),d=s.getCenter()??[0,0],u=s.getZoom()??0,p=s.getRotation()??0;return{center:[d[0]+o.dx,d[1]+o.dy],zoom:u+o.dz,rotation:p+o.dr,duration:0}}computeDiffBetweenTwoMaps(i,o){const s=i.getView().getCenter()??[0,0],d=o.getView().getCenter()??[0,0],u=d[0]-s[0],p=d[1]-s[1],h=i.getView().getZoom()??0,f=(o.getView().getZoom()??0)-h,y=i.getView().getRotation()??0;return{dx:u,dy:p,dz:f,dr:(o.getView().getRotation()??0)-y}}toggleMultiView(i){let o=this.splitViewSlideDescriptors[0];o||(o=this.splitViewSlideDescriptors.filter(d=>!!d?.id)[0]);const s={series:o?.id+",".repeat(i-1),cohortName:this.activatedRouteParams.cohortName};this.router.navigate(["/viewer"],{queryParams:s,replaceUrl:!0}),this.imageViewerPageStore.isMultiViewSlidePicker$.next(!1)}selectMultiViewScreenSelected(i){this.multiViewScreenSelectedIndex=i,this.imageViewerPageStore.multiViewScreenSelectedIndex$.next(i);const o=this.splitViewSlideDescriptors[i];o?.id&&this.selectSlideDescriptor(o)}static{this.\u0275fac=function(o){return new(o||t)(m.rXU(Sa.nX),m.rXU(Sa.Ix),m.rXU(Vc.y))}}static{this.\u0275cmp=m.VBU({type:t,selectors:[["image-viewer-page"]],decls:7,vars:2,consts:[[1,"image-viewer-page"],[1,"side-nav-menu"],[1,"slides-menu"],[1,"tile-viewer-wrapper"],["class","multi-view-option-picker",4,"ngIf"],[3,"ngClass",4,"ngIf"],[1,"multi-view-option-picker"],[1,"multi-view-options"],[1,"option"],[1,"option-image-sections","multi-view-2"],[1,"option-image"],[3,"slideDescriptor","enableExpandedView",4,"ngIf"],["mat-flat-button","","color","primary",3,"click"],["vertical",""],[1,"option-image-sections","multi-view-4"],[3,"slideDescriptor","enableExpandedView"],[3,"ngClass"],[4,"ngIf"],[4,"ngFor","ngForOf","ngForTrackBy"],[1,"multi-view-info"],[4,"ngFor","ngForOf"],["mat-icon-button","","color","primary",1,"lock-button",3,"click","ngClass"],[1,"google-symbols"],["class","empty-multi-view-option",3,"ngClass","click",4,"ngIf"],[1,"empty-multi-view-option",3,"click","ngClass"],[3,"slideDescriptor","slideInfo","ngClass","click","olMapLoaded",4,"ngIf"],[3,"click","olMapLoaded","slideDescriptor","slideInfo","ngClass"],[1,"select-slide-viewer"],["mat-flat-button","","color","primary"]],template:function(o,s){1&o&&(m.j41(0,"div",0),m.nrm(1,"image-viewer-side-nav",1)(2,"image-viewer-slides",2),m.j41(3,"div",3),m.DNE(4,Zf,25,2,"div",4)(5,c1,4,8,"div",5),m.nrm(6,"demo-dialog"),m.k0s()()),2&o&&(m.R7$(4),m.Y8G("ngIf",s.isMultiViewScreenPicker),m.R7$(),m.Y8G("ngIf",!s.isMultiViewScreenPicker&&s.splitViewSlideDescriptors.length&&(null==s.splitViewSlideDescriptors[0]?null:s.splitViewSlideDescriptors[0].id)))},dependencies:[q.MD,q.YU,q.Sq,q.bT,q.P9,h0.Bh,we,K.m_,K.An,cf,fe.x,Wf,Q.w,Q.q,Qf],styles:[".image-viewer-page[_ngcontent-%COMP%]{display:grid;height:100%;overflow:auto;position:relative}.side-nav-menu[_ngcontent-%COMP%]{position:absolute;top:1em;left:1em;z-index:3}.slides-menu[_ngcontent-%COMP%]{position:absolute;bottom:1em;left:1em;z-index:3}.tile-viewer-wrapper[_ngcontent-%COMP%]{display:grid}.multi-screen-viewer-2[_ngcontent-%COMP%]{display:grid;grid-template-columns:50% 50%;grid-gap:.1em;background:#d3e3fd;padding:.2em}.multi-screen-viewer-4[_ngcontent-%COMP%]{display:grid;grid-template-columns:50% 50%;grid-template-rows:50% 50%;grid-gap:.1em;background:#d3e3fd;padding:.2em}.selected-split-viewer[_ngcontent-%COMP%]{outline:.2em dashed #f44336;z-index:2}.tile-viewer-wrapper[_ngcontent-%COMP%] .multi-view-info[_ngcontent-%COMP%]{display:grid;grid-template-columns:min-content min-content;grid-row-gap:.5em;width:4em;justify-content:space-between;padding:.6em;background:#93b5ec80;border-radius:13px;color:#454746;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:3}.tile-viewer-wrapper[_ngcontent-%COMP%] .lock-button[_ngcontent-%COMP%]{background:#93b5ec;border-radius:13px;color:#454746;left:50%;padding:.3em;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:3}.tile-viewer-wrapper[_ngcontent-%COMP%] .locked-button[_ngcontent-%COMP%]{background:#afafaf}.multi-view-option-picker[_ngcontent-%COMP%]{display:grid;justify-content:center;grid-template-rows:min-content min-content;margin-top:10%;grid-row-gap:1em;justify-items:center}.multi-view-option-picker[_ngcontent-%COMP%] .multi-view-options[_ngcontent-%COMP%]{display:grid;grid-template-columns:min-content min-content min-content;grid-column-gap:1em}.multi-view-option-picker[_ngcontent-%COMP%] .multi-view-options[_ngcontent-%COMP%] .option[_ngcontent-%COMP%]{gap:.4em;display:grid;justify-items:center}.multi-view-option-picker[_ngcontent-%COMP%] .multi-view-options[_ngcontent-%COMP%] .option-image-sections[_ngcontent-%COMP%]{display:grid;height:25vh;width:25vw;grid-gap:.1em;border:2px solid #d9d9d9}.multi-view-option-picker[_ngcontent-%COMP%] .multi-view-options[_ngcontent-%COMP%] .option-image-sections[_ngcontent-%COMP%] .option-image[_ngcontent-%COMP%]{background:#d9d9d9}.multi-view-option-picker[_ngcontent-%COMP%] .multi-view-options[_ngcontent-%COMP%] .multi-view-2[_ngcontent-%COMP%]{grid-template-columns:50% 50%;grid-template-rows:100%}.multi-view-option-picker[_ngcontent-%COMP%] .multi-view-options[_ngcontent-%COMP%] .multi-view-4[_ngcontent-%COMP%]{grid-template-columns:50% 50%;grid-template-rows:50%}.select-slide-viewer[_ngcontent-%COMP%]{background:#fafafa}.empty-multi-view-option[_ngcontent-%COMP%]{display:grid;align-items:center;justify-content:center;background:#fafafa}"]})}}return t})()},5666:(pe,le,D)=>{"use strict";var Q=D(8468);function K(te){var oe=[1/0,1/0,-1/0,-1/0];return Q.coordEach(te,function(H){oe[0]>H[0]&&(oe[0]=H[0]),oe[1]>H[1]&&(oe[1]=H[1]),oe[2]{"use strict";function D(Y,J,L){void 0===L&&(L={});var Ie={type:"Feature"};return(0===L.id||L.id)&&(Ie.id=L.id),L.bbox&&(Ie.bbox=L.bbox),Ie.properties=J||{},Ie.geometry=Y,Ie}function Q(Y,J,L){if(void 0===L&&(L={}),!Y)throw new Error("coordinates is required");if(!Array.isArray(Y))throw new Error("coordinates must be an Array");if(Y.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!O(Y[0])||!O(Y[1]))throw new Error("coordinates must contain numbers");return D({type:"Point",coordinates:Y},J,L)}function te(Y,J,L){void 0===L&&(L={});for(var Ie=0,Pe=Y;Ie=0))throw new Error("precision must be a positive number");var L=Math.pow(10,J||0);return Math.round(Y*L)/L},le.radiansToLength=Te,le.lengthToRadians=A,le.lengthToDegrees=function V(Y,J){return M(A(Y,J))},le.bearingToAzimuth=function R(Y){var J=Y%360;return J<0&&(J+=360),J},le.radiansToDegrees=M,le.degreesToRadians=function I(Y){return Y%360*Math.PI/180},le.convertLength=function X(Y,J,L){if(void 0===J&&(J="kilometers"),void 0===L&&(L="kilometers"),!(Y>=0))throw new Error("length must be a positive number");return Te(A(Y,J),L)},le.convertArea=function T(Y,J,L){if(void 0===J&&(J="meters"),void 0===L&&(L="kilometers"),!(Y>=0))throw new Error("area must be a positive number");var Ie=le.areaFactors[J];if(!Ie)throw new Error("invalid original units");var Pe=le.areaFactors[L];if(!Pe)throw new Error("invalid final units");return Y/Ie*Pe},le.isNumber=O,le.isObject=function F(Y){return!!Y&&Y.constructor===Object},le.validateBBox=function k(Y){if(!Y)throw new Error("bbox is required");if(!Array.isArray(Y))throw new Error("bbox must be an Array");if(4!==Y.length&&6!==Y.length)throw new Error("bbox must be an Array of 4 or 6 numbers");Y.forEach(function(J){if(!O(J))throw new Error("bbox must only contain numbers")})},le.validateId=function ce(Y){if(!Y)throw new Error("id is required");if(-1===["string","number"].indexOf(typeof Y))throw new Error("id must be a number or a string")}},8468:(pe,le,D)=>{"use strict";Object.defineProperty(le,"__esModule",{value:!0});var q=D(6440);function Q(I,X,T){if(null!==I)for(var O,F,k,ce,Y,J,L,Fe,Ie=0,Pe=0,lt=I.type,ze="FeatureCollection"===lt,Ae="Feature"===lt,Oe=ze?I.features.length:1,se=0;seJ||ze>L||Ae>Ie)return Y=Pe,J=O,L=ze,Ie=Ae,void(k=0);var Oe=q.lineString([Y,Pe],T.properties);if(!1===X(Oe,O,F,Ae,k))return!1;k++,Y=Pe}))return!1}}})}function A(I,X){if(!I)throw new Error("geojson is required");we(I,function(T,O,F){if(null!==T.geometry){var ce=T.geometry.coordinates;switch(T.geometry.type){case"LineString":if(!1===X(T,O,F,0,0))return!1;break;case"Polygon":for(var Y=0;Y{"use strict";var q=D(5992),Q=D(9477),K=D(9705),te=D(2910);pe.exports=te||q.call(K,Q)},8910:(pe,le,D)=>{"use strict";var q=D(5992),Q=D(9477),K=D(5731);pe.exports=function(){return K(q,Q,arguments)}},9477:pe=>{"use strict";pe.exports=Function.prototype.apply},9705:pe=>{"use strict";pe.exports=Function.prototype.call},1885:(pe,le,D)=>{"use strict";var q=D(5992),Q=D(6758),K=D(9705),te=D(5731);pe.exports=function(H){if(H.length<1||"function"!=typeof H[0])throw new Q("a function is required");return te(q,K,H)}},2910:pe=>{"use strict";pe.exports=typeof Reflect<"u"&&Reflect&&Reflect.apply},8128:(pe,le,D)=>{"use strict";var q=D(1358),Q=D(4570),K=D(1885),te=D(8910);pe.exports=function(H){var ae=K(arguments),re=H.length-(arguments.length-1);return q(ae,1+(re>0?re:0),!0)},Q?Q(pe.exports,"apply",{value:te}):pe.exports.apply=te},2773:(pe,le,D)=>{"use strict";var q=D(258),Q=D(1885),K=Q([q("%String.prototype.indexOf%")]);pe.exports=function(oe,H){var ae=q(oe,!!H);return"function"==typeof ae&&K(oe,".prototype.")>-1?Q([ae]):ae}},2103:(pe,le,D)=>{"use strict";var q=D(9051),Q=D(7473),K=D(8681),te=D(2858).orient2d;function oe(T,O,F){O=Math.max(0,void 0===O?2:O),F=F||0;var k=function Te(T){for(var O=T[0],F=T[0],k=T[0],ce=T[0],Y=0;Yk[0]&&(k=J),J[1]ce[1]&&(ce=J)}var L=[O,F,k,ce],Ie=L.slice();for(Y=0;Y=2&&we(O[O.length-2],O[O.length-1],T[F])<=0;)O.pop();O.push(T[F])}for(var k=[],ce=T.length-1;ce>=0;ce--){for(;k.length>=2&&we(k[k.length-2],k[k.length-1],T[ce])<=0;)k.pop();k.push(T[ce])}return k.pop(),O.pop(),O.concat(k)}(Ie)}(T),ce=new q(16);ce.toBBox=function(st){return{minX:st[0],minY:st[1],maxX:st[0],maxY:st[1]}},ce.compareMinX=function(st,Ee){return st[0]-Ee[0]},ce.compareMinY=function(st,Ee){return st[1]-Ee[1]},ce.load(T);for(var L,Y=[],J=0;JY||L.push({node:Fe,dist:lt})}for(;L.length&&!L.peek().node.children;){var ze=L.pop(),Ae=ze.node,Oe=R(Ae,O,F),se=R(Ae,k,ce);if(ze.dist=O.minX&&T[0]<=O.maxX&&T[1]>=O.minY&&T[1]<=O.maxY}function m(T,O,F){for(var k=Math.min(T[0],O[0]),ce=Math.min(T[1],O[1]),Y=Math.max(T[0],O[0]),J=Math.max(T[1],O[1]),L=F.search({minX:k,minY:ce,maxX:Y,maxY:J}),Ie=0;Ie0!=we(T,O,k)>0&&we(F,k,T)>0!=we(F,k,O)>0}function ge(T){var O=T.p,F=T.next.p;return T.minX=Math.min(O[0],F[0]),T.minY=Math.min(O[1],F[1]),T.maxX=Math.max(O[0],F[0]),T.maxY=Math.max(O[1],F[1]),T}function A(T,O){var F={p:T,prev:null,next:null,minX:0,minY:0,maxX:0,maxY:0};return O?(F.next=O.next,F.prev=O,O.next.prev=F,O.next=F):(F.prev=F,F.next=F),F}function V(T,O){var F=T[0]-O[0],k=T[1]-O[1];return F*F+k*k}function R(T,O,F){var k=O[0],ce=O[1],Y=F[0]-k,J=F[1]-ce;if(0!==Y||0!==J){var L=((T[0]-k)*Y+(T[1]-ce)*J)/(Y*Y+J*J);L>1?(k=F[0],ce=F[1]):L>0&&(k+=Y*L,ce+=J*L)}return(Y=T[0]-k)*Y+(J=T[1]-ce)*J}function M(T,O,F,k,ce,Y,J,L){var _t,ir,ur,it,Ie=F-T,Pe=k-O,Fe=J-ce,lt=L-Y,ze=T-ce,Ae=O-Y,Oe=Ie*Ie+Pe*Pe,se=Ie*Fe+Pe*lt,ft=Fe*Fe+lt*lt,He=Ie*ze+Pe*Ae,st=Fe*ze+lt*Ae,Ee=Oe*ft-se*se,St=Ee,Me=Ee;0===Ee?(ir=0,St=1,it=st,Me=ft):(it=Oe*st-se*He,(ir=se*st-ft*He)<0?(ir=0,it=st,Me=ft):ir>St&&(ir=St,it=st+se,Me=ft)),it<0?(it=0,-He<0?ir=0:-He>Oe?ir=St:(ir=-He,St=Oe)):it>Me&&(it=Me,-He+se<0?ir=0:-He+se>Oe?ir=St:(ir=-He+se,St=Oe));var Rt=(1-(ur=0===it?0:it/Me))*ce+ur*J-((1-(_t=0===ir?0:ir/St))*T+_t*F),or=(1-ur)*Y+ur*L-((1-_t)*O+_t*k);return Rt*Rt+or*or}function I(T,O){return T[0]===O[0]?T[1]-O[1]:T[0]-O[0]}Q.default&&(Q=Q.default),pe.exports=oe,pe.exports.default=oe},9051:function(pe){pe.exports=function(){"use strict";function le(A,V,R,M,I){!function X(T,O,F,k,ce){for(;k>F;){if(k-F>600){var Y=k-F+1,J=O-F+1,L=Math.log(Y),Ie=.5*Math.exp(2*L/3),Pe=.5*Math.sqrt(L*Ie*(Y-Ie)/Y)*(J-Y/2<0?-1:1);X(T,O,Math.max(F,Math.floor(O-J*Ie/Y+Pe)),Math.min(k,Math.floor(O+(Y-J)*Ie/Y+Pe)),ce)}var ze=T[O],Ae=F,Oe=k;for(D(T,F,O),ce(T[k],ze)>0&&D(T,F,k);Ae0;)Oe--}0===ce(T[F],ze)?D(T,F,Oe):D(T,++Oe,k),Oe<=O&&(F=Oe+1),O<=Oe&&(k=Oe-1)}}(A,V,R||0,M||A.length-1,I||q)}function D(A,V,R){var M=A[V];A[V]=A[R],A[R]=M}function q(A,V){return AV?1:0}var Q=function(A){void 0===A&&(A=9),this._maxEntries=Math.max(4,A),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function K(A,V,R){if(!R)return V.indexOf(A);for(var M=0;M=A.minX&&V.maxY>=A.minY}function ge(A){return{children:A,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function Te(A,V,R,M,I){for(var X=[V,R];X.length;)if(!((R=X.pop())-(V=X.pop())<=M)){var T=V+Math.ceil((R-V)/M/2)*M;le(A,T,V,R,I),X.push(V,T,T,R)}}return Q.prototype.all=function(){return this._all(this.data,[])},Q.prototype.search=function(A){var V=this.data,R=[];if(!fe(A,V))return R;for(var M=this.toBBox,I=[];V;){for(var X=0;X=0&&I[V].children.length>this._maxEntries;)this._split(I,V),V--;this._adjustParentBBoxes(M,I,V)},Q.prototype._split=function(A,V){var R=A[V],M=R.children.length,I=this._minEntries;this._chooseSplitAxis(R,I,M);var X=this._chooseSplitIndex(R,I,M),T=ge(R.children.splice(X,R.children.length-X));T.height=R.height,T.leaf=R.leaf,te(R,this.toBBox),te(T,this.toBBox),V?A[V-1].children.push(T):this._splitRoot(R,T)},Q.prototype._splitRoot=function(A,V){this.data=ge([A,V]),this.data.height=A.height+1,this.data.leaf=!1,te(this.data,this.toBBox)},Q.prototype._chooseSplitIndex=function(A,V,R){for(var M,I,X,T,O,F,k,ce=1/0,Y=1/0,J=V;J<=R-V;J++){var L=oe(A,0,J,this.toBBox),Ie=oe(A,J,R,this.toBBox),Pe=(I=L,X=Ie,void 0,void 0,void 0,void 0,T=Math.max(I.minX,X.minX),O=Math.max(I.minY,X.minY),F=Math.min(I.maxX,X.maxX),k=Math.min(I.maxY,X.maxY),Math.max(0,F-T)*Math.max(0,k-O)),Fe=he(L)+he(Ie);Pe=V;ce--){var Y=A.children[ce];H(T,A.leaf?I(Y):Y),O+=m(T)}return O},Q.prototype._adjustParentBBoxes=function(A,V,R){for(var M=R;M>=0;M--)H(V[M],A)},Q.prototype._condense=function(A){for(var V=A.length-1,R=void 0;V>=0;V--)0===A[V].children.length?V>0?(R=A[V-1].children).splice(R.indexOf(A[V]),1):this.clear():te(A[V],this.toBBox)},Q}()},2943:(pe,le,D)=>{var q=D(4934),Q=D(573),K=D(7710),te=D(3290),oe=D(5864),H=D(4665),ae=Date.prototype.getTime;function he(fe){return null==fe}function m(fe){return!(!fe||"object"!=typeof fe||"number"!=typeof fe.length||"function"!=typeof fe.copy||"function"!=typeof fe.slice||fe.length>0&&"number"!=typeof fe[0])}pe.exports=function re(fe,ge,Te){var A=Te||{};return!!(A.strict?K(fe,ge):fe===ge)||(!fe||!ge||"object"!=typeof fe&&"object"!=typeof ge?A.strict?K(fe,ge):fe==ge:function we(fe,ge,Te){var A,V;if(typeof fe!=typeof ge||he(fe)||he(ge)||fe.prototype!==ge.prototype||Q(fe)!==Q(ge))return!1;var R=te(fe),M=te(ge);if(R!==M)return!1;if(R||M)return fe.source===ge.source&&oe(fe)===oe(ge);if(H(fe)&&H(ge))return ae.call(fe)===ae.call(ge);var I=m(fe),X=m(ge);if(I!==X)return!1;if(I||X){if(fe.length!==ge.length)return!1;for(A=0;A=0;A--)if(T[A]!=O[A])return!1;for(A=T.length-1;A>=0;A--)if(!re(fe[V=T[A]],ge[V],Te))return!1;return!0}(fe,ge,A))}},2736:(pe,le,D)=>{"use strict";var q=D(4570),Q=D(8413),K=D(6758),te=D(3798);pe.exports=function(H,ae,re){if(!H||"object"!=typeof H&&"function"!=typeof H)throw new K("`obj` must be an object or a function`");if("string"!=typeof ae&&"symbol"!=typeof ae)throw new K("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new K("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new K("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new K("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new K("`loose`, if provided, must be a boolean");var he=arguments.length>3?arguments[3]:null,m=arguments.length>4?arguments[4]:null,we=arguments.length>5?arguments[5]:null,fe=arguments.length>6&&arguments[6],ge=!!te&&te(H,ae);if(q)q(H,ae,{configurable:null===we&&ge?ge.configurable:!we,enumerable:null===he&&ge?ge.enumerable:!he,value:re,writable:null===m&&ge?ge.writable:!m});else{if(!fe&&(he||m||we))throw new Q("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");H[ae]=re}}},947:(pe,le,D)=>{"use strict";var q=D(4934),Q="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),K=Object.prototype.toString,te=Array.prototype.concat,oe=D(2736),ae=D(5861)(),re=function(m,we,fe,ge){if(we in m)if(!0===ge){if(m[we]===fe)return}else if(!function(m){return"function"==typeof m&&"[object Function]"===K.call(m)}(ge)||!ge())return;ae?oe(m,we,fe,!0):oe(m,we,fe)},he=function(m,we){var fe=arguments.length>2?arguments[2]:{},ge=q(we);Q&&(ge=te.call(ge,Object.getOwnPropertySymbols(we)));for(var Te=0;Te{function le(D,q,Q,K){this.dataset=[],this.epsilon=1,this.minPts=2,this.distance=this._euclideanDistance,this.clusters=[],this.noise=[],this._visited=[],this._assigned=[],this._datasetLength=0,this._init(D,q,Q,K)}le.prototype.run=function(D,q,Q,K){this._init(D,q,Q,K);for(var te=0;te=this.minPts&&(q=this._mergeArrays(q,te))}1!==this._assigned[K]&&this._addToCluster(K,D)}},le.prototype._addToCluster=function(D,q){this.clusters[q].push(D),this._assigned[D]=1},le.prototype._regionQuery=function(D){for(var q=[],Q=0;Q{function le(D,q,Q){this.k=3,this.dataset=[],this.assignments=[],this.centroids=[],this.init(D,q,Q)}le.prototype.init=function(D,q,Q){this.assignments=[],this.centroids=[],typeof D<"u"&&(this.dataset=D),typeof q<"u"&&(this.k=q),typeof Q<"u"&&(this.distance=Q)},le.prototype.run=function(D,q){this.init(D,q);for(var Q=this.dataset.length,K=0;K0){for(re=0;re=0);return q},le.prototype.assign=function(){for(var Q,D=!1,q=this.dataset.length,K=0;K"u"&&(D[q]=[]),D[q].push(Q);return D},le.prototype.argmin=function(D,q,Q){for(var H,K=Number.MAX_VALUE,te=0,oe=q.length,ae=0;ae{if(pe.exports)var q=D(8290);function Q(K,te,oe,H){this.epsilon=1,this.minPts=1,this.distance=this._euclideanDistance,this._reachability=[],this._processed=[],this._coreDistance=0,this._orderedList=[],this._init(K,te,oe,H)}Q.prototype.run=function(K,te,oe,H){this._init(K,te,oe,H);for(var ae=0,re=this.dataset.length;ae=this.minPts)return oe},Q.prototype._regionQuery=function(K,te){te=te||this.epsilon;for(var oe=[],H=0,ae=this.dataset.length;H{function le(D,q,Q){this._queue=[],this._priorities=[],this._sorting="desc",this._init(D,q,Q)}le.prototype.insert=function(D,q){for(var Q=this._queue.length,K=Q;K--;){var te=this._priorities[K];"desc"===this._sorting?q>te&&(Q=K):q{pe.exports&&(pe.exports={DBSCAN:D(4213),KMEANS:D(4692),OPTICS:D(5859),PriorityQueue:D(8290)})},3361:(pe,le,D)=>{"use strict";var K,q=D(1885),Q=D(3798);try{K=[].__proto__===Array.prototype}catch(ae){if(!ae||"object"!=typeof ae||!("code"in ae)||"ERR_PROTO_ACCESS"!==ae.code)throw ae}var te=!!K&&Q&&Q(Object.prototype,"__proto__"),oe=Object,H=oe.getPrototypeOf;pe.exports=te&&"function"==typeof te.get?q([te.get]):"function"==typeof H&&function(re){return H(null==re?re:oe(re))}},4570:pe=>{"use strict";var le=Object.defineProperty||!1;if(le)try{le({},"a",{value:1})}catch{le=!1}pe.exports=le},1756:pe=>{"use strict";pe.exports=EvalError},7640:pe=>{"use strict";pe.exports=Error},7933:pe=>{"use strict";pe.exports=RangeError},6613:pe=>{"use strict";pe.exports=ReferenceError},8413:pe=>{"use strict";pe.exports=SyntaxError},6758:pe=>{"use strict";pe.exports=TypeError},5286:pe=>{"use strict";pe.exports=URIError},5891:pe=>{"use strict";pe.exports=Object},9132:pe=>{"use strict";var D=Object.prototype.toString,q=Math.max,K=function(ae,re){for(var he=[],m=0;m{"use strict";var q=D(9132);pe.exports=Function.prototype.bind||q},4003:pe=>{"use strict";var le=function(){return"string"==typeof function(){}.name},D=Object.getOwnPropertyDescriptor;if(D)try{D([],"length")}catch{D=null}le.functionsHaveConfigurableNames=function(){if(!le()||!D)return!1;var K=D(function(){},"name");return!!K&&!!K.configurable};var q=Function.prototype.bind;le.boundFunctionsHaveNames=function(){return le()&&"function"==typeof q&&""!==function(){}.bind().name},pe.exports=le},9906:(pe,le,D)=>{var q=D(2943),Q=function(H){this.precision=H&&H.precision?H.precision:17,this.direction=!(!H||!H.direction)&&H.direction,this.pseudoNode=!(!H||!H.pseudoNode)&&H.pseudoNode,this.objectComparator=H&&H.objectComparator?H.objectComparator:oe};function K(H){return H.coordinates.map(function(ae){return{type:H.type.replace("Multi",""),coordinates:ae}})}function te(H,ae){return H.hasOwnProperty("coordinates")?H.coordinates.length===ae.coordinates.length:H.length===ae.length}function oe(H,ae){return q(H,ae,{strict:!0})}Q.prototype.compare=function(H,ae){if(H.type!==ae.type||!te(H,ae))return!1;switch(H.type){case"Point":return this.compareCoord(H.coordinates,ae.coordinates);case"LineString":return this.compareLine(H.coordinates,ae.coordinates,0,!1);case"Polygon":return this.comparePolygon(H,ae);case"Feature":return this.compareFeature(H,ae);default:if(0===H.type.indexOf("Multi")){var re=this,he=K(H),m=K(ae);return he.every(function(we){return this.some(function(fe){return re.compare(we,fe)})},m)}}return!1},Q.prototype.compareCoord=function(H,ae){if(H.length!==ae.length)return!1;for(var re=0;re=0&&(re=[].concat(H.slice(he,H.length),H.slice(1,he+1))),re},Q.prototype.comparePath=function(H,ae){var re=this;return H.every(function(he,m){return re.compareCoord(he,this[m])},ae)},Q.prototype.comparePolygon=function(H,ae){if(this.compareLine(H.coordinates[0],ae.coordinates[0],1,!0)){var re=H.coordinates.slice(1,H.coordinates.length),he=ae.coordinates.slice(1,ae.coordinates.length),m=this;return re.every(function(we){return this.some(function(fe){return m.compareLine(we,fe,1,!0)})},he)}return!1},Q.prototype.compareFeature=function(H,ae){return!(H.id!==ae.id||!this.objectComparator(H.properties,ae.properties)||!this.compareBBox(H,ae))&&this.compare(H.geometry,ae.geometry)},Q.prototype.compareBBox=function(H,ae){return!!(!H.bbox&&!ae.bbox||H.bbox&&ae.bbox&&this.compareCoord(H.bbox,ae.bbox))},Q.prototype.removePseudo=function(H){return H},pe.exports=Q},2374:(pe,le,D)=>{var q=D(4008),Q=D(6440),K=D(8468),te=D(5666).A,oe=K.featureEach,re=Q.featureCollection;function he(m){var we=new q(m);return we.insert=function(fe){if("Feature"!==fe.type)throw new Error("invalid feature");return fe.bbox=fe.bbox?fe.bbox:te(fe),q.prototype.insert.call(this,fe)},we.load=function(fe){var ge=[];return Array.isArray(fe)?fe.forEach(function(Te){if("Feature"!==Te.type)throw new Error("invalid features");Te.bbox=Te.bbox?Te.bbox:te(Te),ge.push(Te)}):oe(fe,function(Te){if("Feature"!==Te.type)throw new Error("invalid features");Te.bbox=Te.bbox?Te.bbox:te(Te),ge.push(Te)}),q.prototype.load.call(this,ge)},we.remove=function(fe,ge){if("Feature"!==fe.type)throw new Error("invalid feature");return fe.bbox=fe.bbox?fe.bbox:te(fe),q.prototype.remove.call(this,fe,ge)},we.clear=function(){return q.prototype.clear.call(this)},we.search=function(fe){var ge=q.prototype.search.call(this,this.toBBox(fe));return re(ge)},we.collides=function(fe){return q.prototype.collides.call(this,this.toBBox(fe))},we.all=function(){var fe=q.prototype.all.call(this);return re(fe)},we.toJSON=function(){return q.prototype.toJSON.call(this)},we.fromJSON=function(fe){return q.prototype.fromJSON.call(this,fe)},we.toBBox=function(fe){var ge;if(fe.bbox)ge=fe.bbox;else if(Array.isArray(fe)&&4===fe.length)ge=fe;else if(Array.isArray(fe)&&6===fe.length)ge=[fe[0],fe[1],fe[3],fe[4]];else if("Feature"===fe.type)ge=te(fe);else{if("FeatureCollection"!==fe.type)throw new Error("invalid geojson");ge=te(fe)}return{minX:ge[0],minY:ge[1],maxX:ge[2],maxY:ge[3]}},we}pe.exports=he,pe.exports.default=he},4008:function(pe){pe.exports=function(){"use strict";function le(A,V,R,M,I){!function X(T,O,F,k,ce){for(;k>F;){if(k-F>600){var Y=k-F+1,J=O-F+1,L=Math.log(Y),Ie=.5*Math.exp(2*L/3),Pe=.5*Math.sqrt(L*Ie*(Y-Ie)/Y)*(J-Y/2<0?-1:1);X(T,O,Math.max(F,Math.floor(O-J*Ie/Y+Pe)),Math.min(k,Math.floor(O+(Y-J)*Ie/Y+Pe)),ce)}var ze=T[O],Ae=F,Oe=k;for(D(T,F,O),ce(T[k],ze)>0&&D(T,F,k);Ae0;)Oe--}0===ce(T[F],ze)?D(T,F,Oe):D(T,++Oe,k),Oe<=O&&(F=Oe+1),O<=Oe&&(k=Oe-1)}}(A,V,R||0,M||A.length-1,I||q)}function D(A,V,R){var M=A[V];A[V]=A[R],A[R]=M}function q(A,V){return AV?1:0}var Q=function(A){void 0===A&&(A=9),this._maxEntries=Math.max(4,A),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function K(A,V,R){if(!R)return V.indexOf(A);for(var M=0;M=A.minX&&V.maxY>=A.minY}function ge(A){return{children:A,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function Te(A,V,R,M,I){for(var X=[V,R];X.length;)if(!((R=X.pop())-(V=X.pop())<=M)){var T=V+Math.ceil((R-V)/M/2)*M;le(A,T,V,R,I),X.push(V,T,T,R)}}return Q.prototype.all=function(){return this._all(this.data,[])},Q.prototype.search=function(A){var V=this.data,R=[];if(!fe(A,V))return R;for(var M=this.toBBox,I=[];V;){for(var X=0;X=0&&I[V].children.length>this._maxEntries;)this._split(I,V),V--;this._adjustParentBBoxes(M,I,V)},Q.prototype._split=function(A,V){var R=A[V],M=R.children.length,I=this._minEntries;this._chooseSplitAxis(R,I,M);var X=this._chooseSplitIndex(R,I,M),T=ge(R.children.splice(X,R.children.length-X));T.height=R.height,T.leaf=R.leaf,te(R,this.toBBox),te(T,this.toBBox),V?A[V-1].children.push(T):this._splitRoot(R,T)},Q.prototype._splitRoot=function(A,V){this.data=ge([A,V]),this.data.height=A.height+1,this.data.leaf=!1,te(this.data,this.toBBox)},Q.prototype._chooseSplitIndex=function(A,V,R){for(var M,I,X,T,O,F,k,ce=1/0,Y=1/0,J=V;J<=R-V;J++){var L=oe(A,0,J,this.toBBox),Ie=oe(A,J,R,this.toBBox),Pe=(I=L,X=Ie,void 0,void 0,void 0,void 0,T=Math.max(I.minX,X.minX),O=Math.max(I.minY,X.minY),F=Math.min(I.maxX,X.maxX),k=Math.min(I.maxY,X.maxY),Math.max(0,F-T)*Math.max(0,k-O)),Fe=he(L)+he(Ie);Pe=V;ce--){var Y=A.children[ce];H(T,A.leaf?I(Y):Y),O+=m(T)}return O},Q.prototype._adjustParentBBoxes=function(A,V,R){for(var M=R;M>=0;M--)H(V[M],A)},Q.prototype._condense=function(A){for(var V=A.length-1,R=void 0;V>=0;V--)0===A[V].children.length?V>0?(R=A[V-1].children).splice(R.indexOf(A[V]),1):this.clear():te(A[V],this.toBBox)},Q}()},258:(pe,le,D)=>{"use strict";var q,Q=D(5891),K=D(7640),te=D(1756),oe=D(7933),H=D(6613),ae=D(8413),re=D(6758),he=D(5286),m=D(837),we=D(3383),fe=D(9039),ge=D(4981),Te=D(975),A=D(5337),V=D(4912),R=Function,M=function(Me){try{return R('"use strict"; return ('+Me+").constructor;")()}catch{}},I=D(3798),X=D(4570),T=function(){throw new re},O=I?function(){try{return T}catch{try{return I(arguments,"callee").get}catch{return T}}}():T,F=D(9900)(),k=D(1627),ce=D(7203),Y=D(7669),J=D(9477),L=D(9705),Ie={},Pe=typeof Uint8Array>"u"||!k?q:k(Uint8Array),Fe={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?q:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?q:ArrayBuffer,"%ArrayIteratorPrototype%":F&&k?k([][Symbol.iterator]()):q,"%AsyncFromSyncIteratorPrototype%":q,"%AsyncFunction%":Ie,"%AsyncGenerator%":Ie,"%AsyncGeneratorFunction%":Ie,"%AsyncIteratorPrototype%":Ie,"%Atomics%":typeof Atomics>"u"?q:Atomics,"%BigInt%":typeof BigInt>"u"?q:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?q:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?q:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?q:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":K,"%eval%":eval,"%EvalError%":te,"%Float32Array%":typeof Float32Array>"u"?q:Float32Array,"%Float64Array%":typeof Float64Array>"u"?q:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?q:FinalizationRegistry,"%Function%":R,"%GeneratorFunction%":Ie,"%Int8Array%":typeof Int8Array>"u"?q:Int8Array,"%Int16Array%":typeof Int16Array>"u"?q:Int16Array,"%Int32Array%":typeof Int32Array>"u"?q:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":F&&k?k(k([][Symbol.iterator]())):q,"%JSON%":"object"==typeof JSON?JSON:q,"%Map%":typeof Map>"u"?q:Map,"%MapIteratorPrototype%":typeof Map>"u"||!F||!k?q:k((new Map)[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Q,"%Object.getOwnPropertyDescriptor%":I,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?q:Promise,"%Proxy%":typeof Proxy>"u"?q:Proxy,"%RangeError%":oe,"%ReferenceError%":H,"%Reflect%":typeof Reflect>"u"?q:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?q:Set,"%SetIteratorPrototype%":typeof Set>"u"||!F||!k?q:k((new Set)[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?q:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":F&&k?k(""[Symbol.iterator]()):q,"%Symbol%":F?Symbol:q,"%SyntaxError%":ae,"%ThrowTypeError%":O,"%TypedArray%":Pe,"%TypeError%":re,"%Uint8Array%":typeof Uint8Array>"u"?q:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?q:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?q:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?q:Uint32Array,"%URIError%":he,"%WeakMap%":typeof WeakMap>"u"?q:WeakMap,"%WeakRef%":typeof WeakRef>"u"?q:WeakRef,"%WeakSet%":typeof WeakSet>"u"?q:WeakSet,"%Function.prototype.call%":L,"%Function.prototype.apply%":J,"%Object.defineProperty%":X,"%Object.getPrototypeOf%":ce,"%Math.abs%":m,"%Math.floor%":we,"%Math.max%":fe,"%Math.min%":ge,"%Math.pow%":Te,"%Math.round%":A,"%Math.sign%":V,"%Reflect.getPrototypeOf%":Y};if(k)try{null.error}catch(Me){var lt=k(k(Me));Fe["%Error.prototype%"]=lt}var ze=function Me(Ze){var gt;if("%AsyncFunction%"===Ze)gt=M("async function () {}");else if("%GeneratorFunction%"===Ze)gt=M("function* () {}");else if("%AsyncGeneratorFunction%"===Ze)gt=M("async function* () {}");else if("%AsyncGenerator%"===Ze){var dt=Me("%AsyncGeneratorFunction%");dt&&(gt=dt.prototype)}else if("%AsyncIteratorPrototype%"===Ze){var yt=Me("%AsyncGenerator%");yt&&k&&(gt=k(yt.prototype))}return Fe[Ze]=gt,gt},Ae={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Oe=D(5992),se=D(8368),ft=Oe.call(L,Array.prototype.concat),He=Oe.call(J,Array.prototype.splice),st=Oe.call(L,String.prototype.replace),Ee=Oe.call(L,String.prototype.slice),_t=Oe.call(L,RegExp.prototype.exec),ir=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,ur=/\\(\\)?/g,St=function(Ze,gt){var yt,dt=Ze;if(se(Ae,dt)&&(dt="%"+(yt=Ae[dt])[0]+"%"),se(Fe,dt)){var Rt=Fe[dt];if(Rt===Ie&&(Rt=ze(dt)),typeof Rt>"u"&&!gt)throw new re("intrinsic "+Ze+" exists, but is not available. Please file an issue!");return{alias:yt,name:dt,value:Rt}}throw new ae("intrinsic "+Ze+" does not exist!")};pe.exports=function(Ze,gt){if("string"!=typeof Ze||0===Ze.length)throw new re("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof gt)throw new re('"allowMissing" argument must be a boolean');if(null===_t(/^%?[^%]*%?$/,Ze))throw new ae("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var dt=function(Ze){var gt=Ee(Ze,0,1),dt=Ee(Ze,-1);if("%"===gt&&"%"!==dt)throw new ae("invalid intrinsic syntax, expected closing `%`");if("%"===dt&&"%"!==gt)throw new ae("invalid intrinsic syntax, expected opening `%`");var yt=[];return st(Ze,ir,function(Rt,or,It,pn){yt[yt.length]=It?st(pn,ur,"$1"):or||Rt}),yt}(Ze),yt=dt.length>0?dt[0]:"",Rt=St("%"+yt+"%",gt),or=Rt.name,It=Rt.value,pn=!1,rt=Rt.alias;rt&&(yt=rt[0],He(dt,ft([0,1],rt)));for(var At=1,hn=!0;At=dt.length){var Ne=I(It,Or);It=(hn=!!Ne)&&"get"in Ne&&!("originalValue"in Ne.get)?Ne.get:It[Or]}else hn=se(It,Or),It=It[Or];hn&&!pn&&(Fe[or]=It)}}return It}},7203:(pe,le,D)=>{"use strict";var q=D(5891);pe.exports=q.getPrototypeOf||null},7669:pe=>{"use strict";pe.exports=typeof Reflect<"u"&&Reflect.getPrototypeOf||null},1627:(pe,le,D)=>{"use strict";var q=D(7669),Q=D(7203),K=D(3361);pe.exports=q?function(oe){return q(oe)}:Q?function(oe){if(!oe||"object"!=typeof oe&&"function"!=typeof oe)throw new TypeError("getProto: not an object");return Q(oe)}:K?function(oe){return K(oe)}:null},2786:pe=>{"use strict";pe.exports=Object.getOwnPropertyDescriptor},3798:(pe,le,D)=>{"use strict";var q=D(2786);if(q)try{q([],"length")}catch{q=null}pe.exports=q},5861:(pe,le,D)=>{"use strict";var q=D(4570),Q=function(){return!!q};Q.hasArrayLengthDefineBug=function(){if(!q)return null;try{return 1!==q([],"length",{value:1}).length}catch{return!0}},pe.exports=Q},9900:(pe,le,D)=>{"use strict";var q=typeof Symbol<"u"&&Symbol,Q=D(5310);pe.exports=function(){return"function"==typeof q&&"function"==typeof Symbol&&"symbol"==typeof q("foo")&&"symbol"==typeof Symbol("bar")&&Q()}},5310:pe=>{"use strict";pe.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var D={},q=Symbol("test"),Q=Object(q);if("string"==typeof q||"[object Symbol]"!==Object.prototype.toString.call(q)||"[object Symbol]"!==Object.prototype.toString.call(Q))return!1;for(var te in D[q]=42,D)return!1;if("function"==typeof Object.keys&&0!==Object.keys(D).length||"function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(D).length)return!1;var oe=Object.getOwnPropertySymbols(D);if(1!==oe.length||oe[0]!==q||!Object.prototype.propertyIsEnumerable.call(D,q))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var H=Object.getOwnPropertyDescriptor(D,q);if(42!==H.value||!0!==H.enumerable)return!1}return!0}},8779:(pe,le,D)=>{"use strict";var q=D(5310);pe.exports=function(){return q()&&!!Symbol.toStringTag}},8368:(pe,le,D)=>{"use strict";var q=Function.prototype.call,Q=Object.prototype.hasOwnProperty,K=D(5992);pe.exports=K.call(q,Q)},573:(pe,le,D)=>{"use strict";var q=D(8779)(),K=D(2773)("Object.prototype.toString"),te=function(re){return!(q&&re&&"object"==typeof re&&Symbol.toStringTag in re)&&"[object Arguments]"===K(re)},oe=function(re){return!!te(re)||null!==re&&"object"==typeof re&&"length"in re&&"number"==typeof re.length&&re.length>=0&&"[object Array]"!==K(re)&&"callee"in re&&"[object Function]"===K(re.callee)},H=function(){return te(arguments)}();te.isLegacyArguments=oe,pe.exports=H?te:oe},4665:(pe,le,D)=>{"use strict";var q=D(2773),Q=q("Date.prototype.getDay"),te=q("Object.prototype.toString"),H=D(8779)();pe.exports=function(re){return"object"==typeof re&&null!==re&&(H?function(re){try{return Q(re),!0}catch{return!1}}(re):"[object Date]"===te(re))}},3290:(pe,le,D)=>{"use strict";var oe,q=D(2773),Q=D(8779)(),K=D(8368),te=D(3798);if(Q){var H=q("RegExp.prototype.exec"),ae={},re=function(){throw ae},he={toString:re,valueOf:re};"symbol"==typeof Symbol.toPrimitive&&(he[Symbol.toPrimitive]=re),oe=function(ge){if(!ge||"object"!=typeof ge)return!1;var Te=te(ge,"lastIndex");if(!Te||!K(Te,"value"))return!1;try{H(ge,he)}catch(V){return V===ae}}}else{var m=q("Object.prototype.toString");oe=function(ge){return!(!ge||"object"!=typeof ge&&"function"!=typeof ge)&&"[object RegExp]"===m(ge)}}pe.exports=oe},837:pe=>{"use strict";pe.exports=Math.abs},3383:pe=>{"use strict";pe.exports=Math.floor},5488:pe=>{"use strict";pe.exports=Number.isNaN||function(D){return D!=D}},9039:pe=>{"use strict";pe.exports=Math.max},4981:pe=>{"use strict";pe.exports=Math.min},975:pe=>{"use strict";pe.exports=Math.pow},5337:pe=>{"use strict";pe.exports=Math.round},4912:(pe,le,D)=>{"use strict";var q=D(5488);pe.exports=function(K){return q(K)||0===K?K:K<0?-1:1}},5931:pe=>{"use strict";var le=Object.getOwnPropertySymbols,D=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable;pe.exports=function K(){try{if(!Object.assign)return!1;var te=new String("abc");if(te[5]="de","5"===Object.getOwnPropertyNames(te)[0])return!1;for(var oe={},H=0;H<10;H++)oe["_"+String.fromCharCode(H)]=H;if("0123456789"!==Object.getOwnPropertyNames(oe).map(function(he){return oe[he]}).join(""))return!1;var re={};return"abcdefghijklmnopqrst".split("").forEach(function(he){re[he]=he}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},re)).join("")}catch{return!1}}()?Object.assign:function(te,oe){for(var H,re,ae=function Q(te){if(null==te)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(te)}(te),he=1;he{"use strict";var le=function(D){return D!=D};pe.exports=function(q,Q){return 0===q&&0===Q?1/q==1/Q:!!(q===Q||le(q)&&le(Q))}},7710:(pe,le,D)=>{"use strict";var q=D(947),Q=D(8128),K=D(6358),te=D(6503),oe=D(953),H=Q(te(),Object);q(H,{getPolyfill:te,implementation:K,shim:oe}),pe.exports=H},6503:(pe,le,D)=>{"use strict";var q=D(6358);pe.exports=function(){return"function"==typeof Object.is?Object.is:q}},953:(pe,le,D)=>{"use strict";var q=D(6503),Q=D(947);pe.exports=function(){var te=q();return Q(Object,{is:te},{is:function(){return Object.is!==te}}),te}},366:(pe,le,D)=>{"use strict";var q;if(!Object.keys){var Q=Object.prototype.hasOwnProperty,K=Object.prototype.toString,te=D(1050),oe=Object.prototype.propertyIsEnumerable,H=!oe.call({toString:null},"toString"),ae=oe.call(function(){},"prototype"),re=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],he=function(ge){var Te=ge.constructor;return Te&&Te.prototype===ge},m={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},we=function(){if(typeof window>"u")return!1;for(var ge in window)try{if(!m["$"+ge]&&Q.call(window,ge)&&null!==window[ge]&&"object"==typeof window[ge])try{he(window[ge])}catch{return!0}}catch{return!0}return!1}();q=function(Te){var A=null!==Te&&"object"==typeof Te,V="[object Function]"===K.call(Te),R=te(Te),M=A&&"[object String]"===K.call(Te),I=[];if(!A&&!V&&!R)throw new TypeError("Object.keys called on a non-object");var X=ae&&V;if(M&&Te.length>0&&!Q.call(Te,0))for(var T=0;T0)for(var O=0;O"u"||!we)return he(ge);try{return he(ge)}catch{return!1}}(Te),ce=0;ce{"use strict";var q=Array.prototype.slice,Q=D(1050),K=Object.keys,te=K?function(ae){return K(ae)}:D(366),oe=Object.keys;te.shim=function(){if(Object.keys){var ae=function(){var re=Object.keys(arguments);return re&&re.length===arguments.length}(1,2);ae||(Object.keys=function(he){return Q(he)?oe(q.call(he)):oe(he)})}else Object.keys=te;return Object.keys||te},pe.exports=te},1050:pe=>{"use strict";var le=Object.prototype.toString;pe.exports=function(q){var Q=le.call(q),K="[object Arguments]"===Q;return K||(K="[object Array]"!==Q&&null!==q&&"object"==typeof q&&"number"==typeof q.length&&q.length>=0&&"[object Function]"===le.call(q.callee)),K}},6326:pe=>{pe.exports=function(D,q,Q,K){var te=D[0],oe=D[1],H=!1;void 0===Q&&(Q=0),void 0===K&&(K=q.length);for(var ae=(K-Q)/2,re=0,he=ae-1;reoe!=ge>oe&&te<(q[Q+2*he+0]-m)*(oe-we)/(ge-we)+m&&(H=!H)}return H}},8681:(pe,le,D)=>{var q=D(6326),Q=D(6734);pe.exports=function(te,oe,H,ae){return oe.length>0&&Array.isArray(oe[0])?Q(te,oe,H,ae):q(te,oe,H,ae)},pe.exports.nested=Q,pe.exports.flat=q},6734:pe=>{pe.exports=function(D,q,Q,K){var te=D[0],oe=D[1],H=!1;void 0===Q&&(Q=0),void 0===K&&(K=q.length);for(var ae=K-Q,re=0,he=ae-1;reoe!=ge>oe&&te<(q[he+Q][0]-m)*(oe-we)/(ge-we)+m&&(H=!H)}return H}},5985:function(pe){pe.exports=function(){"use strict";function le(me,C){var G,$,j,_e,P={label:0,sent:function(){if(1&j[0])throw j[1];return j[1]},trys:[],ops:[]};return _e={next:Se(0),throw:Se(1),return:Se(2)},"function"==typeof Symbol&&(_e[Symbol.iterator]=function(){return this}),_e;function Se(be){return function(Ge){return function De(be){if(G)throw new TypeError("Generator is already executing.");for(;P;)try{if(G=1,$&&(j=2&be[0]?$.return:be[0]?$.throw||((j=$.return)&&j.call($),0):$.next)&&!(j=j.call($,be[1])).done)return j;switch($=0,j&&(be=[2&be[0],j.value]),be[0]){case 0:case 1:j=be;break;case 4:return P.label++,{value:be[1],done:!1};case 5:P.label++,$=be[1],be=[0];continue;case 7:be=P.ops.pop(),P.trys.pop();continue;default:if(!(j=(j=P.trys).length>0&&j[j.length-1])&&(6===be[0]||2===be[0])){P=0;continue}if(3===be[0]&&(!j||be[1]>j[0]&&be[1]C?1:me0))break;if(null===C.right)break;var Se;if(P(me,C.right.key)>0&&(C.right=(Se=C.right).left,Se.left=C,null===(C=Se).right))break;$.right=C,$=C,C=C.right}}return $.right=C.left,j.left=C.right,C.left=G.right,C.right=G.left,C}function K(me,C,P,G){var $=new D(me,C);if(null===P)return $.left=$.right=null,$;var j=G(me,(P=Q(me,P,G)).key);return j<0?($.left=P.left,$.right=P,P.left=null):j>=0&&($.right=P.right,$.left=P,P.right=null),$}function te(me,C,P){var G=null,$=null;if(C){var j=P((C=Q(me,C,P)).key,me);0===j?(G=C.left,$=C.right):j<0?($=C.right,C.right=null,G=C):(G=C.left,C.left=null,$=C)}return{left:G,right:$}}function H(me,C,P,G,$){if(me){G(C+(P?"\u2514\u2500\u2500 ":"\u251c\u2500\u2500 ")+$(me)+"\n");var j=C+(P?" ":"\u2502 ");me.left&&H(me.left,j,!1,G,$),me.right&&H(me.right,j,!0,G,$)}}var ae=function(){function me(C){void 0===C&&(C=q),this._root=null,this._size=0,this._comparator=C}return me.prototype.insert=function(C,P){return this._size++,this._root=K(C,P,this._root,this._comparator)},me.prototype.add=function(C,P){var G=new D(C,P);null===this._root&&(G.left=G.right=null,this._size++,this._root=G);var $=this._comparator,j=Q(C,this._root,$),_e=$(C,j.key);return 0===_e?this._root=j:(_e<0?(G.left=j.left,G.right=j,j.left=null):_e>0&&(G.right=j.right,G.left=j,j.right=null),this._size++,this._root=G),this._root},me.prototype.remove=function(C){this._root=this._remove(C,this._root,this._comparator)},me.prototype._remove=function(C,P,G){var $;return null===P?null:0===G(C,(P=Q(C,P,G)).key)?(null===P.left?$=P.right:($=Q(C,P.left,G)).right=P.right,this._size--,$):P},me.prototype.pop=function(){var C=this._root;if(C){for(;C.left;)C=C.left;return this._root=Q(C.key,this._root,this._comparator),this._root=this._remove(C.key,this._root,this._comparator),{key:C.key,data:C.data}}return null},me.prototype.findStatic=function(C){for(var P=this._root,G=this._comparator;P;){var $=G(C,P.key);if(0===$)return P;P=$<0?P.left:P.right}return null},me.prototype.find=function(C){return this._root&&(this._root=Q(C,this._root,this._comparator),0!==this._comparator(C,this._root.key))?null:this._root},me.prototype.contains=function(C){for(var P=this._root,G=this._comparator;P;){var $=G(C,P.key);if(0===$)return!0;P=$<0?P.left:P.right}return!1},me.prototype.forEach=function(C,P){for(var G=this._root,$=[],j=!1;!j;)null!==G?($.push(G),G=G.left):0!==$.length?(G=$.pop(),C.call(P,G),G=G.right):j=!0;return this},me.prototype.range=function(C,P,G,$){for(var j=[],_e=this._comparator,Se=this._root;0!==j.length||Se;)if(Se)j.push(Se),Se=Se.left;else{if(_e((Se=j.pop()).key,P)>0)break;if(_e(Se.key,C)>=0&&G.call($,Se))return this;Se=Se.right}return this},me.prototype.keys=function(){var C=[];return this.forEach(function(P){return C.push(P.key)}),C},me.prototype.values=function(){var C=[];return this.forEach(function(P){return C.push(P.data)}),C},me.prototype.min=function(){return this._root?this.minNode(this._root).key:null},me.prototype.max=function(){return this._root?this.maxNode(this._root).key:null},me.prototype.minNode=function(C){if(void 0===C&&(C=this._root),C)for(;C.left;)C=C.left;return C},me.prototype.maxNode=function(C){if(void 0===C&&(C=this._root),C)for(;C.right;)C=C.right;return C},me.prototype.at=function(C){for(var P=this._root,G=!1,$=0,j=[];!G;)if(P)j.push(P),P=P.left;else if(j.length>0){if(P=j.pop(),$===C)return P;$++,P=P.right}else G=!0;return null},me.prototype.next=function(C){var P=this._root,G=null;if(C.right){for(G=C.right;G.left;)G=G.left;return G}for(var $=this._comparator;P;){var j=$(C.key,P.key);if(0===j)break;j<0?(G=P,P=P.left):P=P.right}return G},me.prototype.prev=function(C){var P=this._root,G=null;if(null!==C.left){for(G=C.left;G.right;)G=G.right;return G}for(var $=this._comparator;P;){var j=$(C.key,P.key);if(0===j)break;j<0?P=P.left:(G=P,P=P.right)}return G},me.prototype.clear=function(){return this._root=null,this._size=0,this},me.prototype.toList=function(){return function m(me){for(var C=me,P=[],G=!1,$=new D(null,null),j=$;!G;)C?(P.push(C),C=C.left):P.length>0?C=(C=j=j.next=P.pop()).right:G=!0;return j.next=null,$.next}(this._root)},me.prototype.load=function(C,P,G){void 0===P&&(P=[]),void 0===G&&(G=!1);var $=C.length,j=this._comparator;if(G&&ge(C,P,0,$-1,j),null===this._root)this._root=re(C,P,0,$),this._size=$;else{var _e=function fe(me,C,P){for(var G=new D(null,null),$=G,j=me,_e=C;null!==j&&null!==_e;)P(j.key,_e.key)<0?($.next=j,j=j.next):($.next=_e,_e=_e.next),$=$.next;return null!==j?$.next=j:null!==_e&&($.next=_e),G.next}(this.toList(),function he(me,C){for(var P=new D(null,null),G=P,$=0;$0){var j=P+Math.floor($/2),De=new D(me[j],C[j]);return De.left=re(me,C,P,j),De.right=re(me,C,j+1,G),De}return null}function we(me,C,P){var G=P-C;if(G>0){var $=C+Math.floor(G/2),j=we(me,C,$),_e=me.head;return _e.left=j,me.head=me.head.next,_e.right=we(me,$+1,P),_e}return null}function ge(me,C,P,G,$){if(!(P>=G)){for(var j=me[P+G>>1],_e=P-1,Se=G+1;;){do{_e++}while($(me[_e],j)<0);do{Se--}while($(me[Se],j)>0);if(_e>=Se)break;var De=me[_e];me[_e]=me[Se],me[Se]=De,De=C[_e],C[_e]=C[Se],C[Se]=De}ge(me,C,P,Se,$),ge(me,C,Se+1,G,$)}}const Te=(me,C)=>me.ll.x<=C.x&&C.x<=me.ur.x&&me.ll.y<=C.y&&C.y<=me.ur.y,A=(me,C)=>C.ur.x{if(-Vbe==Ge>-be?(j=be,be=C[++ee]):(j=Ge,Ge=G[++Re]);let Be=0;if(eebe==Ge>-be?(_e=be+j,Se=j-(_e-be),be=C[++ee]):(_e=Ge+j,Se=j-(_e-Ge),Ge=G[++Re]),j=_e,0!==Se&&($[Be++]=Se);eebe==Ge>-be?(_e=j+be,De=_e-j,Se=j-(_e-De)+(be-De),be=C[++ee]):(_e=j+Ge,De=_e-j,Se=j-(_e-De)+(Ge-De),Ge=G[++Re]),j=_e,0!==Se&&($[Be++]=Se);for(;ee=L*be?De:-function se(me,C,P,G,$,j,_e){let Se,De,be,Ge,ee,Re,Be,Ve,ot,Dt,xt,Ot,fn,qr,In,Pr,gn,Qr;const _r=me-$,pt=P-$,br=C-j,Rr=G-j;qr=_r*Rr,Re=F*_r,Be=Re-(Re-_r),Ve=_r-Be,Re=F*Rr,ot=Re-(Re-Rr),Dt=Rr-ot,In=Ve*Dt-(qr-Be*ot-Ve*ot-Be*Dt),Pr=br*pt,Re=F*br,Be=Re-(Re-br),Ve=br-Be,Re=F*pt,ot=Re-(Re-pt),Dt=pt-ot,gn=Ve*Dt-(Pr-Be*ot-Ve*ot-Be*Dt),xt=In-gn,ee=In-xt,Fe[0]=In-(xt+ee)+(ee-gn),Ot=qr+xt,ee=Ot-qr,fn=qr-(Ot-ee)+(xt-ee),xt=fn-Pr,ee=fn-xt,Fe[1]=fn-(xt+ee)+(ee-Pr),Qr=Ot+xt,ee=Qr-Ot,Fe[2]=Ot-(Qr-ee)+(xt-ee),Fe[3]=Qr;let zr=function Y(me,C){let P=C[0];for(let G=1;G=Fr||-zr>=Fr||(ee=me-_r,Se=me-(_r+ee)+(ee-$),ee=P-pt,be=P-(pt+ee)+(ee-$),ee=C-br,De=C-(br+ee)+(ee-j),ee=G-Rr,Ge=G-(Rr+ee)+(ee-j),0===Se&&0===De&&0===be&&0===Ge)||(Fr=Pe*_e+k*Math.abs(zr),zr+=_r*Ge+Rr*Se-(br*be+pt*De),zr>=Fr||-zr>=Fr))return zr;qr=Se*Rr,Re=F*Se,Be=Re-(Re-Se),Ve=Se-Be,Re=F*Rr,ot=Re-(Re-Rr),Dt=Rr-ot,In=Ve*Dt-(qr-Be*ot-Ve*ot-Be*Dt),Pr=De*pt,Re=F*De,Be=Re-(Re-De),Ve=De-Be,Re=F*pt,ot=Re-(Re-pt),Dt=pt-ot,gn=Ve*Dt-(Pr-Be*ot-Ve*ot-Be*Dt),xt=In-gn,ee=In-xt,Oe[0]=In-(xt+ee)+(ee-gn),Ot=qr+xt,ee=Ot-qr,fn=qr-(Ot-ee)+(xt-ee),xt=fn-Pr,ee=fn-xt,Oe[1]=fn-(xt+ee)+(ee-Pr),Qr=Ot+xt,ee=Qr-Ot,Oe[2]=Ot-(Qr-ee)+(xt-ee),Oe[3]=Qr;const Ii=ce(4,Fe,4,Oe,lt);qr=_r*Ge,Re=F*_r,Be=Re-(Re-_r),Ve=_r-Be,Re=F*Ge,ot=Re-(Re-Ge),Dt=Ge-ot,In=Ve*Dt-(qr-Be*ot-Ve*ot-Be*Dt),Pr=br*be,Re=F*br,Be=Re-(Re-br),Ve=br-Be,Re=F*be,ot=Re-(Re-be),Dt=be-ot,gn=Ve*Dt-(Pr-Be*ot-Ve*ot-Be*Dt),xt=In-gn,ee=In-xt,Oe[0]=In-(xt+ee)+(ee-gn),Ot=qr+xt,ee=Ot-qr,fn=qr-(Ot-ee)+(xt-ee),xt=fn-Pr,ee=fn-xt,Oe[1]=fn-(xt+ee)+(ee-Pr),Qr=Ot+xt,ee=Qr-Ot,Oe[2]=Ot-(Qr-ee)+(xt-ee),Oe[3]=Qr;const Nn=ce(Ii,lt,4,Oe,ze);qr=Se*Ge,Re=F*Se,Be=Re-(Re-Se),Ve=Se-Be,Re=F*Ge,ot=Re-(Re-Ge),Dt=Ge-ot,In=Ve*Dt-(qr-Be*ot-Ve*ot-Be*Dt),Pr=De*be,Re=F*De,Be=Re-(Re-De),Ve=De-Be,Re=F*be,ot=Re-(Re-be),Dt=be-ot,gn=Ve*Dt-(Pr-Be*ot-Ve*ot-Be*Dt),xt=In-gn,ee=In-xt,Oe[0]=In-(xt+ee)+(ee-gn),Ot=qr+xt,ee=Ot-qr,fn=qr-(Ot-ee)+(xt-ee),xt=fn-Pr,ee=fn-xt,Oe[1]=fn-(xt+ee)+(ee-Pr),Qr=Ot+xt,ee=Qr-Ot,Oe[2]=Ot-(Qr-ee)+(xt-ee),Oe[3]=Qr;const ai=ce(Nn,ze,4,Oe,Ae);return Ae[ai-1]}(me,C,P,G,$,j,be)}const He=(me,C)=>me.x*C.y-me.y*C.x,st=(me,C)=>me.x*C.x+me.y*C.y,Ee=(me,C,P)=>{const G=ft(me.x,me.y,C.x,C.y,P.x,P.y);return G>0?-1:G<0?1:0},_t=me=>Math.sqrt(st(me,me)),ir=(me,C,P)=>{const G={x:C.x-me.x,y:C.y-me.y},$={x:P.x-me.x,y:P.y-me.y};return He($,G)/_t($)/_t(G)},ur=(me,C,P)=>{const G={x:C.x-me.x,y:C.y-me.y},$={x:P.x-me.x,y:P.y-me.y};return st($,G)/_t($)/_t(G)},it=(me,C,P)=>0===C.y?null:{x:me.x+C.x/C.y*(P-me.y),y:P},St=(me,C,P)=>0===C.x?null:{x:P,y:me.y+C.y/C.x*(P-me.x)};class Ze{static compare(C,P){const G=Ze.comparePoints(C.point,P.point);return 0!==G?G:(C.point!==P.point&&C.link(P),C.isLeft!==P.isLeft?C.isLeft?1:-1:dt.compare(C.segment,P.segment))}static comparePoints(C,P){return C.xP.x?1:C.yP.y?1:0}constructor(C,P){void 0===C.events?C.events=[this]:C.events.push(this),this.point=C,this.isLeft=P}link(C){if(C.point===this.point)throw new Error("Tried to link already linked events");const P=C.point.events;for(let G=0,$=P.length;G<$;G++){const j=P[G];this.point.events.push(j),j.point=this.point}this.checkForConsuming()}checkForConsuming(){const C=this.point.events.length;for(let P=0;P{const j=$.otherSE;P.set($,{sine:ir(this.point,C.point,j.point),cosine:ur(this.point,C.point,j.point)})};return($,j)=>{P.has($)||G($),P.has(j)||G(j);const{sine:_e,cosine:Se}=P.get($),{sine:De,cosine:be}=P.get(j);return _e>=0&&De>=0?Sebe?-1:0:_e<0&&De<0?Sebe?1:0:De<_e?-1:De>_e?1:0}}}let gt=0;class dt{static compare(C,P){const G=C.leftSE.point.x,$=P.leftSE.point.x,j=C.rightSE.point.x,_e=P.rightSE.point.x;if(_eSe&&De>be)return-1;const ee=C.comparePoint(P.leftSE.point);if(ee<0)return 1;if(ee>0)return-1;const Re=P.comparePoint(C.rightSE.point);return 0!==Re?Re:-1}if(G>$){if(SeDe&&Se>Ge)return 1;const ee=P.comparePoint(C.leftSE.point);if(0!==ee)return ee;const Re=C.comparePoint(P.rightSE.point);return Re<0?1:Re>0?-1:1}if(SeDe)return 1;if(j<_e){const ee=P.comparePoint(C.rightSE.point);if(0!==ee)return ee}if(j>_e){const ee=C.comparePoint(P.rightSE.point);if(ee<0)return 1;if(ee>0)return-1}if(j!==_e){const ee=be-Se,Re=j-G,Be=Ge-De,Ve=_e-$;if(ee>Re&&BeVe)return-1}return j>_e?1:j<_e||beGe?1:C.idP.id?1:0}constructor(C,P,G,$){this.id=++gt,this.leftSE=C,C.segment=this,C.otherSE=P,this.rightSE=P,P.segment=this,P.otherSE=C,this.rings=G,this.windings=$}static fromRing(C,P,G){let $,j,_e;const Se=Ze.comparePoints(C,P);if(Se<0)$=C,j=P,_e=1;else{if(!(Se>0))throw new Error(`Tried to create degenerate segment at [${C.x}, ${C.y}]`);$=P,j=C,_e=-1}const De=new Ze($,!0),be=new Ze(j,!1);return new dt(De,be,[G],[_e])}replaceRightSE(C){this.rightSE=C,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}bbox(){const C=this.leftSE.point.y,P=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:CP?C:P}}}vector(){return{x:this.rightSE.point.x-this.leftSE.point.x,y:this.rightSE.point.y-this.leftSE.point.y}}isAnEndpoint(C){return C.x===this.leftSE.point.x&&C.y===this.leftSE.point.y||C.x===this.rightSE.point.x&&C.y===this.rightSE.point.y}comparePoint(C){if(this.isAnEndpoint(C))return 0;const P=this.leftSE.point,G=this.rightSE.point,$=this.vector();if(P.x===G.x)return C.x===P.x?0:C.x{if(0===C.x)return St(P,G,me.x);if(0===G.x)return St(me,C,P.x);if(0===C.y)return it(P,G,me.y);if(0===G.y)return it(me,C,P.y);const $=He(C,G);if(0==$)return null;const j={x:P.x-me.x,y:P.y-me.y},_e=He(j,C)/$,Se=He(j,G)/$;return{x:(me.x+Se*C.x+(P.x+_e*G.x))/2,y:(me.y+Se*C.y+(P.y+_e*G.y))/2}})(j,this.vector(),Se,C.vector());return null!==Be&&Te($,Be)?T.round(Be.x,Be.y):null}split(C){const P=[],G=void 0!==C.events,$=new Ze(C,!0),j=new Ze(C,!1),_e=this.rightSE;this.replaceRightSE(j),P.push(j),P.push($);const Se=new dt($,_e,this.rings.slice(),this.windings.slice());return Ze.comparePoints(Se.leftSE.point,Se.rightSE.point)>0&&Se.swapEvents(),Ze.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),G&&($.checkForConsuming(),j.checkForConsuming()),P}swapEvents(){const C=this.rightSE;this.rightSE=this.leftSE,this.leftSE=C,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(let P=0,G=this.windings.length;P0){const j=P;P=G,G=j}if(P.prev===G){const j=P;P=G,G=j}for(let j=0,_e=G.rings.length;j<_e;j++){const Se=G.rings[j],De=G.windings[j],be=P.rings.indexOf(Se);-1===be?(P.rings.push(Se),P.windings.push(De)):P.windings[be]+=De}G.rings=null,G.windings=null,G.consumedBy=P,G.leftSE.consumedBy=P.leftSE,G.rightSE.consumedBy=P.rightSE}}prevInResult(){return void 0!==this._prevInResult||(this._prevInResult=this.prev?this.prev.isInResult()?this.prev:this.prev.prevInResult():null),this._prevInResult}beforeState(){return void 0!==this._beforeState||(this._beforeState=this.prev?(this.prev.consumedBy||this.prev).afterState():{rings:[],windings:[],multiPolys:[]}),this._beforeState}afterState(){if(void 0!==this._afterState)return this._afterState;const C=this.beforeState();this._afterState={rings:C.rings.slice(0),windings:C.windings.slice(0),multiPolys:[]};const P=this._afterState.rings,G=this._afterState.windings,$=this._afterState.multiPolys;for(let Se=0,De=this.rings.length;Se1===$.length&&$[0].isSubject;this._isInResult=G(C)!==G(P);break}default:throw new Error(`Unrecognized operation type found ${vr.type}`)}return this._isInResult}}class yt{constructor(C,P,G){if(!Array.isArray(C)||0===C.length)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=P,this.isExterior=G,this.segments=[],"number"!=typeof C[0][0]||"number"!=typeof C[0][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");const $=T.round(C[0][0],C[0][1]);this.bbox={ll:{x:$.x,y:$.y},ur:{x:$.x,y:$.y}};let j=$;for(let _e=1,Se=C.length;_ethis.bbox.ur.x&&(this.bbox.ur.x=De.x),De.y>this.bbox.ur.y&&(this.bbox.ur.y=De.y),j=De)}($.x!==j.x||$.y!==j.y)&&this.segments.push(dt.fromRing(j,$,this))}getSweepEvents(){const C=[];for(let P=0,G=this.segments.length;Pthis.bbox.ur.x&&(this.bbox.ur.x=j.bbox.ur.x),j.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=j.bbox.ur.y),this.interiorRings.push(j)}this.multiPoly=P}getSweepEvents(){const C=this.exteriorRing.getSweepEvents();for(let P=0,G=this.interiorRings.length;Pthis.bbox.ur.x&&(this.bbox.ur.x=j.bbox.ur.x),j.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=j.bbox.ur.y),this.polys.push(j)}this.isSubject=P}getSweepEvents(){const C=[];for(let P=0,G=this.polys.length;P0&&(C=_e)}let P=C.segment.prevInResult(),G=P?P.prevInResult():null;for(;;){if(!P)return null;if(!G)return P.ringOut;if(G.ringOut!==P.ringOut)return G.ringOut.enclosingRing()!==P.ringOut?P.ringOut:P.ringOut.enclosingRing();P=G.prevInResult(),G=P?P.prevInResult():null}}}class pn{constructor(C){this.exteriorRing=C,C.poly=this,this.interiorRings=[]}addInterior(C){this.interiorRings.push(C),C.poly=this}getGeom(){const C=[this.exteriorRing.getGeom()];if(null===C[0])return null;for(let P=0,G=this.interiorRings.length;P1&&void 0!==arguments[1]?arguments[1]:dt.compare;this.queue=C,this.tree=new ae(P),this.segments=[]}process(C){const P=C.segment,G=[];if(C.consumedBy)return C.isLeft?this.queue.remove(C.otherSE):this.tree.remove(P),G;const $=C.isLeft?this.tree.add(P):this.tree.find(P);if(!$)throw new Error(`Unable to find segment #${P.id} [${P.leftSE.point.x}, ${P.leftSE.point.y}] -> [${P.rightSE.point.x}, ${P.rightSE.point.y}] in SweepLine tree.`);let Se,De,j=$,_e=$;for(;void 0===Se;)j=this.tree.prev(j),null===j?Se=null:void 0===j.key.consumedBy&&(Se=j.key);for(;void 0===De;)_e=this.tree.next(_e),null===_e?De=null:void 0===_e.key.consumedBy&&(De=_e.key);if(C.isLeft){let be=null;if(Se){const ee=Se.getIntersection(P);if(null!==ee&&(P.isAnEndpoint(ee)||(be=ee),!Se.isAnEndpoint(ee))){const Re=this._splitSafely(Se,ee);for(let Be=0,Ve=Re.length;Be0?(this.tree.remove(P),G.push(C)):(this.segments.push(P),P.prev=Se)}else{if(Se&&De){const be=Se.getIntersection(De);if(null!==be){if(!Se.isAnEndpoint(be)){const Ge=this._splitSafely(Se,be);for(let ee=0,Re=Ge.length;eehn)throw new Error("Infinite loop when putting segment endpoints in a priority queue (queue size too big).")}const _e=new At(j);let Se=j.size,De=j.pop();for(;De;){const ee=De.key;if(j.size===Se){const Be=ee.segment;throw new Error(`Unable to pop() ${ee.isLeft?"left":"right"} SweepEvent [${ee.point.x}, ${ee.point.y}] from segment #${Be.id} [${Be.leftSE.point.x}, ${Be.leftSE.point.y}] -> [${Be.rightSE.point.x}, ${Be.rightSE.point.y}] from queue.`)}if(j.size>hn)throw new Error("Infinite loop when passing sweep line over endpoints (queue size too big).");if(_e.segments.length>Or)throw new Error("Infinite loop when passing sweep line over endpoints (too many sweep line segments).");const Re=_e.process(ee);for(let Be=0,Ve=Re.length;Be1?C-1:0),G=1;G1?C-1:0),G=1;G1?C-1:0),G=1;G1?C-1:0),G=1;Goe;){if(H-oe>600){var re=H-oe+1,he=te-oe+1,m=Math.log(re),we=.5*Math.exp(2*m/3),fe=.5*Math.sqrt(m*we*(re-we)/re)*(he-re/2<0?-1:1);D(K,te,Math.max(oe,Math.floor(te-he*we/re+fe)),Math.min(H,Math.floor(te+(re-he)*we/re+fe)),ae)}var A=K[te],V=oe,R=H;for(q(K,oe,te),ae(K[H],A)>0&&q(K,oe,H);V0;)R--}0===ae(K[oe],A)?q(K,oe,R):q(K,++R,H),R<=te&&(oe=R+1),te<=R&&(H=R-1)}}function q(K,te,oe){var H=K[te];K[te]=K[oe],K[oe]=H}function Q(K,te){return Kte?1:0}return function le(K,te,oe,H,ae){D(K,te,oe||0,H||K.length-1,ae||Q)}}()},560:(pe,le,D)=>{"use strict";pe.exports=Q,pe.exports.default=Q;var q=D(6596);function Q(R,M){if(!(this instanceof Q))return new Q(R,M);this._maxEntries=Math.max(4,R||9),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),M&&this._initFormat(M),this.clear()}function K(R,M,I){if(!I)return M.indexOf(R);for(var X=0;X=R.minX&&M.maxY>=R.minY}function A(R){return{children:R,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function V(R,M,I,X,T){for(var F,O=[M,I];O.length;)!((I=O.pop())-(M=O.pop())<=X)&&(F=M+Math.ceil((I-M)/X/2)*X,q(R,F,M,I,T),O.push(M,F,F,I))}Q.prototype={all:function(){return this._all(this.data,[])},search:function(R){var M=this.data,I=[],X=this.toBBox;if(!Te(R,M))return I;for(var O,F,k,ce,T=[];M;){for(O=0,F=M.children.length;O=0&&O[M].children.length>this._maxEntries;)this._split(O,M),M--;this._adjustParentBBoxes(T,O,M)},_split:function(R,M){var I=R[M],X=I.children.length,T=this._minEntries;this._chooseSplitAxis(I,T,X);var O=this._chooseSplitIndex(I,T,X),F=A(I.children.splice(O,I.children.length-O));F.height=I.height,F.leaf=I.leaf,te(I,this.toBBox),te(F,this.toBBox),M?R[M-1].children.push(F):this._splitRoot(I,F)},_splitRoot:function(R,M){this.data=A([R,M]),this.data.height=R.height+1,this.data.leaf=!1,te(this.data,this.toBBox)},_chooseSplitIndex:function(R,M,I){var X,T,O,F,k,ce,Y,J;for(ce=Y=1/0,X=M;X<=I-M;X++)F=fe(T=oe(R,0,X,this.toBBox),O=oe(R,X,I,this.toBBox)),k=he(T)+he(O),F=M;ce--)Y=R.children[ce],H(F,R.leaf?T(Y):Y),k+=m(F);return k},_adjustParentBBoxes:function(R,M,I){for(var X=I;X>=0;X--)H(M[X],R)},_condense:function(R){for(var I,M=R.length-1;M>=0;M--)0===R[M].children.length?M>0?(I=R[M-1].children).splice(I.indexOf(R[M]),1):this.clear():te(R[M],this.toBBox)},_initFormat:function(R){var M=["return a"," - b",";"];this.compareMinX=new Function("a","b",M.join(R[0])),this.compareMinY=new Function("a","b",M.join(R[1])),this.toBBox=new Function("a","return {minX: a"+R[0]+", minY: a"+R[1]+", maxX: a"+R[2]+", maxY: a"+R[3]+"};")}}},2364:(pe,le,D)=>{"use strict";var q=D(6469),Q=D(6758),K=Object;pe.exports=q(function(){if(null==this||this!==K(this))throw new Q("RegExp.prototype.flags getter called on non-object");var oe="";return this.hasIndices&&(oe+="d"),this.global&&(oe+="g"),this.ignoreCase&&(oe+="i"),this.multiline&&(oe+="m"),this.dotAll&&(oe+="s"),this.unicode&&(oe+="u"),this.unicodeSets&&(oe+="v"),this.sticky&&(oe+="y"),oe},"get flags",!0)},5864:(pe,le,D)=>{"use strict";var q=D(947),Q=D(8128),K=D(2364),te=D(5209),oe=D(8871),H=Q(te());q(H,{getPolyfill:te,implementation:K,shim:oe}),pe.exports=H},5209:(pe,le,D)=>{"use strict";var q=D(2364),Q=D(947).supportsDescriptors,K=Object.getOwnPropertyDescriptor;pe.exports=function(){if(Q&&"gim"===/a/gim.flags){var oe=K(RegExp.prototype,"flags");if(oe&&"function"==typeof oe.get&&"dotAll"in RegExp.prototype&&"hasIndices"in RegExp.prototype){var H="",ae={};if(Object.defineProperty(ae,"hasIndices",{get:function(){H+="d"}}),Object.defineProperty(ae,"sticky",{get:function(){H+="y"}}),oe.get.call(ae),"dy"===H)return oe.get}}return q}},8871:(pe,le,D)=>{"use strict";var q=D(947).supportsDescriptors,Q=D(5209),K=D(3798),te=Object.defineProperty,oe=D(7640),H=D(1627),ae=/a/;pe.exports=function(){if(!q||!H)throw new oe("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");var he=Q(),m=H(ae),we=K(m,"flags");return(!we||we.get!==he)&&te(m,"flags",{configurable:!0,enumerable:!1,get:he}),he}},2858:function(pe,le){!function(D){"use strict";function K(ge,Te,A,V,R){let M,I,X,T,O=Te[0],F=V[0],k=0,ce=0;F>O==F>-O?(M=O,O=Te[++k]):(M=F,F=V[++ce]);let Y=0;if(kO==F>-O?(X=M-((I=O+M)-O),O=Te[++k]):(X=M-((I=F+M)-F),F=V[++ce]),M=I,0!==X&&(R[Y++]=X);kO==F>-O?(X=M-((I=M+O)-(T=I-M))+(O-T),O=Te[++k]):(X=M-((I=M+F)-(T=I-M))+(F-T),F=V[++ce]),M=I,0!==X&&(R[Y++]=X);for(;k0!=X>0)return T;const O=Math.abs(I+X);return Math.abs(T)>=33306690738754716e-32*O?T:-function(F,k,ce,Y,J,L,Ie){let Pe,Fe,lt,ze,Ae,Oe,se,ft,He,st,Ee,_t,ir,ur,it,St,Me,Ze;const gt=F-J,dt=ce-J,yt=k-L,Rt=Y-L;Ae=(it=(ft=gt-(se=(Oe=134217729*gt)-(Oe-gt)))*(st=Rt-(He=(Oe=134217729*Rt)-(Oe-Rt)))-((ur=gt*Rt)-se*He-ft*He-se*st))-(Ee=it-(Me=(ft=yt-(se=(Oe=134217729*yt)-(Oe-yt)))*(st=dt-(He=(Oe=134217729*dt)-(Oe-dt)))-((St=yt*dt)-se*He-ft*He-se*st))),re[0]=it-(Ee+Ae)+(Ae-Me),Ae=(ir=ur-((_t=ur+Ee)-(Ae=_t-ur))+(Ee-Ae))-(Ee=ir-St),re[1]=ir-(Ee+Ae)+(Ae-St),Ae=(Ze=_t+Ee)-_t,re[2]=_t-(Ze-Ae)+(Ee-Ae),re[3]=Ze;let or=function(hn,Or){let bn=Or[0];for(let vr=1;vr<4;vr++)bn+=Or[vr];return bn}(0,re),It=22204460492503146e-32*Ie;if(or>=It||-or>=It||(Pe=F-(gt+(Ae=F-gt))+(Ae-J),lt=ce-(dt+(Ae=ce-dt))+(Ae-J),Fe=k-(yt+(Ae=k-yt))+(Ae-L),ze=Y-(Rt+(Ae=Y-Rt))+(Ae-L),0===Pe&&0===Fe&&0===lt&&0===ze)||(It=11093356479670487e-47*Ie+33306690738754706e-32*Math.abs(or),(or+=gt*ze+Rt*Pe-(yt*lt+dt*Fe))>=It||-or>=It))return or;Ae=(it=(ft=Pe-(se=(Oe=134217729*Pe)-(Oe-Pe)))*(st=Rt-(He=(Oe=134217729*Rt)-(Oe-Rt)))-((ur=Pe*Rt)-se*He-ft*He-se*st))-(Ee=it-(Me=(ft=Fe-(se=(Oe=134217729*Fe)-(Oe-Fe)))*(st=dt-(He=(Oe=134217729*dt)-(Oe-dt)))-((St=Fe*dt)-se*He-ft*He-se*st))),fe[0]=it-(Ee+Ae)+(Ae-Me),Ae=(ir=ur-((_t=ur+Ee)-(Ae=_t-ur))+(Ee-Ae))-(Ee=ir-St),fe[1]=ir-(Ee+Ae)+(Ae-St),Ae=(Ze=_t+Ee)-_t,fe[2]=_t-(Ze-Ae)+(Ee-Ae),fe[3]=Ze;const pn=K(4,re,4,fe,he);Ae=(it=(ft=gt-(se=(Oe=134217729*gt)-(Oe-gt)))*(st=ze-(He=(Oe=134217729*ze)-(Oe-ze)))-((ur=gt*ze)-se*He-ft*He-se*st))-(Ee=it-(Me=(ft=yt-(se=(Oe=134217729*yt)-(Oe-yt)))*(st=lt-(He=(Oe=134217729*lt)-(Oe-lt)))-((St=yt*lt)-se*He-ft*He-se*st))),fe[0]=it-(Ee+Ae)+(Ae-Me),Ae=(ir=ur-((_t=ur+Ee)-(Ae=_t-ur))+(Ee-Ae))-(Ee=ir-St),fe[1]=ir-(Ee+Ae)+(Ae-St),Ae=(Ze=_t+Ee)-_t,fe[2]=_t-(Ze-Ae)+(Ee-Ae),fe[3]=Ze;const rt=K(pn,he,4,fe,m);Ae=(it=(ft=Pe-(se=(Oe=134217729*Pe)-(Oe-Pe)))*(st=ze-(He=(Oe=134217729*ze)-(Oe-ze)))-((ur=Pe*ze)-se*He-ft*He-se*st))-(Ee=it-(Me=(ft=Fe-(se=(Oe=134217729*Fe)-(Oe-Fe)))*(st=lt-(He=(Oe=134217729*lt)-(Oe-lt)))-((St=Fe*lt)-se*He-ft*He-se*st))),fe[0]=it-(Ee+Ae)+(Ae-Me),Ae=(ir=ur-((_t=ur+Ee)-(Ae=_t-ur))+(Ee-Ae))-(Ee=ir-St),fe[1]=ir-(Ee+Ae)+(Ae-St),Ae=(Ze=_t+Ee)-_t,fe[2]=_t-(Ze-Ae)+(Ee-Ae),fe[3]=Ze;const At=K(rt,m,4,fe,we);return we[At-1]}(ge,Te,A,V,R,M,O)},D.orient2dfast=function(ge,Te,A,V,R,M){return(Te-M)*(A-R)-(ge-R)*(V-M)},Object.defineProperty(D,"__esModule",{value:!0})}(le)},1358:(pe,le,D)=>{"use strict";var q=D(258),Q=D(2736),K=D(5861)(),te=D(3798),oe=D(6758),H=q("%Math.floor%");pe.exports=function(re,he){if("function"!=typeof re)throw new oe("`fn` is not a function");if("number"!=typeof he||he<0||he>4294967295||H(he)!==he)throw new oe("`length` must be a positive 32-bit integer");var m=arguments.length>2&&!!arguments[2],we=!0,fe=!0;if("length"in re&&te){var ge=te(re,"length");ge&&!ge.configurable&&(we=!1),ge&&!ge.writable&&(fe=!1)}return(we||fe||!m)&&(K?Q(re,"length",he,!0,!0):Q(re,"length",he)),re}},6469:(pe,le,D)=>{"use strict";var q=D(2736),Q=D(5861)(),K=D(4003).functionsHaveConfigurableNames(),te=D(6758);pe.exports=function(H,ae){if("function"!=typeof H)throw new te("`fn` is not a function");return(!(arguments.length>2&&arguments[2])||K)&&(Q?q(H,"name",ae,!0,!0):q(H,"name",ae)),H}},6235:pe=>{"use strict";pe.exports={eudist:function(D,q,Q){for(var K=D.length,te=0,oe=0;oe{"use strict";var q=D(6235),Q=q.eudist,K=q.dist;pe.exports={kmrand:function(oe,H){for(var ae={},re=[],he=H<<2,m=oe.length,we=oe[0].length>0;re.length0;){var fe=oe[Math.floor(Math.random()*m)],ge=we?fe.join("_"):""+fe;ae[ge]||(ae[ge]=!0,re.push(fe))}if(re.length0,fe=oe[Math.floor(Math.random()*he)];for(m&&fe.join("_"),re.push(fe);re.length{"use strict";var q=D(6235),Q=D(429),K=q.eudist,H=Q.kmrand,ae=Q.kmpp;function he(we,fe,ge){ge=ge||[];for(var Te=0;Te0,k=[];if(ge)A="kmrand"==ge?H(we,fe):"kmpp"==ge?ae(we,fe):ge;else for(var ce={};A.length{"use strict";D.r(le),D.d(le,{default:()=>q});class q{constructor(te=[],oe=Q){if(this.data=te,this.length=this.data.length,this.compare=oe,this.length>0)for(let H=(this.length>>1)-1;H>=0;H--)this._down(H)}push(te){this.data.push(te),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const te=this.data[0],oe=this.data.pop();return this.length--,this.length>0&&(this.data[0]=oe,this._down(0)),te}peek(){return this.data[0]}_up(te){const{data:oe,compare:H}=this,ae=oe[te];for(;te>0;){const re=te-1>>1,he=oe[re];if(H(ae,he)>=0)break;oe[te]=he,te=re}oe[te]=ae}_down(te){const{data:oe,compare:H}=this,ae=this.length>>1,re=oe[te];for(;te=0)break;oe[te]=m,te=he}oe[te]=re}}function Q(K,te){return Kte?1:0}},9258:function(pe,le){!function(D){"use strict";function q(){}function Q(e){this.message=e||""}function K(e){this.message=e||""}function te(e){this.message=e||""}function oe(){}function H(e){return null===e?Pr:e.color}function ae(e){return null===e?null:e.parent}function re(e,r){null!==e&&(e.color=r)}function he(e){return null===e?null:e.left}function m(e){return null===e?null:e.right}function we(){this.root_=null,this.size_=0}function fe(){}function ge(){this.array_=[],arguments[0]instanceof De&&this.addAll(arguments[0])}function Te(){}function A(e){this.message=e||""}function V(){this.array_=[]}"fill"in Array.prototype||Object.defineProperty(Array.prototype,"fill",{configurable:!0,value:function(e){if(null==this)throw new TypeError(this+" is not an object");var r=Object(this),a=Math.max(Math.min(r.length,9007199254740991),0)||0,c=1 in arguments&&parseInt(Number(arguments[1]),10)||0;c=c<0?Math.max(a+c,0):Math.min(c,a);var l=2 in arguments&&void 0!==arguments[2]?parseInt(Number(arguments[2]),10)||0:a;for(l=l<0?Math.max(a+arguments[2],0):Math.min(l,a);ce.x?1:this.ye.y?1:0},k.prototype.clone=function(){},k.prototype.copy=function(){return new k(this)},k.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},k.prototype.distance3D=function(e){var r=this.x-e.x,a=this.y-e.y,c=this.z-e.z;return Math.sqrt(r*r+a*a+c*c)},k.prototype.distance=function(e){var r=this.x-e.x,a=this.y-e.y;return Math.sqrt(r*r+a*a)},k.prototype.hashCode=function(){var e=17;return 37*(e=37*e+k.hashCode(this.x))+k.hashCode(this.y)},k.prototype.setCoordinate=function(e){this.x=e.x,this.y=e.y,this.z=e.z},k.prototype.interfaces_=function(){return[T,O,q]},k.prototype.getClass=function(){return k},k.hashCode=function(){if(1===arguments.length)return I.doubleToLongBits(arguments[0]),Math.trunc(0)},ce.DimensionalComparator.get=function(){return Y},ce.serialVersionUID.get=function(){return 0x5cbf2c235c7e5800},ce.NULL_ORDINATE.get=function(){return I.NaN},ce.X.get=function(){return 0},ce.Y.get=function(){return 1},ce.Z.get=function(){return 2},Object.defineProperties(k,ce);var Y=function(e){if(this._dimensionsToTest=2,0!==arguments.length&&1===arguments.length){var r=arguments[0];if(2!==r&&3!==r)throw new M("only 2 or 3 dimensions may be specified");this._dimensionsToTest=r}};Y.prototype.compare=function(e,r){var a=e,c=r,l=Y.compare(a.x,c.x);if(0!==l)return l;var g=Y.compare(a.y,c.y);return 0!==g?g:this._dimensionsToTest<=2?0:Y.compare(a.z,c.z)},Y.prototype.interfaces_=function(){return[F]},Y.prototype.getClass=function(){return Y},Y.compare=function(e,r){return er?1:I.isNaN(e)?I.isNaN(r)?0:-1:I.isNaN(r)?1:0};var J=function(){};J.prototype.create=function(){},J.prototype.interfaces_=function(){return[]},J.prototype.getClass=function(){return J};var L=function(){},Ie={INTERIOR:{configurable:!0},BOUNDARY:{configurable:!0},EXTERIOR:{configurable:!0},NONE:{configurable:!0}};L.prototype.interfaces_=function(){return[]},L.prototype.getClass=function(){return L},L.toLocationSymbol=function(e){switch(e){case L.EXTERIOR:return"e";case L.BOUNDARY:return"b";case L.INTERIOR:return"i";case L.NONE:return"-"}throw new M("Unknown location value: "+e)},Ie.INTERIOR.get=function(){return 0},Ie.BOUNDARY.get=function(){return 1},Ie.EXTERIOR.get=function(){return 2},Ie.NONE.get=function(){return-1},Object.defineProperties(L,Ie);var Pe=function(e,r){return e.interfaces_&&e.interfaces_().indexOf(r)>-1},Fe=function(){},lt={LOG_10:{configurable:!0}};Fe.prototype.interfaces_=function(){return[]},Fe.prototype.getClass=function(){return Fe},Fe.log10=function(e){var r=Math.log(e);return I.isInfinite(r)||I.isNaN(r)?r:r/Fe.LOG_10},Fe.min=function(e,r,a,c){var l=e;return ra?a:e}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var c=arguments[0],l=arguments[1],g=arguments[2];return cg?g:c}},Fe.wrap=function(e,r){return e<0?r- -e%r:e%r},Fe.max=function(){if(3===arguments.length){var r=arguments[1],a=arguments[2],c=arguments[0];return r>c&&(c=r),a>c&&(c=a),c}if(4===arguments.length){var g=arguments[1],x=arguments[2],_=arguments[3],B=arguments[0];return g>B&&(B=g),x>B&&(B=x),_>B&&(B=_),B}},Fe.average=function(e,r){return(e+r)/2},lt.LOG_10.get=function(){return Math.log(10)},Object.defineProperties(Fe,lt);var ze=function(e){this.str=e};ze.prototype.append=function(e){this.str+=e},ze.prototype.setCharAt=function(e,r){this.str=this.str.substr(0,e)+r+this.str.substr(e+1)},ze.prototype.toString=function(e){return this.str};var Ae=function(e){this.value=e};Ae.prototype.intValue=function(){return this.value},Ae.prototype.compareTo=function(e){return this.valuee?1:0},Ae.isNaN=function(e){return Number.isNaN(e)};var Oe=function(){};Oe.isWhitespace=function(e){return e<=32&&e>=0||127===e},Oe.toUpperCase=function(e){return e.toUpperCase()};var se=function e(){this._hi=0,this._lo=0,0===arguments.length?this.init(0):1===arguments.length?"number"==typeof arguments[0]||arguments[0]instanceof e?this.init(arguments[0]):"string"==typeof arguments[0]&&e.call(this,e.parse(arguments[0])):2===arguments.length&&this.init(arguments[0],arguments[1])},ft={PI:{configurable:!0},TWO_PI:{configurable:!0},PI_2:{configurable:!0},E:{configurable:!0},NaN:{configurable:!0},EPS:{configurable:!0},SPLIT:{configurable:!0},MAX_PRINT_DIGITS:{configurable:!0},TEN:{configurable:!0},ONE:{configurable:!0},SCI_NOT_EXPONENT_CHAR:{configurable:!0},SCI_NOT_ZERO:{configurable:!0}};se.prototype.le=function(e){return(this._hi9?(xe=!0,ke="9"):ke="0"+ie,x.append(ke),a=a.subtract(se.valueOf(ie)).multiply(se.TEN),xe&&a.selfAdd(se.TEN);var qe=!0,Qe=se.magnitude(a._hi);if(Qe<0&&Math.abs(Qe)>=_-B&&(qe=!1),!qe)break}return r[0]=c,x.toString()},se.prototype.sqr=function(){return this.multiply(this)},se.prototype.doubleValue=function(){return this._hi+this._lo},se.prototype.subtract=function(){return arguments[0]instanceof se?this.add(arguments[0].negate()):"number"==typeof arguments[0]?this.add(-arguments[0]):void 0},se.prototype.equals=function(){if(1===arguments.length){var e=arguments[0];return this._hi===e._hi&&this._lo===e._lo}},se.prototype.isZero=function(){return 0===this._hi&&0===this._lo},se.prototype.selfSubtract=function(){if(arguments[0]instanceof se){var e=arguments[0];return this.isNaN()?this:this.selfAdd(-e._hi,-e._lo)}if("number"==typeof arguments[0]){var r=arguments[0];return this.isNaN()?this:this.selfAdd(-r,0)}},se.prototype.getSpecialNumberString=function(){return this.isZero()?"0.0":this.isNaN()?"NaN ":null},se.prototype.min=function(e){return this.le(e)?this:e},se.prototype.selfDivide=function(){if(1===arguments.length){if(arguments[0]instanceof se){var e=arguments[0];return this.selfDivide(e._hi,e._lo)}if("number"==typeof arguments[0])return this.selfDivide(arguments[0],0)}else if(2===arguments.length){var g,_,B,xe,a=arguments[0],l=null,x=null,ie=null,ke=null;return this._hi=ke=(B=this._hi/a)+(ie=(this._hi-(xe=B*a)-(ke=(l=(ie=se.SPLIT*B)-(l=ie-B))*(x=(ke=se.SPLIT*a)-(x=ke-a))-xe+l*(_=a-x)+(g=B-l)*x+g*_)+this._lo-B*arguments[1])/a),this._lo=B-ke+ie,this}},se.prototype.dump=function(){return"DD<"+this._hi+", "+this._lo+">"},se.prototype.divide=function(){if(arguments[0]instanceof se){var a,l,g,_,e=arguments[0],r=null,c=null,x=null,B=null;return a=(g=this._hi/e._hi)-(r=(x=se.SPLIT*g)-(r=x-g)),B=r*(c=(B=se.SPLIT*e._hi)-(c=B-e._hi))-(_=g*e._hi)+r*(l=e._hi-c)+a*c+a*l,new se(B=g+(x=(this._hi-_-B+this._lo-g*e._lo)/e._hi),g-B+x)}if("number"==typeof arguments[0]){var ie=arguments[0];return I.isNaN(ie)?se.createNaN():se.copy(this).selfDivide(ie,0)}},se.prototype.ge=function(e){return(this._hi>e._hi||this._hi===e._hi)&&this._lo>=e._lo},se.prototype.pow=function(e){if(0===e)return se.valueOf(1);var r=new se(this),a=se.valueOf(1),c=Math.abs(e);if(c>1)for(;c>0;)c%2==1&&a.selfMultiply(r),(c/=2)>0&&(r=r.sqr());else a=r;return e<0?a.reciprocal():a},se.prototype.ceil=function(){if(this.isNaN())return se.NaN;var e=Math.ceil(this._hi),r=0;return e===this._hi&&(r=Math.ceil(this._lo)),new se(e,r)},se.prototype.compareTo=function(e){return this._hie._hi?1:this._loe._lo?1:0},se.prototype.rint=function(){return this.isNaN()?this:this.add(.5).floor()},se.prototype.setValue=function(){return arguments[0]instanceof se||"number"==typeof arguments[0]?(this.init(arguments[0]),this):void 0},se.prototype.max=function(e){return this.ge(e)?this:e},se.prototype.sqrt=function(){if(this.isZero())return se.valueOf(0);if(this.isNegative())return se.NaN;var e=1/Math.sqrt(this._hi),a=se.valueOf(this._hi*e),c=this.subtract(a.sqr())._hi*(.5*e);return a.add(c)},se.prototype.selfAdd=function(){if(1===arguments.length){if(arguments[0]instanceof se){var e=arguments[0];return this.selfAdd(e._hi,e._lo)}if("number"==typeof arguments[0]){var a,c,l,x,_,r=arguments[0];return this._hi=(a=(l=this._hi+r)+(_=r-(x=l-this._hi)+(this._hi-(l-x))+this._lo))+(c=_+(l-a)),this._lo=c+(a-this._hi),this}}else if(2===arguments.length){var xe,ke,Qe,mr,B=arguments[0],ie=arguments[1],qe=null,We=null,tt=null;We=(Qe=this._hi+B)-(tt=Qe-this._hi),qe=(ke=this._lo+ie)-(mr=ke-this._lo);var Xr=(xe=Qe+(tt=(We=B-tt+(this._hi-We))+ke))+(tt=(qe=ie-mr+(this._lo-qe))+(tt+(Qe-xe))),Ln=tt+(xe-Xr);return this._hi=Xr,this._lo=Ln,this}},se.prototype.selfMultiply=function(){if(1===arguments.length){if(arguments[0]instanceof se){var e=arguments[0];return this.selfMultiply(e._hi,e._lo)}if("number"==typeof arguments[0])return this.selfMultiply(arguments[0],0)}else if(2===arguments.length){var g,_,a=arguments[0],l=null,x=null,B=null,ie=null;l=(B=se.SPLIT*this._hi)-this._hi,l=B-l;var xe=(B=this._hi*a)+(ie=l*(x=(ie=se.SPLIT*a)-(x=ie-a))-B+l*(_=a-x)+(g=this._hi-l)*x+g*_+(this._hi*arguments[1]+this._lo*a)),ke=ie+(l=B-xe);return this._hi=xe,this._lo=ke,this}},se.prototype.selfSqr=function(){return this.selfMultiply(this)},se.prototype.floor=function(){if(this.isNaN())return se.NaN;var e=Math.floor(this._hi),r=0;return e===this._hi&&(r=Math.floor(this._lo)),new se(e,r)},se.prototype.negate=function(){return this.isNaN()?this:new se(-this._hi,-this._lo)},se.prototype.clone=function(){},se.prototype.multiply=function(){if(arguments[0]instanceof se){var e=arguments[0];return e.isNaN()?se.createNaN():se.copy(this).selfMultiply(e)}if("number"==typeof arguments[0]){var r=arguments[0];return I.isNaN(r)?se.createNaN():se.copy(this).selfMultiply(r,0)}},se.prototype.isNaN=function(){return I.isNaN(this._hi)},se.prototype.intValue=function(){return Math.trunc(this._hi)},se.prototype.toString=function(){var e=se.magnitude(this._hi);return e>=-3&&e<=20?this.toStandardNotation():this.toSciNotation()},se.prototype.toStandardNotation=function(){var e=this.getSpecialNumberString();if(null!==e)return e;var r=new Array(1).fill(null),a=this.extractSignificantDigits(!0,r),c=r[0]+1,l=a;return"."===a.charAt(0)?l="0"+a:c<0?l="0."+se.stringOfChar("0",-c)+a:-1===a.indexOf(".")&&(l=a+se.stringOfChar("0",c-a.length)+".0"),this.isNegative()?"-"+l:l},se.prototype.reciprocal=function(){var r,c,l,x,e=null,a=null,g=null,_=null;r=(l=1/this._hi)-(e=(g=se.SPLIT*l)-(e=g-l)),a=(_=se.SPLIT*this._hi)-this._hi;var B=l+(g=(1-(x=l*this._hi)-(_=e*(a=_-a)-x+e*(c=this._hi-a)+r*a+r*c)-l*this._lo)/this._hi);return new se(B,l-B+g)},se.prototype.toSciNotation=function(){if(this.isZero())return se.SCI_NOT_ZERO;var e=this.getSpecialNumberString();if(null!==e)return e;var r=new Array(1).fill(null),a=this.extractSignificantDigits(!1,r),c=se.SCI_NOT_EXPONENT_CHAR+r[0];if("0"===a.charAt(0))throw new Error("Found leading zero: "+a);var l="";a.length>1&&(l=a.substring(1));var g=a.charAt(0)+"."+l;return this.isNegative()?"-"+g+c:g+c},se.prototype.abs=function(){return this.isNaN()?se.NaN:this.isNegative()?this.negate():new se(this)},se.prototype.isPositive=function(){return(this._hi>0||0===this._hi)&&this._lo>0},se.prototype.lt=function(e){return(this._hie._hi||this._hi===e._hi)&&this._lo>e._lo},se.prototype.isNegative=function(){return(this._hi<0||0===this._hi)&&this._lo<0},se.prototype.trunc=function(){return this.isNaN()?se.NaN:this.isPositive()?this.floor():this.ceil()},se.prototype.signum=function(){return this._hi>0?1:this._hi<0?-1:this._lo>0?1:this._lo<0?-1:0},se.prototype.interfaces_=function(){return[q,T,O]},se.prototype.getClass=function(){return se},se.sqr=function(e){return se.valueOf(e).selfMultiply(e)},se.valueOf=function(){return"string"==typeof arguments[0]?se.parse(arguments[0]):"number"==typeof arguments[0]?new se(arguments[0]):void 0},se.sqrt=function(e){return se.valueOf(e).sqrt()},se.parse=function(e){for(var r=0,a=e.length;Oe.isWhitespace(e.charAt(r));)r++;var c=!1;if(r=a);){var ie=e.charAt(r);if(r++,Oe.isDigit(ie)){var xe=ie-"0";g.selfMultiply(se.TEN),g.selfAdd(xe),x++}else{if("."!==ie){if("e"===ie||"E"===ie){var ke=e.substring(r);try{B=Ae.parseInt(ke)}catch(mr){throw mr instanceof Error?new Error("Invalid exponent "+ke+" in string "+e):mr}break}throw new Error("Unexpected character '"+ie+"' at position "+r+" in string "+e)}_=x}}var qe=g,Qe=x-_-B;if(0===Qe)qe=g;else if(Qe>0){var We=se.TEN.pow(Qe);qe=g.divide(We)}else if(Qe<0){var tt=se.TEN.pow(-Qe);qe=g.multiply(tt)}return c?qe.negate():qe},se.createNaN=function(){return new se(I.NaN,I.NaN)},se.copy=function(e){return new se(e)},se.magnitude=function(e){var r=Math.abs(e),a=Math.log(r)/Math.log(10),c=Math.trunc(Math.floor(a));return 10*Math.pow(10,c)<=r&&(c+=1),c},se.stringOfChar=function(e,r){for(var a=new ze,c=0;c0){if(g<=0)return He.signum(x);c=l+g}else{if(!(l<0)||g>=0)return He.signum(x);c=-l-g}var _=He.DP_SAFE_EPSILON*c;return x>=_||-x>=_?He.signum(x):2},He.signum=function(e){return e>0?1:e<0?-1:0},st.DP_SAFE_EPSILON.get=function(){return 1e-15},Object.defineProperties(He,st);var Ee=function(){},_t={X:{configurable:!0},Y:{configurable:!0},Z:{configurable:!0},M:{configurable:!0}};_t.X.get=function(){return 0},_t.Y.get=function(){return 1},_t.Z.get=function(){return 2},_t.M.get=function(){return 3},Ee.prototype.setOrdinate=function(e,r,a){},Ee.prototype.size=function(){},Ee.prototype.getOrdinate=function(e,r){},Ee.prototype.getCoordinate=function(){},Ee.prototype.getCoordinateCopy=function(e){},Ee.prototype.getDimension=function(){},Ee.prototype.getX=function(e){},Ee.prototype.clone=function(){},Ee.prototype.expandEnvelope=function(e){},Ee.prototype.copy=function(){},Ee.prototype.getY=function(e){},Ee.prototype.toCoordinateArray=function(){},Ee.prototype.interfaces_=function(){return[O]},Ee.prototype.getClass=function(){return Ee},Object.defineProperties(Ee,_t);var ir=function(){},ur=function(e){function r(){e.call(this,"Projective point not representable on the Cartesian plane.")}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},r}(ir),it=function(){};it.arraycopy=function(e,r,a,c,l){for(var g=0,x=r;xe._minx?this._minx:e._minx,this._maxxe._miny?this._miny:e._miny,this._maxy=this._minx&&r.getMaxX()<=this._maxx&&r.getMinY()>=this._miny&&r.getMaxY()<=this._maxy}}else if(2===arguments.length){var a=arguments[0],c=arguments[1];return!this.isNull()&&a>=this._minx&&a<=this._maxx&&c>=this._miny&&c<=this._maxy}},Me.prototype.intersects=function(){if(1===arguments.length){if(arguments[0]instanceof Me){var e=arguments[0];return!this.isNull()&&!e.isNull()&&!(e._minx>this._maxx||e._maxxthis._maxy||e._maxythis._maxx||athis._maxy||cthis._maxx&&(this._maxx=r._maxx),r._minythis._maxy&&(this._maxy=r._maxy))}}else if(2===arguments.length){var a=arguments[0],c=arguments[1];this.isNull()?(this._minx=a,this._maxx=a,this._miny=c,this._maxy=c):(athis._maxx&&(this._maxx=a),cthis._maxy&&(this._maxy=c))}},Me.prototype.minExtent=function(){if(this.isNull())return 0;var e=this.getWidth(),r=this.getHeight();return er._minx?1:this._minyr._miny?1:this._maxxr._maxx?1:this._maxyr._maxy?1:0},Me.prototype.translate=function(e,r){if(this.isNull())return null;this.init(this.getMinX()+e,this.getMaxX()+e,this.getMinY()+r,this.getMaxY()+r)},Me.prototype.toString=function(){return"Env["+this._minx+" : "+this._maxx+", "+this._miny+" : "+this._maxy+"]"},Me.prototype.setToNull=function(){this._minx=0,this._maxx=-1,this._miny=0,this._maxy=-1},Me.prototype.getHeight=function(){return this.isNull()?0:this._maxy-this._miny},Me.prototype.maxExtent=function(){if(this.isNull())return 0;var e=this.getWidth(),r=this.getHeight();return e>r?e:r},Me.prototype.expandBy=function(){if(1===arguments.length){var e=arguments[0];this.expandBy(e,e)}else if(2===arguments.length){var r=arguments[0],a=arguments[1];if(this.isNull())return null;this._minx-=r,this._maxx+=r,this._miny-=a,this._maxy+=a,(this._minx>this._maxx||this._miny>this._maxy)&&this.setToNull()}},Me.prototype.contains=function(){if(1===arguments.length){if(arguments[0]instanceof Me)return this.covers(arguments[0]);if(arguments[0]instanceof k)return this.covers(arguments[0])}else if(2===arguments.length)return this.covers(arguments[0],arguments[1])},Me.prototype.centre=function(){return this.isNull()?null:new k((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)},Me.prototype.init=function(){if(0===arguments.length)this.setToNull();else if(1===arguments.length){if(arguments[0]instanceof k){var e=arguments[0];this.init(e.x,e.x,e.y,e.y)}else if(arguments[0]instanceof Me){var r=arguments[0];this._minx=r._minx,this._maxx=r._maxx,this._miny=r._miny,this._maxy=r._maxy}}else if(2===arguments.length){var a=arguments[0],c=arguments[1];this.init(a.x,c.x,a.y,c.y)}else if(4===arguments.length){var l=arguments[0],g=arguments[1],x=arguments[2],_=arguments[3];le._maxx&&(r=this._minx-e._maxx);var a=0;return this._maxye._maxy&&(a=this._miny-e._maxy),0===r?a:0===a?r:Math.sqrt(r*r+a*a)},Me.prototype.hashCode=function(){var e=17;return 37*(e=37*(e=37*(e=37*e+k.hashCode(this._minx))+k.hashCode(this._maxx))+k.hashCode(this._miny))+k.hashCode(this._maxy)},Me.prototype.interfaces_=function(){return[T,q]},Me.prototype.getClass=function(){return Me},Me.intersects=function(){if(3===arguments.length){var e=arguments[0],r=arguments[1],a=arguments[2];return a.x>=(e.xr.x?e.x:r.x)&&a.y>=(e.yr.y?e.y:r.y)}if(4===arguments.length){var c=arguments[0],l=arguments[1],g=arguments[2],x=arguments[3],_=Math.min(g.x,x.x),B=Math.max(g.x,x.x),ie=Math.min(c.x,l.x),xe=Math.max(c.x,l.x);return!(ie>B||xe<_||(_=Math.min(g.y,x.y),B=Math.max(g.y,x.y),ie=Math.min(c.y,l.y),xe=Math.max(c.y,l.y),ie>B||xe<_))}},Ze.serialVersionUID.get=function(){return 0x51845cd552189800},Object.defineProperties(Me,Ze);var gt={typeStr:/^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,emptyTypeStr:/^\s*(\w+)\s*EMPTY\s*$/,spaces:/\s+/,parenComma:/\)\s*,\s*\(/,doubleParenComma:/\)\s*\)\s*,\s*\(\s*\(/,trimParens:/^\s*\(?(.*?)\)?\s*$/},dt=function(e){this.geometryFactory=e||new kt};dt.prototype.read=function(e){var r,a;e=e.replace(/[\n\r]/g," ");var l=gt.typeStr.exec(e);if(-1!==e.search("EMPTY")&&((l=gt.emptyTypeStr.exec(e))[2]=void 0),l&&(a=l[1].toLowerCase(),Rt[a]&&(r=Rt[a].apply(this,[l[2]]))),void 0===r)throw new Error("Could not parse WKT "+e);return r},dt.prototype.write=function(e){return this.extractGeometry(e)},dt.prototype.extractGeometry=function(e){var r=e.getGeometryType().toLowerCase();if(!yt[r])return null;var a=r.toUpperCase();return e.isEmpty()?a+" EMPTY":a+"("+yt[r].apply(this,[e])+")"};var yt={coordinate:function(e){return e.x+" "+e.y},point:function(e){return yt.coordinate.call(this,e._coordinates._coordinates[0])},multipoint:function(e){for(var r=[],a=0,c=e._geometries.length;athis.getEdgeDistance(e,1)?(this._intLineIndex[e][0]=0,this._intLineIndex[e][1]=1):(this._intLineIndex[e][0]=1,this._intLineIndex[e][1]=0)}},At.prototype.isProper=function(){return this.hasIntersection()&&this._isProper},At.prototype.setPrecisionModel=function(e){this._precisionModel=e},At.prototype.isInteriorIntersection=function(){if(0===arguments.length)return!!this.isInteriorIntersection(0)||!!this.isInteriorIntersection(1);if(1===arguments.length){for(var e=arguments[0],r=0;rl?c:l;else{var x=Math.abs(e.x-r.x),_=Math.abs(e.y-r.y);0!==(g=c>l?x:_)||e.equals(r)||(g=Math.max(x,_))}return rt.isTrue(!(0===g&&!e.equals(r)),"Bad distance calculation"),g},At.nonRobustComputeEdgeDistance=function(e,r,a){var c=e.x-r.x,l=e.y-r.y,g=Math.sqrt(c*c+l*l);return rt.isTrue(!(0===g&&!e.equals(r)),"Invalid distance calculation"),g},hn.DONT_INTERSECT.get=function(){return 0},hn.DO_INTERSECT.get=function(){return 1},hn.COLLINEAR.get=function(){return 2},hn.NO_INTERSECTION.get=function(){return 0},hn.POINT_INTERSECTION.get=function(){return 1},hn.COLLINEAR_INTERSECTION.get=function(){return 2},Object.defineProperties(At,hn);var Or=function(e){function r(){e.apply(this,arguments)}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.isInSegmentEnvelopes=function(a){var c=new Me(this._inputLines[0][0],this._inputLines[0][1]),l=new Me(this._inputLines[1][0],this._inputLines[1][1]);return c.contains(a)&&l.contains(a)},r.prototype.computeIntersection=function(){if(3!==arguments.length)return e.prototype.computeIntersection.apply(this,arguments);var a=arguments[0],c=arguments[1],l=arguments[2];if(this._isProper=!1,Me.intersects(c,l,a)&&0===Ne.orientationIndex(c,l,a)&&0===Ne.orientationIndex(l,c,a))return this._isProper=!0,(a.equals(c)||a.equals(l))&&(this._isProper=!1),this._result=e.POINT_INTERSECTION,null;this._result=e.NO_INTERSECTION},r.prototype.normalizeToMinimum=function(a,c,l,g,x){x.x=this.smallestInAbsValue(a.x,c.x,l.x,g.x),x.y=this.smallestInAbsValue(a.y,c.y,l.y,g.y),a.x-=x.x,a.y-=x.y,c.x-=x.x,c.y-=x.y,l.x-=x.x,l.y-=x.y,g.x-=x.x,g.y-=x.y},r.prototype.safeHCoordinateIntersection=function(a,c,l,g){var x=null;try{x=St.intersection(a,c,l,g)}catch(_){if(!(_ instanceof ur))throw _;x=r.nearestEndpoint(a,c,l,g)}return x},r.prototype.intersection=function(a,c,l,g){var x=this.intersectionWithNormalization(a,c,l,g);return this.isInSegmentEnvelopes(x)||(x=new k(r.nearestEndpoint(a,c,l,g))),null!==this._precisionModel&&this._precisionModel.makePrecise(x),x},r.prototype.smallestInAbsValue=function(a,c,l,g){var x=a,_=Math.abs(x);return Math.abs(c)<_&&(x=c,_=Math.abs(c)),Math.abs(l)<_&&(x=l,_=Math.abs(l)),Math.abs(g)<_&&(x=g),x},r.prototype.checkDD=function(a,c,l,g,x){var _=He.intersection(a,c,l,g),B=this.isInSegmentEnvelopes(_);it.out.println("DD in env = "+B+" --------------------- "+_),x.distance(_)>1e-4&&it.out.println("Distance = "+x.distance(_))},r.prototype.intersectionWithNormalization=function(a,c,l,g){var x=new k(a),_=new k(c),B=new k(l),ie=new k(g),xe=new k;this.normalizeToEnvCentre(x,_,B,ie,xe);var ke=this.safeHCoordinateIntersection(x,_,B,ie);return ke.x+=xe.x,ke.y+=xe.y,ke},r.prototype.computeCollinearIntersection=function(a,c,l,g){var x=Me.intersects(a,c,l),_=Me.intersects(a,c,g),B=Me.intersects(l,g,a),ie=Me.intersects(l,g,c);return x&&_?(this._intPt[0]=l,this._intPt[1]=g,e.COLLINEAR_INTERSECTION):B&&ie?(this._intPt[0]=a,this._intPt[1]=c,e.COLLINEAR_INTERSECTION):x&&B?(this._intPt[0]=l,this._intPt[1]=a,!l.equals(a)||_||ie?e.COLLINEAR_INTERSECTION:e.POINT_INTERSECTION):x&&ie?(this._intPt[0]=l,this._intPt[1]=c,!l.equals(c)||_||B?e.COLLINEAR_INTERSECTION:e.POINT_INTERSECTION):_&&B?(this._intPt[0]=g,this._intPt[1]=a,!g.equals(a)||x||ie?e.COLLINEAR_INTERSECTION:e.POINT_INTERSECTION):_&&ie?(this._intPt[0]=g,this._intPt[1]=c,!g.equals(c)||x||B?e.COLLINEAR_INTERSECTION:e.POINT_INTERSECTION):e.NO_INTERSECTION},r.prototype.normalizeToEnvCentre=function(a,c,l,g,x){var _=a.xc.x?a.x:c.x,xe=a.y>c.y?a.y:c.y,ke=l.xg.x?l.x:g.x,We=l.y>g.y?l.y:g.y,mr=((B>qe?B:qe)+(xeke?_:ke)+(ie0&&_>0||x<0&&_<0)return e.NO_INTERSECTION;var B=Ne.orientationIndex(l,g,a),ie=Ne.orientationIndex(l,g,c);return B>0&&ie>0||B<0&&ie<0?e.NO_INTERSECTION:0===x&&0===_&&0===B&&0===ie?this.computeCollinearIntersection(a,c,l,g):(0===x||0===_||0===B||0===ie?(this._isProper=!1,a.equals2D(l)||a.equals2D(g)?this._intPt[0]=a:c.equals2D(l)||c.equals2D(g)?this._intPt[0]=c:0===x?this._intPt[0]=new k(l):0===_?this._intPt[0]=new k(g):0===B?this._intPt[0]=new k(a):0===ie&&(this._intPt[0]=new k(c))):(this._isProper=!0,this._intPt[0]=this.intersection(a,c,l,g)),e.POINT_INTERSECTION)},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},r.nearestEndpoint=function(a,c,l,g){var x=a,_=Ne.distancePointLine(a,l,g),B=Ne.distancePointLine(c,l,g);return B<_&&(_=B,x=c),(B=Ne.distancePointLine(l,a,c))<_&&(_=B,x=l),(B=Ne.distancePointLine(g,a,c))<_&&(_=B,x=g),x},r}(At),bn=function(){};bn.prototype.interfaces_=function(){return[]},bn.prototype.getClass=function(){return bn},bn.orientationIndex=function(e,r,a){return bn.signOfDet2x2(r.x-e.x,r.y-e.y,a.x-r.x,a.y-r.y)},bn.signOfDet2x2=function(e,r,a,c){var l=null,g=null,x=null;if(l=1,0===e||0===c)return 0===r||0===a?0:r>0?a>0?-l:l:a>0?l:-l;if(0===r||0===a)return c>0?e>0?l:-l:e>0?-l:l;if(r>0?c>0?r<=c||(l=-l,g=e,e=a,a=g,g=r,r=c,c=g):r<=-c?(l=-l,a=-a,c=-c):(g=e,e=-a,a=g,g=r,r=-c,c=g):c>0?-r<=c?(l=-l,e=-e,r=-r):(g=-e,e=a,a=g,g=-r,r=c,c=g):r>=c?(e=-e,r=-r,a=-a,c=-c):(l=-l,g=-e,e=-a,a=g,g=-r,r=-c,c=g),e>0){if(!(a>0&&e<=a))return l}else{if(a>0||!(e>=a))return-l;l=-l,e=-e,a=-a}for(;;){if((c-=(x=Math.floor(a/e))*r)<0)return-l;if(c>r)return l;if(e>(a-=x*e)+a){if(rc+c)return-l;a=e-a,c=r-c,l=-l}if(0===c)return 0===a?0:-l;if(0===a||(e-=(x=Math.floor(e/a))*a,(r-=x*c)<0))return l;if(r>c)return-l;if(a>e+e){if(cr+r)return l;e=a-e,r=c-r,l=-l}if(0===r)return 0===e?0:l;if(0===e)return-l}};var vr=function(){this._p=null,this._crossingCount=0,this._isPointOnSegment=!1,this._p=arguments[0]};vr.prototype.countSegment=function(e,r){if(e.xc&&(a=r.x,c=e.x),this._p.x>=a&&this._p.x<=c&&(this._isPointOnSegment=!0),null}if(e.y>this._p.y&&r.y<=this._p.y||r.y>this._p.y&&e.y<=this._p.y){var g=e.y-this._p.y,_=r.y-this._p.y,B=bn.signOfDet2x2(e.x-this._p.x,g,r.x-this._p.x,_);if(0===B)return this._isPointOnSegment=!0,null;_0&&this._crossingCount++}},vr.prototype.isPointInPolygon=function(){return this.getLocation()!==L.EXTERIOR},vr.prototype.getLocation=function(){return this._isPointOnSegment?L.BOUNDARY:this._crossingCount%2==1?L.INTERIOR:L.EXTERIOR},vr.prototype.isOnSegment=function(){return this._isPointOnSegment},vr.prototype.interfaces_=function(){return[]},vr.prototype.getClass=function(){return vr},vr.locatePointInRing=function(){if(arguments[0]instanceof k&&Pe(arguments[1],Ee)){for(var r=arguments[1],a=new vr(arguments[0]),c=new k,l=new k,g=1;g1||_<0||_>1)&&(l=!0)}}else l=!0;return l?Fe.min(Ne.distancePointLine(e,a,c),Ne.distancePointLine(r,a,c),Ne.distancePointLine(a,e,r),Ne.distancePointLine(c,e,r)):0},Ne.isPointInRing=function(e,r){return Ne.locatePointInRing(e,r)!==L.EXTERIOR},Ne.computeLength=function(e){var r=e.size();if(r<=1)return 0;var a=0,c=new k;e.getCoordinate(0,c);for(var l=c.x,g=c.y,x=1;xa.y&&(a=g,c=l)}var x=c;do{(x-=1)<0&&(x=r)}while(e[x].equals2D(a)&&x!==c);var _=c;do{_=(_+1)%r}while(e[_].equals2D(a)&&_!==c);var B=e[x],ie=e[_];if(B.equals2D(a)||ie.equals2D(a)||B.equals2D(ie))return!1;var xe=Ne.computeOrientation(B,a,ie);return 0===xe?B.x>ie.x:xe>0},Ne.locatePointInRing=function(e,r){return vr.locatePointInRing(e,r)},Ne.distancePointLinePerpendicular=function(e,r,a){var c=(a.x-r.x)*(a.x-r.x)+(a.y-r.y)*(a.y-r.y);return Math.abs(((r.y-e.y)*(a.x-r.x)-(r.x-e.x)*(a.y-r.y))/c)*Math.sqrt(c)},Ne.computeOrientation=function(e,r,a){return Ne.orientationIndex(e,r,a)},Ne.distancePointLine=function(){if(2===arguments.length){var e=arguments[0],r=arguments[1];if(0===r.length)throw new M("Line array must contain at least one vertex");for(var a=e.distance(r[0]),c=0;c=1?g.distance(_):Math.abs(((x.y-g.y)*(_.x-x.x)-(x.x-g.x)*(_.y-x.y))/B)*Math.sqrt(B)}},Ne.isOnLine=function(e,r){for(var a=new Or,c=1;c0},j.prototype.interfaces_=function(){return[P]},j.prototype.getClass=function(){return j};var _e=function(){};_e.prototype.isInBoundary=function(e){return e>1},_e.prototype.interfaces_=function(){return[P]},_e.prototype.getClass=function(){return _e};var Se=function(){};Se.prototype.isInBoundary=function(e){return 1===e},Se.prototype.interfaces_=function(){return[P]},Se.prototype.getClass=function(){return Se};var De=function(){};De.prototype.add=function(){},De.prototype.addAll=function(){},De.prototype.isEmpty=function(){},De.prototype.iterator=function(){},De.prototype.size=function(){},De.prototype.toArray=function(){},De.prototype.remove=function(){},(Q.prototype=new Error).name="IndexOutOfBoundsException";var be=function(){};be.prototype.hasNext=function(){},be.prototype.next=function(){},be.prototype.remove=function(){};var Ge=function(e){function r(){e.apply(this,arguments)}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.get=function(){},r.prototype.set=function(){},r.prototype.isEmpty=function(){},r}(De);(K.prototype=new Error).name="NoSuchElementException";var ee=function(e){function r(){e.call(this),this.array_=[],arguments[0]instanceof De&&this.addAll(arguments[0])}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.ensureCapacity=function(){},r.prototype.interfaces_=function(){return[e,De]},r.prototype.add=function(a){return 1===arguments.length?this.array_.push(a):this.array_.splice(arguments[0],arguments[1]),!0},r.prototype.clear=function(){this.array_=[]},r.prototype.addAll=function(a){for(var c=a.iterator();c.hasNext();)this.add(c.next());return!0},r.prototype.set=function(a,c){var l=this.array_[a];return this.array_[a]=c,l},r.prototype.iterator=function(){return new Re(this)},r.prototype.get=function(a){if(a<0||a>=this.size())throw new Q;return this.array_[a]},r.prototype.isEmpty=function(){return 0===this.array_.length},r.prototype.size=function(){return this.array_.length},r.prototype.toArray=function(){for(var a=[],c=0,l=this.array_.length;c=1&&this.get(this.size()-1).equals2D(x))return null;e.prototype.add.call(this,x)}else if(arguments[0]instanceof Object&&"boolean"==typeof arguments[1])return this.add(arguments[0],arguments[1]),!0}else if(3===arguments.length){if("boolean"==typeof arguments[2]&&arguments[0]instanceof Array&&"boolean"==typeof arguments[1]){var ie=arguments[0],xe=arguments[1];if(arguments[2])for(var ke=0;ke=0;qe--)this.add(ie[qe],xe);return!0}if("boolean"==typeof arguments[2]&&Number.isInteger(arguments[0])&&arguments[1]instanceof k){var Qe=arguments[0],We=arguments[1];if(!arguments[2]){var tt=this.size();if(tt>0&&(Qe>0&&this.get(Qe-1).equals2D(We)||QeUi&&(mo=-1);for(var aa=Ln;aa!==Ui;aa+=mo)this.add(mr[aa],Xr);return!0}},r.prototype.closeRing=function(){this.size()>0&&this.add(new k(this.get(0)),!1)},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},Object.defineProperties(r,a),r}(ee),Ve=function(){},ot={ForwardComparator:{configurable:!0},BidirectionalComparator:{configurable:!0},coordArrayType:{configurable:!0}};ot.ForwardComparator.get=function(){return Dt},ot.BidirectionalComparator.get=function(){return xt},ot.coordArrayType.get=function(){return new Array(0).fill(null)},Ve.prototype.interfaces_=function(){return[]},Ve.prototype.getClass=function(){return Ve},Ve.isRing=function(e){return!(e.length<4||!e[0].equals2D(e[e.length-1]))},Ve.ptNotInList=function(e,r){for(var a=0;a=e?r:[]},Ve.indexOf=function(e,r){for(var a=0;a0)&&(r=e[a]);return r},Ve.extract=function(e,r,a){r=Fe.clamp(r,0,e.length);var c=(a=Fe.clamp(a,-1,e.length))-r+1;a<0&&(c=0),r>=e.length&&(c=0),ac.length)return 1;if(0===a.length)return 0;var l=Ve.compare(a,c);return Ve.isEqualReversed(a,c)?0:l},xt.prototype.OLDcompare=function(e,r){var a=e,c=r;if(a.lengthc.length)return 1;if(0===a.length)return 0;for(var l=Ve.increasingDirection(a),g=Ve.increasingDirection(c),x=l>0?0:a.length-1,_=g>0?0:a.length-1,B=0;B0))return r.value;r=r.right}}return null},we.prototype.put=function(e,r){if(null===this.root_)return this.root_={key:e,value:r,left:null,right:null,parent:null,color:Pr,getValue:function(){return this.value},getKey:function(){return this.key}},this.size_=1,null;var a,c,l=this.root_;do{if(a=l,(c=e.compareTo(l.key))<0)l=l.left;else{if(!(c>0)){var g=l.value;return l.value=r,g}l=l.right}}while(null!==l);var x={key:e,left:null,right:null,value:r,parent:a,color:Pr,getValue:function(){return this.value},getKey:function(){return this.key}};return c<0?a.left=x:a.right=x,this.fixAfterInsertion(x),this.size_++,null},we.prototype.fixAfterInsertion=function(e){for(e.color=1;null!=e&&e!==this.root_&&1===e.parent.color;)if(ae(e)===he(ae(ae(e)))){var r=m(ae(ae(e)));1===H(r)?(re(ae(e),Pr),re(r,Pr),re(ae(ae(e)),1),e=ae(ae(e))):(e===m(ae(e))&&(e=ae(e),this.rotateLeft(e)),re(ae(e),Pr),re(ae(ae(e)),1),this.rotateRight(ae(ae(e))))}else{var a=he(ae(ae(e)));1===H(a)?(re(ae(e),Pr),re(a,Pr),re(ae(ae(e)),1),e=ae(ae(e))):(e===he(ae(e))&&(e=ae(e),this.rotateRight(e)),re(ae(e),Pr),re(ae(ae(e)),1),this.rotateLeft(ae(ae(e))))}this.root_.color=Pr},we.prototype.values=function(){var e=new ee,r=this.getFirstEntry();if(null!==r)for(e.add(r.value);null!==(r=we.successor(r));)e.add(r.value);return e},we.prototype.entrySet=function(){var e=new qr,r=this.getFirstEntry();if(null!==r)for(e.add(r);null!==(r=we.successor(r));)e.add(r);return e},we.prototype.rotateLeft=function(e){if(null!=e){var r=e.right;e.right=r.left,null!=r.left&&(r.left.parent=e),r.parent=e.parent,null===e.parent?this.root_=r:e.parent.left===e?e.parent.left=r:e.parent.right=r,r.left=e,e.parent=r}},we.prototype.rotateRight=function(e){if(null!=e){var r=e.left;e.left=r.right,null!=r.right&&(r.right.parent=e),r.parent=e.parent,null===e.parent?this.root_=r:e.parent.right===e?e.parent.right=r:e.parent.left=r,r.right=e,e.parent=r}},we.prototype.getFirstEntry=function(){var e=this.root_;if(null!=e)for(;null!=e.left;)e=e.left;return e},we.successor=function(e){if(null===e)return null;if(null!==e.right){for(var r=e.right;null!==r.left;)r=r.left;return r}for(var a=e.parent,c=e;null!==a&&c===a.right;)c=a,a=a.parent;return a},we.prototype.size=function(){return this.size_};var gn=function(){};gn.prototype.interfaces_=function(){return[]},gn.prototype.getClass=function(){return gn},fe.prototype=new oe,(ge.prototype=new fe).contains=function(e){for(var r=0,a=this.array_.length;r=0;){var x=l.substring(0,g);c.add(x),g=(l=l.substring(g+a)).indexOf(r)}l.length>0&&c.add(l);for(var _=new Array(c.size()).fill(null),B=0;B<_.length;B++)_[B]=c.get(B);return _},cn.toString=function(){if(1===arguments.length)return cn.SIMPLE_ORDINATE_FORMAT.format(arguments[0])},cn.spaces=function(e){return cn.chars(" ",e)},Wa.NEWLINE.get=function(){return it.getProperty("line.separator")},Wa.SIMPLE_ORDINATE_FORMAT.get=function(){return new function(){}("0.#")},Object.defineProperties(cn,Wa);var Ir=function(){};Ir.prototype.interfaces_=function(){return[]},Ir.prototype.getClass=function(){return Ir},Ir.copyCoord=function(e,r,a,c){for(var l=Math.min(e.getDimension(),a.getDimension()),g=0;g0)for(var g=l;g0&&c.append(" ");for(var g=0;g0&&c.append(","),c.append(cn.toString(e.getOrdinate(l,g)))}return c.append(")"),c.toString()}},Ir.ensureValidRing=function(e,r){var a=r.size();return 0===a?r:a<=3?Ir.createClosedRing(e,r,4):r.getOrdinate(0,Ee.X)===r.getOrdinate(a-1,Ee.X)&&r.getOrdinate(0,Ee.Y)===r.getOrdinate(a-1,Ee.Y)?r:Ir.createClosedRing(e,r,a+1)},Ir.createClosedRing=function(e,r,a){var c=e.create(a,r.getDimension()),l=r.size();Ir.copy(r,0,c,0,l);for(var g=l;g0&&Ir.reverse(this._points),null}},r.prototype.getCoordinate=function(){return this.isEmpty()?null:this._points.getCoordinate(0)},r.prototype.getBoundaryDimension=function(){return this.isClosed()?pt.FALSE:0},r.prototype.isClosed=function(){return!this.isEmpty()&&this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))},r.prototype.getEndPoint=function(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)},r.prototype.getDimension=function(){return 1},r.prototype.getLength=function(){return Ne.computeLength(this._points)},r.prototype.getNumPoints=function(){return this._points.size()},r.prototype.reverse=function(){var c=this._points.copy();return Ir.reverse(c),this.getFactory().createLineString(c)},r.prototype.compareToSameClass=function(){if(1===arguments.length){for(var c=arguments[0],l=0,g=0;l= 2)");this._points=c},r.prototype.isCoordinate=function(c){for(var l=0;l=1&&this.getCoordinateSequence().size()= 4)")},r.prototype.getGeometryType=function(){return"LinearRing"},r.prototype.copy=function(){return new r(this._points.copy(),this._factory)},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},a.MINIMUM_VALID_SIZE.get=function(){return 4},a.serialVersionUID.get=function(){return-0x3b229e262367a600},Object.defineProperties(r,a),r}(Ar),un=function(e){function r(){e.apply(this,arguments)}e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r;var a={serialVersionUID:{configurable:!0}};return r.prototype.getSortIndex=function(){return nt.SORTINDEX_MULTIPOLYGON},r.prototype.equalsExact=function(){if(2===arguments.length){var c=arguments[0],l=arguments[1];return!!this.isEquivalentClass(c)&&e.prototype.equalsExact.call(this,c,l)}return e.prototype.equalsExact.apply(this,arguments)},r.prototype.getBoundaryDimension=function(){return 1},r.prototype.getDimension=function(){return 2},r.prototype.reverse=function(){for(var l=new Array(this._geometries.length).fill(null),g=0;g0?r.createPoint(a[0]):r.createPoint():e},Ti.prototype.interfaces_=function(){return[si.GeometryEditorOperation]},Ti.prototype.getClass=function(){return Ti};var wa=function(){};wa.prototype.edit=function(e,r){return e instanceof Xi?r.createLinearRing(this.edit(e.getCoordinateSequence(),e)):e instanceof Ar?r.createLineString(this.edit(e.getCoordinateSequence(),e)):e instanceof Tn?r.createPoint(this.edit(e.getCoordinateSequence(),e)):e},wa.prototype.interfaces_=function(){return[si.GeometryEditorOperation]},wa.prototype.getClass=function(){return wa};var yr=function(){if(this._dimension=3,this._coordinates=null,1===arguments.length){if(arguments[0]instanceof Array)this._coordinates=arguments[0],this._dimension=3;else if(Number.isInteger(arguments[0])){var e=arguments[0];this._coordinates=new Array(e).fill(null);for(var r=0;r0){var e=new ze(17*this._coordinates.length);e.append("("),e.append(this._coordinates[0]);for(var r=1;r3&&(c=3),c<2?new yr(a):new yr(a,c)}},Si.prototype.interfaces_=function(){return[J,q]},Si.prototype.getClass=function(){return Si},Si.instance=function(){return Si.instanceObject},Wo.serialVersionUID.get=function(){return-0x38e49fa6cf6f2e00},Wo.instanceObject.get=function(){return new Si},Object.defineProperties(Si,Wo);var w0=function(e){function r(){e.call(this),this.map_=new Map}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.get=function(a){return this.map_.get(a)||null},r.prototype.put=function(a,c){return this.map_.set(a,c),c},r.prototype.values=function(){for(var a=new ee,c=this.map_.values(),l=c.next();!l.done;)a.add(l.value),l=c.next();return a},r.prototype.entrySet=function(){var a=new qr;return this.map_.entries().forEach(function(c){return a.add(c)}),a},r.prototype.size=function(){return this.map_.size()},r}(Ot),ar=function e(){if(this._modelType=null,this._scale=null,0===arguments.length)this._modelType=e.FLOATING;else if(1===arguments.length)if(arguments[0]instanceof Kn){var r=arguments[0];this._modelType=r,r===e.FIXED&&this.setScale(1)}else if("number"==typeof arguments[0]){var a=arguments[0];this._modelType=e.FIXED,this.setScale(a)}else if(arguments[0]instanceof e){var c=arguments[0];this._modelType=c._modelType,this._scale=c._scale}},Ca={serialVersionUID:{configurable:!0},maximumPreciseValue:{configurable:!0}};ar.prototype.equals=function(e){return e instanceof ar&&this._modelType===e._modelType&&this._scale===e._scale},ar.prototype.compareTo=function(e){var r=e,a=this.getMaximumSignificantDigits(),c=r.getMaximumSignificantDigits();return new Ae(a).compareTo(new Ae(c))},ar.prototype.getScale=function(){return this._scale},ar.prototype.isFloating=function(){return this._modelType===ar.FLOATING||this._modelType===ar.FLOATING_SINGLE},ar.prototype.getType=function(){return this._modelType},ar.prototype.toString=function(){var e="UNKNOWN";return this._modelType===ar.FLOATING?e="Floating":this._modelType===ar.FLOATING_SINGLE?e="Floating-Single":this._modelType===ar.FIXED&&(e="Fixed (Scale="+this.getScale()+")"),e},ar.prototype.makePrecise=function(){if("number"==typeof arguments[0]){var e=arguments[0];return I.isNaN(e)||this._modelType===ar.FLOATING_SINGLE?e:this._modelType===ar.FIXED?Math.round(e*this._scale)/this._scale:e}if(arguments[0]instanceof k){var r=arguments[0];if(this._modelType===ar.FLOATING)return null;r.x=this.makePrecise(r.x),r.y=this.makePrecise(r.y)}},ar.prototype.getMaximumSignificantDigits=function(){var e=16;return this._modelType===ar.FLOATING?e=16:this._modelType===ar.FLOATING_SINGLE?e=6:this._modelType===ar.FIXED&&(e=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),e},ar.prototype.setScale=function(e){this._scale=Math.abs(e)},ar.prototype.interfaces_=function(){return[q,T]},ar.prototype.getClass=function(){return ar},ar.mostPrecise=function(e,r){return e.compareTo(r)>=0?e:r},Ca.serialVersionUID.get=function(){return 0x6bee6404e9a25c00},Ca.maximumPreciseValue.get=function(){return 9007199254740992},Object.defineProperties(ar,Ca);var Kn=function e(r){this._name=r||null,e.nameToTypeMap.put(r,this)},bs={serialVersionUID:{configurable:!0},nameToTypeMap:{configurable:!0}};Kn.prototype.readResolve=function(){return Kn.nameToTypeMap.get(this._name)},Kn.prototype.toString=function(){return this._name},Kn.prototype.interfaces_=function(){return[q]},Kn.prototype.getClass=function(){return Kn},bs.serialVersionUID.get=function(){return-552860263173159e4},bs.nameToTypeMap.get=function(){return new w0},Object.defineProperties(Kn,bs),ar.Type=Kn,ar.FIXED=new Kn("FIXED"),ar.FLOATING=new Kn("FLOATING"),ar.FLOATING_SINGLE=new Kn("FLOATING SINGLE");var kt=function e(){this._precisionModel=new ar,this._SRID=0,this._coordinateSequenceFactory=e.getDefaultCoordinateSequenceFactory(),0===arguments.length||(1===arguments.length?Pe(arguments[0],J)?this._coordinateSequenceFactory=arguments[0]:arguments[0]instanceof ar&&(this._precisionModel=arguments[0]):2===arguments.length?(this._precisionModel=arguments[0],this._SRID=arguments[1]):3===arguments.length&&(this._precisionModel=arguments[0],this._SRID=arguments[1],this._coordinateSequenceFactory=arguments[2]))},da={serialVersionUID:{configurable:!0}};kt.prototype.toGeometry=function(e){return e.isNull()?this.createPoint(null):e.getMinX()===e.getMaxX()&&e.getMinY()===e.getMaxY()?this.createPoint(new k(e.getMinX(),e.getMinY())):e.getMinX()===e.getMaxX()||e.getMinY()===e.getMaxY()?this.createLineString([new k(e.getMinX(),e.getMinY()),new k(e.getMaxX(),e.getMaxY())]):this.createPolygon(this.createLinearRing([new k(e.getMinX(),e.getMinY()),new k(e.getMinX(),e.getMaxY()),new k(e.getMaxX(),e.getMaxY()),new k(e.getMaxX(),e.getMinY()),new k(e.getMinX(),e.getMinY())]),null)},kt.prototype.createLineString=function(e){return e?e instanceof Array?new Ar(this.getCoordinateSequenceFactory().create(e),this):Pe(e,Ee)?new Ar(e,this):void 0:new Ar(this.getCoordinateSequenceFactory().create([]),this)},kt.prototype.createMultiLineString=function(){return 0===arguments.length?new Ii(null,this):1===arguments.length?new Ii(arguments[0],this):void 0},kt.prototype.buildGeometry=function(e){for(var r=null,a=!1,c=!1,l=e.iterator();l.hasNext();){var g=l.next(),x=g.getClass();null===r&&(r=x),x!==r&&(a=!0),g.isGeometryCollectionOrDerived()&&(c=!0)}if(null===r)return this.createGeometryCollection();if(a||c)return this.createGeometryCollection(kt.toGeometryArray(e));var _=e.iterator().next();if(e.size()>1){if(_ instanceof Nr)return this.createMultiPolygon(kt.toPolygonArray(e));if(_ instanceof Ar)return this.createMultiLineString(kt.toLineStringArray(e));if(_ instanceof Tn)return this.createMultiPoint(kt.toPointArray(e));rt.shouldNeverReachHere("Unhandled class: "+_.getClass().getName())}return _},kt.prototype.createMultiPointFromCoords=function(e){return this.createMultiPoint(null!==e?this.getCoordinateSequenceFactory().create(e):null)},kt.prototype.createPoint=function(){if(0===arguments.length)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof k){var e=arguments[0];return this.createPoint(null!==e?this.getCoordinateSequenceFactory().create([e]):null)}if(Pe(arguments[0],Ee))return new Tn(arguments[0],this)}},kt.prototype.getCoordinateSequenceFactory=function(){return this._coordinateSequenceFactory},kt.prototype.createPolygon=function(){if(0===arguments.length)return new Nr(null,null,this);if(1===arguments.length){if(Pe(arguments[0],Ee))return this.createPolygon(this.createLinearRing(arguments[0]));if(arguments[0]instanceof Array)return this.createPolygon(this.createLinearRing(arguments[0]));if(arguments[0]instanceof Xi)return this.createPolygon(arguments[0],null)}else if(2===arguments.length)return new Nr(arguments[0],arguments[1],this)},kt.prototype.getSRID=function(){return this._SRID},kt.prototype.createGeometryCollection=function(){return 0===arguments.length?new Fr(null,this):1===arguments.length?new Fr(arguments[0],this):void 0},kt.prototype.createGeometry=function(e){return new si(this).edit(e,{edit:function(){if(2===arguments.length)return this._coordinateSequenceFactory.create(arguments[0])}})},kt.prototype.getPrecisionModel=function(){return this._precisionModel},kt.prototype.createLinearRing=function(){if(0===arguments.length)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var e=arguments[0];return this.createLinearRing(null!==e?this.getCoordinateSequenceFactory().create(e):null)}if(Pe(arguments[0],Ee))return new Xi(arguments[0],this)}},kt.prototype.createMultiPolygon=function(){return 0===arguments.length?new un(null,this):1===arguments.length?new un(arguments[0],this):void 0},kt.prototype.createMultiPoint=function(){if(0===arguments.length)return new Bn(null,this);if(1===arguments.length){if(arguments[0]instanceof Array)return new Bn(arguments[0],this);if(arguments[0]instanceof Array){var r=arguments[0];return this.createMultiPoint(null!==r?this.getCoordinateSequenceFactory().create(r):null)}if(Pe(arguments[0],Ee)){var a=arguments[0];if(null===a)return this.createMultiPoint(new Array(0).fill(null));for(var c=new Array(a.size()).fill(null),l=0;l=this.size())throw new Error;return this.array_[e]},V.prototype.push=function(e){return this.array_.push(e),e},V.prototype.pop=function(e){if(0===this.array_.length)throw new A;return this.array_.pop()},V.prototype.peek=function(){if(0===this.array_.length)throw new A;return this.array_[this.array_.length-1]},V.prototype.empty=function(){return 0===this.array_.length},V.prototype.isEmpty=function(){return this.empty()},V.prototype.search=function(e){return this.array_.indexOf(e)},V.prototype.size=function(){return this.array_.length},V.prototype.toArray=function(){for(var e=[],r=0,a=this.array_.length;r0&&this._minIndexthis._minCoord.y&&a.y>this._minCoord.y&&c===Ne.CLOCKWISE)&&(l=!0),l&&(this._minIndex=this._minIndex-1)},wi.prototype.getRightmostSideOfSegment=function(e,r){var a=e.getEdge().getCoordinates();if(r<0||r+1>=a.length||a[r].y===a[r+1].y)return-1;var c=Le.LEFT;return a[r].ythis._minCoord.x)&&(this._minDe=e,this._minIndex=a,this._minCoord=r[a])},wi.prototype.findRightmostEdgeAtNode=function(){var e=this._minDe.getNode().getEdges();this._minDe=e.getRightmostEdge(),this._minDe.isForward()||(this._minDe=this._minDe.getSym(),this._minIndex=this._minDe.getEdge().getCoordinates().length-1)},wi.prototype.findEdge=function(e){for(var r=e.iterator();r.hasNext();){var a=r.next();a.isForward()&&this.checkForRightmostCoordinate(a)}rt.isTrue(0!==this._minIndex||this._minCoord.equals(this._minDe.getCoordinate()),"inconsistency in rightmost processing"),0===this._minIndex?this.findRightmostEdgeAtNode():this.findRightmostEdgeAtVertex(),this._orientedDe=this._minDe,this.getRightmostSide(this._minDe,this._minIndex)===Le.LEFT&&(this._orientedDe=this._minDe.getSym())},wi.prototype.interfaces_=function(){return[]},wi.prototype.getClass=function(){return wi};var Hi=function(e){function r(a,c){e.call(this,r.msgWithCoord(a,c)),this.pt=c?new k(c):null,this.name="TopologyException"}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.getCoordinate=function(){return this.pt},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},r.msgWithCoord=function(a,c){return c?a:a+" [ "+c+" ]"},r}(It),$a=function(){this.array_=[]};$a.prototype.addLast=function(e){this.array_.push(e)},$a.prototype.removeFirst=function(){return this.array_.shift()},$a.prototype.isEmpty=function(){return 0===this.array_.length};var $r=function(){this._finder=null,this._dirEdgeList=new ee,this._nodes=new ee,this._rightMostCoord=null,this._env=null,this._finder=new wi};$r.prototype.clearVisitedEdges=function(){for(var e=this._dirEdgeList.iterator();e.hasNext();)e.next().setVisited(!1)},$r.prototype.getRightmostCoordinate=function(){return this._rightMostCoord},$r.prototype.computeNodeDepth=function(e){for(var r=null,a=e.getEdges().iterator();a.hasNext();){var c=a.next();if(c.isVisited()||c.getSym().isVisited()){r=c;break}}if(null===r)throw new Hi("unable to find edge to compute depths at "+e.getCoordinate());e.getEdges().computeDepths(r);for(var l=e.getEdges().iterator();l.hasNext();){var g=l.next();g.setVisited(!0),this.copySymDepths(g)}},$r.prototype.computeDepth=function(e){this.clearVisitedEdges();var r=this._finder.getEdge();r.setEdgeDepths(Le.RIGHT,e),this.copySymDepths(r),this.computeDepths(r)},$r.prototype.create=function(e){this.addReachable(e),this._finder.findEdge(this._dirEdgeList),this._rightMostCoord=this._finder.getCoordinate()},$r.prototype.findResultEdges=function(){for(var e=this._dirEdgeList.iterator();e.hasNext();){var r=e.next();r.getDepth(Le.RIGHT)>=1&&r.getDepth(Le.LEFT)<=0&&!r.isInteriorAreaEdge()&&r.setInResult(!0)}},$r.prototype.computeDepths=function(e){var r=new qr,a=new $a,c=e.getNode();for(a.addLast(c),r.add(c),e.setVisited(!0);!a.isEmpty();){var l=a.removeFirst();r.add(l),this.computeNodeDepth(l);for(var g=l.getEdges().iterator();g.hasNext();){var x=g.next().getSym();if(!x.isVisited()){var _=x.getNode();r.contains(_)||(a.addLast(_),r.add(_))}}}},$r.prototype.compareTo=function(e){return this._rightMostCoord.xe._rightMostCoord.x?1:0},$r.prototype.getEnvelope=function(){if(null===this._env){for(var e=new Me,r=this._dirEdgeList.iterator();r.hasNext();)for(var a=r.next().getEdge().getCoordinates(),c=0;cthis.location.length){var r=new Array(3).fill(null);r[Le.ON]=this.location[Le.ON],r[Le.LEFT]=L.NONE,r[Le.RIGHT]=L.NONE,this.location=r}for(var a=0;a1&&e.append(L.toLocationSymbol(this.location[Le.LEFT])),e.append(L.toLocationSymbol(this.location[Le.ON])),this.location.length>1&&e.append(L.toLocationSymbol(this.location[Le.RIGHT])),e.toString()},wr.prototype.setLocations=function(e,r,a){this.location[Le.ON]=e,this.location[Le.LEFT]=r,this.location[Le.RIGHT]=a},wr.prototype.get=function(e){return e1},wr.prototype.isAnyNull=function(){for(var e=0;ethis._maxNodeDegree&&(this._maxNodeDegree=r),e=this.getNext(e)}while(e!==this._startDe);this._maxNodeDegree*=2},Er.prototype.addPoints=function(e,r,a){var c=e.getCoordinates();if(r){var l=1;a&&(l=0);for(var g=l;g=0;_--)this._pts.add(c[_])}},Er.prototype.isHole=function(){return this._isHole},Er.prototype.setInResult=function(){var e=this._startDe;do{e.getEdge().setInResult(!0),e=e.getNext()}while(e!==this._startDe)},Er.prototype.containsPoint=function(e){var r=this.getLinearRing();if(!r.getEnvelopeInternal().contains(e)||!Ne.isPointInRing(e,r.getCoordinates()))return!1;for(var a=this._holes.iterator();a.hasNext();)if(a.next().containsPoint(e))return!1;return!0},Er.prototype.addHole=function(e){this._holes.add(e)},Er.prototype.isShell=function(){return null===this._shell},Er.prototype.getLabel=function(){return this._label},Er.prototype.getEdges=function(){return this._edges},Er.prototype.getMaxNodeDegree=function(){return this._maxNodeDegree<0&&this.computeMaxNodeDegree(),this._maxNodeDegree},Er.prototype.getShell=function(){return this._shell},Er.prototype.mergeLabel=function(){if(1===arguments.length){var e=arguments[0];this.mergeLabel(e,0),this.mergeLabel(e,1)}else if(2===arguments.length){var a=arguments[1],c=arguments[0].getLocation(a,Le.RIGHT);if(c===L.NONE)return null;if(this._label.getLocation(a)===L.NONE)return this._label.setLocation(a,c),null}},Er.prototype.setShell=function(e){this._shell=e,null!==e&&e.addHole(this)},Er.prototype.toPolygon=function(e){for(var r=new Array(this._holes.size()).fill(null),a=0;a=2,"found partial label"),this.computeIM(e)},Jn.prototype.isInResult=function(){return this._isInResult},Jn.prototype.isVisited=function(){return this._isVisited},Jn.prototype.interfaces_=function(){return[]},Jn.prototype.getClass=function(){return Jn};var to=function(e){function r(){e.call(this),this._coord=null,this._edges=null;var c=arguments[1];this._coord=arguments[0],this._edges=c,this._label=new lr(0,L.NONE)}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.isIncidentEdgeInResult=function(){for(var a=this.getEdges().getEdges().iterator();a.hasNext();)if(a.next().getEdge().isInResult())return!0;return!1},r.prototype.isIsolated=function(){return 1===this._label.getGeometryCount()},r.prototype.getCoordinate=function(){return this._coord},r.prototype.print=function(a){a.println("node "+this._coord+" lbl: "+this._label)},r.prototype.computeIM=function(a){},r.prototype.computeMergedLocation=function(a,c){var l=L.NONE;if(l=this._label.getLocation(c),!a.isNull(c)){var g=a.getLocation(c);l!==L.BOUNDARY&&(l=g)}return l},r.prototype.setLabel=function(){if(2!==arguments.length)return e.prototype.setLabel.apply(this,arguments);var a=arguments[0],c=arguments[1];null===this._label?this._label=new lr(a,c):this._label.setLocation(a,c)},r.prototype.getEdges=function(){return this._edges},r.prototype.mergeLabel=function(){if(arguments[0]instanceof r)this.mergeLabel(arguments[0]._label);else if(arguments[0]instanceof lr)for(var c=arguments[0],l=0;l<2;l++){var g=this.computeMergedLocation(c,l);this._label.getLocation(l)===L.NONE&&this._label.setLocation(l,g)}},r.prototype.add=function(a){this._edges.insert(a),a.setNode(this)},r.prototype.setLabelBoundary=function(a){if(null===this._label)return null;var c=L.NONE;null!==this._label&&(c=this._label.getLocation(a)),this._label.setLocation(a,c===L.BOUNDARY?L.INTERIOR:L.BOUNDARY)},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},r}(Jn),Oi=function(){this.nodeMap=new we,this.nodeFact=null,this.nodeFact=arguments[0]};Oi.prototype.find=function(e){return this.nodeMap.get(e)},Oi.prototype.addNode=function(){if(arguments[0]instanceof k){var e=arguments[0],r=this.nodeMap.get(e);return null===r&&(r=this.nodeFact.createNode(e),this.nodeMap.put(e,r)),r}if(arguments[0]instanceof to){var a=arguments[0],c=this.nodeMap.get(a.getCoordinate());return null===c?(this.nodeMap.put(a.getCoordinate(),a),a):(c.mergeLabel(a),c)}},Oi.prototype.print=function(e){for(var r=this.iterator();r.hasNext();)r.next().print(e)},Oi.prototype.iterator=function(){return this.nodeMap.values().iterator()},Oi.prototype.values=function(){return this.nodeMap.values()},Oi.prototype.getBoundaryNodes=function(e){for(var r=new ee,a=this.iterator();a.hasNext();){var c=a.next();c.getLabel().getLocation(e)===L.BOUNDARY&&r.add(c)}return r},Oi.prototype.add=function(e){var r=e.getCoordinate();this.addNode(r).add(e)},Oi.prototype.interfaces_=function(){return[]},Oi.prototype.getClass=function(){return Oi};var pr=function(){},ka={NE:{configurable:!0},NW:{configurable:!0},SW:{configurable:!0},SE:{configurable:!0}};pr.prototype.interfaces_=function(){return[]},pr.prototype.getClass=function(){return pr},pr.isNorthern=function(e){return e===pr.NE||e===pr.NW},pr.isOpposite=function(e,r){return e!==r&&(e-r+4)%4==2},pr.commonHalfPlane=function(e,r){if(e===r)return e;if((e-r+4)%4==2)return-1;var a=er?e:r)?3:a},pr.isInHalfPlane=function(e,r){return r===pr.SE?e===pr.SE||e===pr.SW:e===r||e===r+1},pr.quadrant=function(){if("number"==typeof arguments[0]&&"number"==typeof arguments[1]){var e=arguments[0],r=arguments[1];if(0===e&&0===r)throw new M("Cannot compute the quadrant for point ( "+e+", "+r+" )");return e>=0?r>=0?pr.NE:pr.SE:r>=0?pr.NW:pr.SW}if(arguments[0]instanceof k&&arguments[1]instanceof k){var a=arguments[0],c=arguments[1];if(c.x===a.x&&c.y===a.y)throw new M("Cannot compute the quadrant for two identical points "+a);return c.x>=a.x?c.y>=a.y?pr.NE:pr.SE:c.y>=a.y?pr.NW:pr.SW}},ka.NE.get=function(){return 0},ka.NW.get=function(){return 1},ka.SW.get=function(){return 2},ka.SE.get=function(){return 3},Object.defineProperties(pr,ka);var Sn=function(){if(this._edge=null,this._label=null,this._node=null,this._p0=null,this._p1=null,this._dx=null,this._dy=null,this._quadrant=null,1===arguments.length)this._edge=arguments[0];else if(3===arguments.length){var a=arguments[1],c=arguments[2];this._edge=arguments[0],this.init(a,c),this._label=null}else if(4===arguments.length){var g=arguments[1],x=arguments[2],_=arguments[3];this._edge=arguments[0],this.init(g,x),this._label=_}};Sn.prototype.compareDirection=function(e){return this._dx===e._dx&&this._dy===e._dy?0:this._quadrant>e._quadrant?1:this._quadrant2){g.linkDirectedEdgesForMinimalEdgeRings();var x=g.buildMinimalRings(),_=this.findShell(x);null!==_?(this.placePolygonHoles(_,x),r.add(_)):a.addAll(x)}else c.add(g)}return c},Wr.prototype.containsPoint=function(e){for(var r=this._shellList.iterator();r.hasNext();)if(r.next().containsPoint(e))return!0;return!1},Wr.prototype.buildMaximalEdgeRings=function(e){for(var r=new ee,a=e.iterator();a.hasNext();){var c=a.next();if(c.isInResult()&&c.getLabel().isArea()&&null===c.getEdgeRing()){var l=new Yo(c,this._geometryFactory);r.add(l),l.setInResult()}}return r},Wr.prototype.placePolygonHoles=function(e,r){for(var a=r.iterator();a.hasNext();){var c=a.next();c.isHole()&&c.setShell(e)}},Wr.prototype.getPolygons=function(){return this.computePolygons(this._shellList)},Wr.prototype.findEdgeRingContaining=function(e,r){for(var a=e.getLinearRing(),c=a.getEnvelopeInternal(),l=a.getCoordinateN(0),g=null,x=null,_=r.iterator();_.hasNext();){var B=_.next(),ie=B.getLinearRing(),xe=ie.getEnvelopeInternal();null!==g&&(x=g.getLinearRing().getEnvelopeInternal());var ke=!1;xe.contains(c)&&Ne.isPointInRing(l,ie.getCoordinates())&&(ke=!0),ke&&(null===g||x.contains(xe))&&(g=B)}return g},Wr.prototype.findShell=function(e){for(var r=0,a=null,c=e.iterator();c.hasNext();){var l=c.next();l.isHole()||(a=l,r++)}return rt.isTrue(r<=1,"found two shells in MinimalEdgeRing list"),a},Wr.prototype.add=function(){if(1===arguments.length){var e=arguments[0];this.add(e.getEdgeEnds(),e.getNodes())}else if(2===arguments.length){var r=arguments[0];Tr.linkResultDirectedEdges(arguments[1]);var c=this.buildMaximalEdgeRings(r),l=new ee,g=this.buildMinimalEdgeRings(c,this._shellList,l);this.sortShellsAndHoles(g,this._shellList,l),this.placeFreeHoles(this._shellList,l)}},Wr.prototype.interfaces_=function(){return[]},Wr.prototype.getClass=function(){return Wr};var Vn=function(){};Vn.prototype.getBounds=function(){},Vn.prototype.interfaces_=function(){return[]},Vn.prototype.getClass=function(){return Vn};var ci=function(){this._bounds=null,this._item=null;var r=arguments[1];this._bounds=arguments[0],this._item=r};ci.prototype.getItem=function(){return this._item},ci.prototype.getBounds=function(){return this._bounds},ci.prototype.interfaces_=function(){return[Vn,q]},ci.prototype.getClass=function(){return ci};var ro=function(){this._size=null,this._items=null,this._size=0,this._items=new ee,this._items.add(null)};ro.prototype.poll=function(){if(this.isEmpty())return null;var e=this._items.get(1);return this._items.set(1,this._items.get(this._size)),this._size-=1,this.reorder(1),e},ro.prototype.size=function(){return this._size},ro.prototype.reorder=function(e){for(var r=null,a=this._items.get(e);2*e<=this._size&&((r=2*e)!==this._size&&this._items.get(r+1).compareTo(this._items.get(r))<0&&r++,this._items.get(r).compareTo(a)<0);e=r)this._items.set(e,this._items.get(r));this._items.set(e,a)},ro.prototype.clear=function(){this._size=0,this._items.clear()},ro.prototype.isEmpty=function(){return 0===this._size},ro.prototype.add=function(e){this._items.add(null),this._size+=1;var r=this._size;for(this._items.set(0,e);e.compareTo(this._items.get(Math.trunc(r/2)))<0;r/=2)this._items.set(r,this._items.get(Math.trunc(r/2)));this._items.set(r,e)},ro.prototype.interfaces_=function(){return[]},ro.prototype.getClass=function(){return ro};var no=function(){};no.prototype.visitItem=function(e){},no.prototype.interfaces_=function(){return[]},no.prototype.getClass=function(){return no};var jo=function(){};jo.prototype.insert=function(e,r){},jo.prototype.remove=function(e,r){},jo.prototype.query=function(){},jo.prototype.interfaces_=function(){return[]},jo.prototype.getClass=function(){return jo};var Sr=function(){this._childBoundables=new ee,this._bounds=null,this._level=null,0!==arguments.length&&1===arguments.length&&(this._level=arguments[0])},k0={serialVersionUID:{configurable:!0}};Sr.prototype.getLevel=function(){return this._level},Sr.prototype.size=function(){return this._childBoundables.size()},Sr.prototype.getChildBoundables=function(){return this._childBoundables},Sr.prototype.addChildBoundable=function(e){rt.isTrue(null===this._bounds),this._childBoundables.add(e)},Sr.prototype.isEmpty=function(){return this._childBoundables.isEmpty()},Sr.prototype.getBounds=function(){return null===this._bounds&&(this._bounds=this.computeBounds()),this._bounds},Sr.prototype.interfaces_=function(){return[Vn,q]},Sr.prototype.getClass=function(){return Sr},k0.serialVersionUID.get=function(){return 0x5a1e55ec41369800},Object.defineProperties(Sr,k0);var Ci=function(){};Ci.reverseOrder=function(){return{compare:function(e,r){return r.compareTo(e)}}},Ci.min=function(e){return Ci.sort(e),e.get(0)},Ci.sort=function(e,r){var a=e.toArray();r?_r.sort(a,r):_r.sort(a);for(var c=e.iterator(),l=0,g=a.length;lMr.area(this._boundable2)?(this.expand(this._boundable1,this._boundable2,e,r),null):(this.expand(this._boundable2,this._boundable1,e,r),null);if(a)return this.expand(this._boundable1,this._boundable2,e,r),null;if(c)return this.expand(this._boundable2,this._boundable1,e,r),null;throw new M("neither boundable is composite")},Mr.prototype.isLeaves=function(){return!(Mr.isComposite(this._boundable1)||Mr.isComposite(this._boundable2))},Mr.prototype.compareTo=function(e){return this._distancee._distance?1:0},Mr.prototype.expand=function(e,r,a,c){for(var l=e.getChildBoundables().iterator();l.hasNext();){var g=l.next(),x=new Mr(g,r,this._itemDistance);x.getDistance()1,"Node capacity must be greater than 1"),this._nodeCapacity=a}},_a={IntersectsOp:{configurable:!0},serialVersionUID:{configurable:!0},DEFAULT_NODE_CAPACITY:{configurable:!0}};Br.prototype.getNodeCapacity=function(){return this._nodeCapacity},Br.prototype.lastNode=function(e){return e.get(e.size()-1)},Br.prototype.size=function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.size(this._root));if(1===arguments.length){for(var e=0,r=arguments[0].getChildBoundables().iterator();r.hasNext();){var a=r.next();a instanceof Sr?e+=this.size(a):a instanceof ci&&(e+=1)}return e}},Br.prototype.removeItem=function(e,r){for(var a=null,c=e.getChildBoundables().iterator();c.hasNext();){var l=c.next();l instanceof ci&&l.getItem()===r&&(a=l)}return null!==a&&(e.getChildBoundables().remove(a),!0)},Br.prototype.itemsTree=function(){if(0===arguments.length){this.build();var e=this.itemsTree(this._root);return null===e?new ee:e}if(1===arguments.length){for(var r=arguments[0],a=new ee,c=r.getChildBoundables().iterator();c.hasNext();){var l=c.next();if(l instanceof Sr){var g=this.itemsTree(l);null!==g&&a.add(g)}else l instanceof ci?a.add(l.getItem()):rt.shouldNeverReachHere()}return a.size()<=0?null:a}},Br.prototype.insert=function(e,r){rt.isTrue(!this._built,"Cannot insert items into an STR packed R-tree after it has been built."),this._itemBoundables.add(new ci(e,r))},Br.prototype.boundablesAtLevel=function(){if(1===arguments.length){var e=arguments[0],r=new ee;return this.boundablesAtLevel(e,this._root,r),r}if(3===arguments.length){var a=arguments[0],c=arguments[1],l=arguments[2];if(rt.isTrue(a>-2),c.getLevel()===a)return l.add(c),null;for(var g=c.getChildBoundables().iterator();g.hasNext();){var x=g.next();x instanceof Sr?this.boundablesAtLevel(a,x,l):(rt.isTrue(x instanceof ci),-1===a&&l.add(x))}return null}},Br.prototype.query=function(){if(1===arguments.length){var e=arguments[0];this.build();var r=new ee;return this.isEmpty()||this.getIntersectsOp().intersects(this._root.getBounds(),e)&&this.query(e,this._root,r),r}if(2===arguments.length){var a=arguments[0],c=arguments[1];if(this.build(),this.isEmpty())return null;this.getIntersectsOp().intersects(this._root.getBounds(),a)&&this.query(a,this._root,c)}else if(3===arguments.length)if(Pe(arguments[2],no)&&arguments[0]instanceof Object&&arguments[1]instanceof Sr)for(var l=arguments[0],x=arguments[2],_=arguments[1].getChildBoundables(),B=0;B<_.size();B++){var ie=_.get(B);this.getIntersectsOp().intersects(ie.getBounds(),l)&&(ie instanceof Sr?this.query(l,ie,x):ie instanceof ci?x.visitItem(ie.getItem()):rt.shouldNeverReachHere())}else if(Pe(arguments[2],Ge)&&arguments[0]instanceof Object&&arguments[1]instanceof Sr)for(var xe=arguments[0],qe=arguments[2],Qe=arguments[1].getChildBoundables(),We=0;Wee&&(e=c)}}return e+1}},Br.prototype.createParentBoundables=function(e,r){rt.isTrue(!e.isEmpty());var a=new ee;a.add(this.createNode(r));var c=new ee(e);Ci.sort(c,this.getComparator());for(var l=c.iterator();l.hasNext();){var g=l.next();this.lastNode(a).getChildBoundables().size()===this.getNodeCapacity()&&a.add(this.createNode(r)),this.lastNode(a).addChildBoundable(g)}return a},Br.prototype.isEmpty=function(){return this._built?this._root.isEmpty():this._itemBoundables.isEmpty()},Br.prototype.interfaces_=function(){return[q]},Br.prototype.getClass=function(){return Br},Br.compareDoubles=function(e,r){return e>r?1:e0);for(var g=new ee,x=0;x0;){var Qe=qe.poll(),We=Qe.getDistance();if(We>=xe)break;Qe.isLeaves()?(xe=We,ke=Qe):Qe.expandToQueue(qe,xe)}return[ke.getBoundable(0).getItem(),ke.getBoundable(1).getItem()]}}else if(3===arguments.length){var Xr=arguments[2],Ln=new ci(arguments[0],arguments[1]),Ui=new Mr(this.getRoot(),Ln,Xr);return this.nearestNeighbour(Ui)[0]}},r.prototype.interfaces_=function(){return[jo,q]},r.prototype.getClass=function(){return r},r.centreX=function(c){return r.avg(c.getMinX(),c.getMaxX())},r.avg=function(c,l){return(c+l)/2},r.centreY=function(c){return r.avg(c.getMinY(),c.getMaxY())},a.STRtreeNode.get=function(){return Ka},a.serialVersionUID.get=function(){return 0x39920f7d5f261e0},a.xComparator.get=function(){return{interfaces_:function(){return[F]},compare:function(c,l){return e.compareDoubles(r.centreX(c.getBounds()),r.centreX(l.getBounds()))}}},a.yComparator.get=function(){return{interfaces_:function(){return[F]},compare:function(c,l){return e.compareDoubles(r.centreY(c.getBounds()),r.centreY(l.getBounds()))}}},a.intersectsOp.get=function(){return{interfaces_:function(){return[e.IntersectsOp]},intersects:function(c,l){return c.intersects(l)}}},a.DEFAULT_NODE_CAPACITY.get=function(){return 10},Object.defineProperties(r,a),r}(Br),Ka=function(e){function r(){e.call(this,arguments[0])}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.computeBounds=function(){for(var a=null,c=this.getChildBoundables().iterator();c.hasNext();){var l=c.next();null===a?a=new Me(l.getBounds()):a.expandToInclude(l.getBounds())}return a},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},r}(Sr),xn=function(){};xn.prototype.interfaces_=function(){return[]},xn.prototype.getClass=function(){return xn},xn.relativeSign=function(e,r){return er?1:0},xn.compare=function(e,r,a){if(r.equals2D(a))return 0;var c=xn.relativeSign(r.x,a.x),l=xn.relativeSign(r.y,a.y);switch(e){case 0:return xn.compareValue(c,l);case 1:return xn.compareValue(l,c);case 2:return xn.compareValue(l,-c);case 3:return xn.compareValue(-c,l);case 4:return xn.compareValue(-c,-l);case 5:return xn.compareValue(-l,-c);case 6:return xn.compareValue(-l,c);case 7:return xn.compareValue(c,-l)}return rt.shouldNeverReachHere("invalid octant value"),0},xn.compareValue=function(e,r){return e<0?-1:e>0?1:r<0?-1:r>0?1:0};var Ei=function(){this._segString=null,this.coord=null,this.segmentIndex=null,this._segmentOctant=null,this._isInterior=null;var e=arguments[0],r=arguments[1],a=arguments[2],c=arguments[3];this._segString=e,this.coord=new k(r),this.segmentIndex=a,this._segmentOctant=c,this._isInterior=!r.equals2D(e.getCoordinate(a))};Ei.prototype.getCoordinate=function(){return this.coord},Ei.prototype.print=function(e){e.print(this.coord),e.print(" seg # = "+this.segmentIndex)},Ei.prototype.compareTo=function(e){var r=e;return this.segmentIndexr.segmentIndex?1:this.coord.equals2D(r.coord)?0:xn.compare(this._segmentOctant,this.coord,r.coord)},Ei.prototype.isEndPoint=function(e){return 0===this.segmentIndex&&!this._isInterior||this.segmentIndex===e},Ei.prototype.isInterior=function(){return this._isInterior},Ei.prototype.interfaces_=function(){return[T]},Ei.prototype.getClass=function(){return Ei};var wn=function(){this._nodeMap=new we,this._edge=null,this._edge=arguments[0]};wn.prototype.getSplitCoordinates=function(){var e=new Be;this.addEndpoints();for(var r=this.iterator(),a=r.next();r.hasNext();){var c=r.next();this.addEdgeCoordinates(a,c,e),a=c}return e.toCoordinateArray()},wn.prototype.addCollapsedNodes=function(){var e=new ee;this.findCollapsesFromInsertedNodes(e),this.findCollapsesFromExistingVertices(e);for(var r=e.iterator();r.hasNext();){var a=r.next().intValue();this.add(this._edge.getCoordinate(a),a)}},wn.prototype.print=function(e){e.println("Intersections:");for(var r=this.iterator();r.hasNext();)r.next().print(e)},wn.prototype.findCollapsesFromExistingVertices=function(e){for(var r=0;r=0?r>=0?a>=c?0:1:a>=c?7:6:r>=0?a>=c?3:2:a>=c?4:5}if(arguments[0]instanceof k&&arguments[1]instanceof k){var l=arguments[0],g=arguments[1],x=g.x-l.x,_=g.y-l.y;if(0===x&&0===_)throw new M("Cannot compute the octant for two identical points "+l);return Mo.octant(x,_)}};var Mi=function(){};Mi.prototype.getCoordinates=function(){},Mi.prototype.size=function(){},Mi.prototype.getCoordinate=function(e){},Mi.prototype.isClosed=function(){},Mi.prototype.setData=function(e){},Mi.prototype.getData=function(){},Mi.prototype.interfaces_=function(){return[]},Mi.prototype.getClass=function(){return Mi};var ua=function(){};ua.prototype.addIntersection=function(e,r){},ua.prototype.interfaces_=function(){return[Mi]},ua.prototype.getClass=function(){return ua};var Vr=function(){this._nodeList=new wn(this),this._pts=null,this._data=null;var r=arguments[1];this._pts=arguments[0],this._data=r};Vr.prototype.getCoordinates=function(){return this._pts},Vr.prototype.size=function(){return this._pts.length},Vr.prototype.getCoordinate=function(e){return this._pts[e]},Vr.prototype.isClosed=function(){return this._pts[0].equals(this._pts[this._pts.length-1])},Vr.prototype.getSegmentOctant=function(e){return e===this._pts.length-1?-1:this.safeOctant(this.getCoordinate(e),this.getCoordinate(e+1))},Vr.prototype.setData=function(e){this._data=e},Vr.prototype.safeOctant=function(e,r){return e.equals2D(r)?0:Mo.octant(e,r)},Vr.prototype.getData=function(){return this._data},Vr.prototype.addIntersection=function(){if(2===arguments.length)this.addIntersectionNode(arguments[0],arguments[1]);else if(4===arguments.length){var c=arguments[1],g=new k(arguments[0].getIntersection(arguments[3]));this.addIntersection(g,c)}},Vr.prototype.toString=function(){return or.toLineString(new yr(this._pts))},Vr.prototype.getNodeList=function(){return this._nodeList},Vr.prototype.addIntersectionNode=function(e,r){var a=r,c=a+1;return c=0&&a>=0||r<=0&&a<=0?Math.max(r,a):0}if(arguments[0]instanceof k)return Ne.orientationIndex(this.p0,this.p1,arguments[0])},Ke.prototype.toGeometry=function(e){return e.createLineString([this.p0,this.p1])},Ke.prototype.isVertical=function(){return this.p0.x===this.p1.x},Ke.prototype.equals=function(e){if(!(e instanceof Ke))return!1;var r=e;return this.p0.equals(r.p0)&&this.p1.equals(r.p1)},Ke.prototype.intersection=function(e){var r=new Or;return r.computeIntersection(this.p0,this.p1,e.p0,e.p1),r.hasIntersection()?r.getIntersection(0):null},Ke.prototype.project=function(){if(arguments[0]instanceof k){var e=arguments[0];if(e.equals(this.p0)||e.equals(this.p1))return new k(e);var r=this.projectionFactor(e),a=new k;return a.x=this.p0.x+r*(this.p1.x-this.p0.x),a.y=this.p0.y+r*(this.p1.y-this.p0.y),a}if(arguments[0]instanceof Ke){var c=arguments[0],l=this.projectionFactor(c.p0),g=this.projectionFactor(c.p1);if(l>=1&&g>=1||l<=0&&g<=0)return null;var x=this.project(c.p0);l<0&&(x=this.p0),l>1&&(x=this.p1);var _=this.project(c.p1);return g<0&&(_=this.p0),g>1&&(_=this.p1),new Ke(x,_)}},Ke.prototype.normalize=function(){this.p1.compareTo(this.p0)<0&&this.reverse()},Ke.prototype.angle=function(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)},Ke.prototype.getCoordinate=function(e){return 0===e?this.p0:this.p1},Ke.prototype.distancePerpendicular=function(e){return Ne.distancePointLinePerpendicular(e,this.p0,this.p1)},Ke.prototype.minY=function(){return Math.min(this.p0.y,this.p1.y)},Ke.prototype.midPoint=function(){return Ke.midPoint(this.p0,this.p1)},Ke.prototype.projectionFactor=function(e){if(e.equals(this.p0))return 0;if(e.equals(this.p1))return 1;var r=this.p1.x-this.p0.x,a=this.p1.y-this.p0.y,c=r*r+a*a;return c<=0?I.NaN:((e.x-this.p0.x)*r+(e.y-this.p0.y)*a)/c},Ke.prototype.closestPoints=function(e){var r=this.intersection(e);if(null!==r)return[r,r];var a=new Array(2).fill(null),c=I.MAX_VALUE,l=null,g=this.closestPoint(e.p0);c=g.distance(e.p0),a[0]=g,a[1]=e.p0;var x=this.closestPoint(e.p1);(l=x.distance(e.p1))0&&r<1?this.project(e):this.p0.distance(e)1||I.isNaN(r))&&(r=1),r},Ke.prototype.toString=function(){return"LINESTRING( "+this.p0.x+" "+this.p0.y+", "+this.p1.x+" "+this.p1.y+")"},Ke.prototype.isHorizontal=function(){return this.p0.y===this.p1.y},Ke.prototype.distance=function(){if(arguments[0]instanceof Ke){var e=arguments[0];return Ne.distanceLineLine(this.p0,this.p1,e.p0,e.p1)}if(arguments[0]instanceof k)return Ne.distancePointLine(arguments[0],this.p0,this.p1)},Ke.prototype.pointAlong=function(e){var r=new k;return r.x=this.p0.x+e*(this.p1.x-this.p0.x),r.y=this.p0.y+e*(this.p1.y-this.p0.y),r},Ke.prototype.hashCode=function(){var e=I.doubleToLongBits(this.p0.x);e^=31*I.doubleToLongBits(this.p0.y);var r=Math.trunc(e)^Math.trunc(e>>32),a=I.doubleToLongBits(this.p1.x);return a^=31*I.doubleToLongBits(this.p1.y),r^Math.trunc(a)^Math.trunc(a>>32)},Ke.prototype.interfaces_=function(){return[T,q]},Ke.prototype.getClass=function(){return Ke},Ke.midPoint=function(e,r){return new k((e.x+r.x)/2,(e.y+r.y)/2)},Rs.serialVersionUID.get=function(){return 0x2d2172135f411c00},Object.defineProperties(Ke,Rs);var Da=function(){this.tempEnv1=new Me,this.tempEnv2=new Me,this._overlapSeg1=new Ke,this._overlapSeg2=new Ke};Da.prototype.overlap=function(){if(2!==arguments.length&&4===arguments.length){var a=arguments[2],c=arguments[3];arguments[0].getLineSegment(arguments[1],this._overlapSeg1),a.getLineSegment(c,this._overlapSeg2),this.overlap(this._overlapSeg1,this._overlapSeg2)}},Da.prototype.interfaces_=function(){return[]},Da.prototype.getClass=function(){return Da};var Hn=function(){this._pts=null,this._start=null,this._end=null,this._env=null,this._context=null,this._id=null;var r=arguments[1],a=arguments[2],c=arguments[3];this._pts=arguments[0],this._start=r,this._end=a,this._context=c};Hn.prototype.getLineSegment=function(e,r){r.p0=this._pts[e],r.p1=this._pts[e+1]},Hn.prototype.computeSelect=function(e,r,a,c){if(c.tempEnv1.init(this._pts[r],this._pts[a]),a-r==1)return c.select(this,r),null;if(!e.intersects(c.tempEnv1))return null;var x=Math.trunc((r+a)/2);r=e.length-1)return e.length-1;for(var c=pr.quadrant(e[a],e[a+1]),l=r+1;lg.getId()&&(g.computeOverlaps(_,c),this._nOverlaps++),this._segInt.isDone())return null}},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},a.SegmentOverlapAction.get=function(){return _0},Object.defineProperties(r,a),r}(Ko),_0=function(e){function r(){e.call(this),this._si=null,this._si=arguments[0]}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.overlap=function(){if(4!==arguments.length)return e.prototype.overlap.apply(this,arguments);var c=arguments[1],l=arguments[2],g=arguments[3],x=arguments[0].getContext(),_=l.getContext();this._si.processIntersections(x,c,_,g)},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},r}(Da),sr=function e(){if(this._quadrantSegments=e.DEFAULT_QUADRANT_SEGMENTS,this._endCapStyle=e.CAP_ROUND,this._joinStyle=e.JOIN_ROUND,this._mitreLimit=e.DEFAULT_MITRE_LIMIT,this._isSingleSided=!1,this._simplifyFactor=e.DEFAULT_SIMPLIFY_FACTOR,0!==arguments.length)if(1===arguments.length)this.setQuadrantSegments(arguments[0]);else if(2===arguments.length){var c=arguments[1];this.setQuadrantSegments(arguments[0]),this.setEndCapStyle(c)}else if(4===arguments.length){var g=arguments[1],x=arguments[2],_=arguments[3];this.setQuadrantSegments(arguments[0]),this.setEndCapStyle(g),this.setJoinStyle(x),this.setMitreLimit(_)}},Wi={CAP_ROUND:{configurable:!0},CAP_FLAT:{configurable:!0},CAP_SQUARE:{configurable:!0},JOIN_ROUND:{configurable:!0},JOIN_MITRE:{configurable:!0},JOIN_BEVEL:{configurable:!0},DEFAULT_QUADRANT_SEGMENTS:{configurable:!0},DEFAULT_MITRE_LIMIT:{configurable:!0},DEFAULT_SIMPLIFY_FACTOR:{configurable:!0}};sr.prototype.getEndCapStyle=function(){return this._endCapStyle},sr.prototype.isSingleSided=function(){return this._isSingleSided},sr.prototype.setQuadrantSegments=function(e){this._quadrantSegments=e,0===this._quadrantSegments&&(this._joinStyle=sr.JOIN_BEVEL),this._quadrantSegments<0&&(this._joinStyle=sr.JOIN_MITRE,this._mitreLimit=Math.abs(this._quadrantSegments)),e<=0&&(this._quadrantSegments=1),this._joinStyle!==sr.JOIN_ROUND&&(this._quadrantSegments=sr.DEFAULT_QUADRANT_SEGMENTS)},sr.prototype.getJoinStyle=function(){return this._joinStyle},sr.prototype.setJoinStyle=function(e){this._joinStyle=e},sr.prototype.setSimplifyFactor=function(e){this._simplifyFactor=e<0?0:e},sr.prototype.getSimplifyFactor=function(){return this._simplifyFactor},sr.prototype.getQuadrantSegments=function(){return this._quadrantSegments},sr.prototype.setEndCapStyle=function(e){this._endCapStyle=e},sr.prototype.getMitreLimit=function(){return this._mitreLimit},sr.prototype.setMitreLimit=function(e){this._mitreLimit=e},sr.prototype.setSingleSided=function(e){this._isSingleSided=e},sr.prototype.interfaces_=function(){return[]},sr.prototype.getClass=function(){return sr},sr.bufferDistanceError=function(e){var r=Math.PI/2/e;return 1-Math.cos(r/2)},Wi.CAP_ROUND.get=function(){return 1},Wi.CAP_FLAT.get=function(){return 2},Wi.CAP_SQUARE.get=function(){return 3},Wi.JOIN_ROUND.get=function(){return 1},Wi.JOIN_MITRE.get=function(){return 2},Wi.JOIN_BEVEL.get=function(){return 3},Wi.DEFAULT_QUADRANT_SEGMENTS.get=function(){return 8},Wi.DEFAULT_MITRE_LIMIT.get=function(){return 5},Wi.DEFAULT_SIMPLIFY_FACTOR.get=function(){return.01},Object.defineProperties(sr,Wi);var Cr=function(e){this._distanceTol=null,this._isDeleted=null,this._angleOrientation=Ne.COUNTERCLOCKWISE,this._inputLine=e||null},Pa={INIT:{configurable:!0},DELETE:{configurable:!0},KEEP:{configurable:!0},NUM_PTS_TO_CHECK:{configurable:!0}};Cr.prototype.isDeletable=function(e,r,a,c){var l=this._inputLine[e],g=this._inputLine[r],x=this._inputLine[a];return!!this.isConcave(l,g,x)&&!!this.isShallow(l,g,x,c)&&this.isShallowSampled(l,g,e,a,c)},Cr.prototype.deleteShallowConcavities=function(){for(var e=1,r=this.findNextNonDeletedIndex(e),a=this.findNextNonDeletedIndex(r),c=!1;a=0;c--)this.addPt(e[c])},Un.prototype.isRedundant=function(e){if(this._ptList.size()<1)return!1;var r=this._ptList.get(this._ptList.size()-1);return e.distance(r)Math.PI;)e-=Pt.PI_TIMES_2;for(;e<=-Math.PI;)e+=Pt.PI_TIMES_2;return e},Pt.angle=function(){if(1===arguments.length){var e=arguments[0];return Math.atan2(e.y,e.x)}if(2===arguments.length){var r=arguments[0],a=arguments[1];return Math.atan2(a.y-r.y,a.x-r.x)}},Pt.isAcute=function(e,r,a){return(e.x-r.x)*(a.x-r.x)+(e.y-r.y)*(a.y-r.y)>0},Pt.isObtuse=function(e,r,a){return(e.x-r.x)*(a.x-r.x)+(e.y-r.y)*(a.y-r.y)<0},Pt.interiorAngle=function(e,r,a){var c=Pt.angle(r,e),l=Pt.angle(r,a);return Math.abs(l-c)},Pt.normalizePositive=function(e){if(e<0){for(;e<0;)e+=Pt.PI_TIMES_2;e>=Pt.PI_TIMES_2&&(e=0)}else{for(;e>=Pt.PI_TIMES_2;)e-=Pt.PI_TIMES_2;e<0&&(e=0)}return e},Pt.angleBetween=function(e,r,a){var c=Pt.angle(r,e),l=Pt.angle(r,a);return Pt.diff(c,l)},Pt.diff=function(e,r){var a=null;return(a=eMath.PI&&(a=2*Math.PI-a),a},Pt.toRadians=function(e){return e*Math.PI/180},Pt.getTurn=function(e,r){var a=Math.sin(r-e);return a>0?Pt.COUNTERCLOCKWISE:a<0?Pt.CLOCKWISE:Pt.NONE},Pt.angleBetweenOriented=function(e,r,a){var c=Pt.angle(r,e),l=Pt.angle(r,a)-c;return l<=-Math.PI?l+Pt.PI_TIMES_2:l>Math.PI?l-Pt.PI_TIMES_2:l},Lo.PI_TIMES_2.get=function(){return 2*Math.PI},Lo.PI_OVER_2.get=function(){return Math.PI/2},Lo.PI_OVER_4.get=function(){return Math.PI/4},Lo.COUNTERCLOCKWISE.get=function(){return Ne.COUNTERCLOCKWISE},Lo.CLOCKWISE.get=function(){return Ne.CLOCKWISE},Lo.NONE.get=function(){return Ne.COLLINEAR},Object.defineProperties(Pt,Lo);var Dr=function e(){this._maxCurveSegmentError=0,this._filletAngleQuantum=null,this._closingSegLengthFactor=1,this._segList=null,this._distance=0,this._precisionModel=null,this._bufParams=null,this._li=null,this._s0=null,this._s1=null,this._s2=null,this._seg0=new Ke,this._seg1=new Ke,this._offset0=new Ke,this._offset1=new Ke,this._side=0,this._hasNarrowConcaveAngle=!1;var a=arguments[1],c=arguments[2];this._precisionModel=arguments[0],this._bufParams=a,this._li=new Or,this._filletAngleQuantum=Math.PI/2/a.getQuadrantSegments(),a.getQuadrantSegments()>=8&&a.getJoinStyle()===sr.JOIN_ROUND&&(this._closingSegLengthFactor=e.MAX_CLOSING_SEG_LEN_FACTOR),this.init(c)},go={OFFSET_SEGMENT_SEPARATION_FACTOR:{configurable:!0},INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR:{configurable:!0},CURVE_VERTEX_SNAP_DISTANCE_FACTOR:{configurable:!0},MAX_CLOSING_SEG_LEN_FACTOR:{configurable:!0}};Dr.prototype.addNextSegment=function(e,r){if(this._s0=this._s1,this._s1=this._s2,this._s2=e,this._seg0.setCoordinates(this._s0,this._s1),this.computeOffsetSegment(this._seg0,this._side,this._distance,this._offset0),this._seg1.setCoordinates(this._s1,this._s2),this.computeOffsetSegment(this._seg1,this._side,this._distance,this._offset1),this._s1.equals(this._s2))return null;var a=Ne.computeOrientation(this._s0,this._s1,this._s2),c=a===Ne.CLOCKWISE&&this._side===Le.LEFT||a===Ne.COUNTERCLOCKWISE&&this._side===Le.RIGHT;0===a?this.addCollinear(r):c?this.addOutsideTurn(a,r):this.addInsideTurn(a,r)},Dr.prototype.addLineEndCap=function(e,r){var a=new Ke(e,r),c=new Ke;this.computeOffsetSegment(a,Le.LEFT,this._distance,c);var l=new Ke;this.computeOffsetSegment(a,Le.RIGHT,this._distance,l);var _=Math.atan2(r.y-e.y,r.x-e.x);switch(this._bufParams.getEndCapStyle()){case sr.CAP_ROUND:this._segList.addPt(c.p1),this.addFilletArc(r,_+Math.PI/2,_-Math.PI/2,Ne.CLOCKWISE,this._distance),this._segList.addPt(l.p1);break;case sr.CAP_FLAT:this._segList.addPt(c.p1),this._segList.addPt(l.p1);break;case sr.CAP_SQUARE:var B=new k;B.x=Math.abs(this._distance)*Math.cos(_),B.y=Math.abs(this._distance)*Math.sin(_);var ie=new k(c.p1.x+B.x,c.p1.y+B.y),xe=new k(l.p1.x+B.x,l.p1.y+B.y);this._segList.addPt(ie),this._segList.addPt(xe)}},Dr.prototype.getCoordinates=function(){return this._segList.getCoordinates()},Dr.prototype.addMitreJoin=function(e,r,a,c){var l=!0,g=null;try{g=St.intersection(r.p0,r.p1,a.p0,a.p1),(c<=0?1:g.distance(e)/Math.abs(c))>this._bufParams.getMitreLimit()&&(l=!1)}catch(x){if(!(x instanceof ur))throw x;g=new k(0,0),l=!1}l?this._segList.addPt(g):this.addLimitedMitreJoin(r,a,c,this._bufParams.getMitreLimit())},Dr.prototype.addFilletCorner=function(e,r,a,c,l){var _=Math.atan2(r.y-e.y,r.x-e.x),xe=Math.atan2(a.y-e.y,a.x-e.x);c===Ne.CLOCKWISE?_<=xe&&(_+=2*Math.PI):_>=xe&&(_-=2*Math.PI),this._segList.addPt(r),this.addFilletArc(e,_,xe,c,l),this._segList.addPt(a)},Dr.prototype.addOutsideTurn=function(e,r){if(this._offset0.p1.distance(this._offset1.p0)0){var a=new k((this._closingSegLengthFactor*this._offset0.p1.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset0.p1.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(a);var c=new k((this._closingSegLengthFactor*this._offset1.p0.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset1.p0.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(c)}else this._segList.addPt(this._s1);this._segList.addPt(this._offset1.p0)}},Dr.prototype.createCircle=function(e){var r=new k(e.x+this._distance,e.y);this._segList.addPt(r),this.addFilletArc(e,0,2*Math.PI,-1,this._distance),this._segList.closeRing()},Dr.prototype.addBevelJoin=function(e,r){this._segList.addPt(e.p1),this._segList.addPt(r.p0)},Dr.prototype.init=function(e){this._distance=e,this._maxCurveSegmentError=e*(1-Math.cos(this._filletAngleQuantum/2)),this._segList=new Un,this._segList.setPrecisionModel(this._precisionModel),this._segList.setMinimumVertexDistance(e*Dr.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)},Dr.prototype.addCollinear=function(e){this._li.computeIntersection(this._s0,this._s1,this._s1,this._s2),this._li.getIntersectionNum()>=2&&(this._bufParams.getJoinStyle()===sr.JOIN_BEVEL||this._bufParams.getJoinStyle()===sr.JOIN_MITRE?(e&&this._segList.addPt(this._offset0.p1),this._segList.addPt(this._offset1.p0)):this.addFilletCorner(this._s1,this._offset0.p1,this._offset1.p0,Ne.CLOCKWISE,this._distance))},Dr.prototype.closeRing=function(){this._segList.closeRing()},Dr.prototype.hasNarrowConcaveAngle=function(){return this._hasNarrowConcaveAngle},Dr.prototype.interfaces_=function(){return[]},Dr.prototype.getClass=function(){return Dr},go.OFFSET_SEGMENT_SEPARATION_FACTOR.get=function(){return.001},go.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR.get=function(){return.001},go.CURVE_VERTEX_SNAP_DISTANCE_FACTOR.get=function(){return 1e-6},go.MAX_CLOSING_SEG_LEN_FACTOR.get=function(){return 80},Object.defineProperties(Dr,go);var Rn=function(){this._distance=0,this._precisionModel=null,this._bufParams=null;var r=arguments[1];this._precisionModel=arguments[0],this._bufParams=r};Rn.prototype.getOffsetCurve=function(e,r){if(this._distance=r,0===r)return null;var a=r<0,c=Math.abs(r),l=this.getSegGen(c);e.length<=1?this.computePointCurve(e[0],l):this.computeOffsetCurve(e,a,l);var g=l.getCoordinates();return a&&Ve.reverse(g),g},Rn.prototype.computeSingleSidedBufferCurve=function(e,r,a){var c=this.simplifyTolerance(this._distance);if(r){a.addSegments(e,!0);var l=Cr.simplify(e,-c),g=l.length-1;a.initSideSegments(l[g],l[g-1],Le.LEFT),a.addFirstSegment();for(var x=g-2;x>=0;x--)a.addNextSegment(l[x],!0)}else{a.addSegments(e,!1);var _=Cr.simplify(e,c),B=_.length-1;a.initSideSegments(_[0],_[1],Le.LEFT),a.addFirstSegment();for(var ie=2;ie<=B;ie++)a.addNextSegment(_[ie],!0)}a.addLastSegment(),a.closeRing()},Rn.prototype.computeRingBufferCurve=function(e,r,a){var c=this.simplifyTolerance(this._distance);r===Le.RIGHT&&(c=-c);var l=Cr.simplify(e,c),g=l.length-1;a.initSideSegments(l[g-1],l[0],r);for(var x=1;x<=g;x++)a.addNextSegment(l[x],1!==x);a.closeRing()},Rn.prototype.computeLineBufferCurve=function(e,r){var a=this.simplifyTolerance(this._distance),c=Cr.simplify(e,a),l=c.length-1;r.initSideSegments(c[0],c[1],Le.LEFT);for(var g=2;g<=l;g++)r.addNextSegment(c[g],!0);r.addLastSegment(),r.addLineEndCap(c[l-1],c[l]);var x=Cr.simplify(e,-a),_=x.length-1;r.initSideSegments(x[_],x[_-1],Le.LEFT);for(var B=_-2;B>=0;B--)r.addNextSegment(x[B],!0);r.addLastSegment(),r.addLineEndCap(x[1],x[0]),r.closeRing()},Rn.prototype.computePointCurve=function(e,r){switch(this._bufParams.getEndCapStyle()){case sr.CAP_ROUND:r.createCircle(e);break;case sr.CAP_SQUARE:r.createSquare(e)}},Rn.prototype.getLineCurve=function(e,r){if(this._distance=r,r<0&&!this._bufParams.isSingleSided()||0===r)return null;var a=Math.abs(r),c=this.getSegGen(a);return e.length<=1?this.computePointCurve(e[0],c):this._bufParams.isSingleSided()?this.computeSingleSidedBufferCurve(e,r<0,c):this.computeLineBufferCurve(e,c),c.getCoordinates()},Rn.prototype.getBufferParameters=function(){return this._bufParams},Rn.prototype.simplifyTolerance=function(e){return e*this._bufParams.getSimplifyFactor()},Rn.prototype.getRingCurve=function(e,r,a){if(this._distance=a,e.length<=2)return this.getLineCurve(e,a);if(0===a)return Rn.copyCoordinates(e);var c=this.getSegGen(a);return this.computeRingBufferCurve(e,r,c),c.getCoordinates()},Rn.prototype.computeOffsetCurve=function(e,r,a){var c=this.simplifyTolerance(this._distance);if(r){var l=Cr.simplify(e,-c),g=l.length-1;a.initSideSegments(l[g],l[g-1],Le.LEFT),a.addFirstSegment();for(var x=g-2;x>=0;x--)a.addNextSegment(l[x],!0)}else{var _=Cr.simplify(e,c),B=_.length-1;a.initSideSegments(_[0],_[1],Le.LEFT),a.addFirstSegment();for(var ie=2;ie<=B;ie++)a.addNextSegment(_[ie],!0)}a.addLastSegment()},Rn.prototype.getSegGen=function(e){return new Dr(this._precisionModel,this._bufParams,e)},Rn.prototype.interfaces_=function(){return[]},Rn.prototype.getClass=function(){return Rn},Rn.copyCoordinates=function(e){for(var r=new Array(e.length).fill(null),a=0;al.getMaxY()||this.findStabbedSegments(e,c.getDirectedEdges(),r)}return r}if(3===arguments.length)if(Pe(arguments[2],Ge)&&arguments[0]instanceof k&&arguments[1]instanceof Is){for(var g=arguments[0],x=arguments[1],_=arguments[2],B=x.getEdge().getCoordinates(),ie=0;iethis._seg.p1.y&&this._seg.reverse(),!(Math.max(this._seg.p0.x,this._seg.p1.x)this._seg.p1.y||Ne.computeOrientation(this._seg.p0,this._seg.p1,g)===Ne.RIGHT)){var xe=x.getDepth(Le.LEFT);this._seg.p0.equals(B[ie])||(xe=x.getDepth(Le.RIGHT));var ke=new qo(this._seg,xe);_.add(ke)}}else if(Pe(arguments[2],Ge)&&arguments[0]instanceof k&&Pe(arguments[1],Ge))for(var qe=arguments[0],We=arguments[2],tt=arguments[1].iterator();tt.hasNext();){var mr=tt.next();mr.isForward()&&this.findStabbedSegments(qe,mr,We)}},Jo.prototype.getDepth=function(e){var r=this.findStabbedSegments(e);return 0===r.size()?0:Ci.min(r)._leftDepth},Jo.prototype.interfaces_=function(){return[]},Jo.prototype.getClass=function(){return Jo},D0.DepthSegment.get=function(){return qo},Object.defineProperties(Jo,D0);var qo=function(){this._upwardSeg=null,this._leftDepth=null;var r=arguments[1];this._upwardSeg=new Ke(arguments[0]),this._leftDepth=r};qo.prototype.compareTo=function(e){var r=e;if(this._upwardSeg.minX()>=r._upwardSeg.maxX())return 1;if(this._upwardSeg.maxX()<=r._upwardSeg.minX())return-1;var a=this._upwardSeg.orientationIndex(r._upwardSeg);return 0!==a||0!=(a=-1*r._upwardSeg.orientationIndex(this._upwardSeg))?a:this._upwardSeg.compareTo(r._upwardSeg)},qo.prototype.compareX=function(e,r){var a=e.p0.compareTo(r.p0);return 0!==a?a:e.p1.compareTo(r.p1)},qo.prototype.toString=function(){return this._upwardSeg.toString()},qo.prototype.interfaces_=function(){return[T]},qo.prototype.getClass=function(){return qo};var Tt=function(e,r,a){this.p0=e||null,this.p1=r||null,this.p2=a||null};Tt.prototype.area=function(){return Tt.area(this.p0,this.p1,this.p2)},Tt.prototype.signedArea=function(){return Tt.signedArea(this.p0,this.p1,this.p2)},Tt.prototype.interpolateZ=function(e){if(null===e)throw new M("Supplied point is null.");return Tt.interpolateZ(e,this.p0,this.p1,this.p2)},Tt.prototype.longestSideLength=function(){return Tt.longestSideLength(this.p0,this.p1,this.p2)},Tt.prototype.isAcute=function(){return Tt.isAcute(this.p0,this.p1,this.p2)},Tt.prototype.circumcentre=function(){return Tt.circumcentre(this.p0,this.p1,this.p2)},Tt.prototype.area3D=function(){return Tt.area3D(this.p0,this.p1,this.p2)},Tt.prototype.centroid=function(){return Tt.centroid(this.p0,this.p1,this.p2)},Tt.prototype.inCentre=function(){return Tt.inCentre(this.p0,this.p1,this.p2)},Tt.prototype.interfaces_=function(){return[]},Tt.prototype.getClass=function(){return Tt},Tt.area=function(e,r,a){return Math.abs(((a.x-e.x)*(r.y-e.y)-(r.x-e.x)*(a.y-e.y))/2)},Tt.signedArea=function(e,r,a){return((a.x-e.x)*(r.y-e.y)-(r.x-e.x)*(a.y-e.y))/2},Tt.det=function(e,r,a,c){return e*c-r*a},Tt.interpolateZ=function(e,r,a,c){var l=r.x,g=r.y,x=a.x-l,_=c.x-l,B=a.y-g,ie=c.y-g,xe=x*ie-_*B,ke=e.x-l,qe=e.y-g;return r.z+(ie*ke-_*qe)/xe*(a.z-r.z)+(-B*ke+x*qe)/xe*(c.z-r.z)},Tt.longestSideLength=function(e,r,a){var c=e.distance(r),l=r.distance(a),g=a.distance(e),x=c;return l>x&&(x=l),g>x&&(x=g),x},Tt.isAcute=function(e,r,a){return!!Pt.isAcute(e,r,a)&&!!Pt.isAcute(r,a,e)&&!!Pt.isAcute(a,e,r)},Tt.circumcentre=function(e,r,a){var c=a.x,l=a.y,g=e.x-c,x=e.y-l,_=r.x-c,B=r.y-l,ie=2*Tt.det(g,x,_,B),xe=Tt.det(x,g*g+x*x,B,_*_+B*B),ke=Tt.det(g,g*g+x*x,_,_*_+B*B);return new k(c-xe/ie,l+ke/ie)},Tt.perpendicularBisector=function(e,r){var a=r.x-e.x,c=r.y-e.y,l=new St(e.x+a/2,e.y+c/2,1),g=new St(e.x-c+a/2,e.y+a+c/2,1);return new St(l,g)},Tt.angleBisector=function(e,r,a){var c=r.distance(e),l=c/(c+r.distance(a));return new k(e.x+l*(a.x-e.x),e.y+l*(a.y-e.y))},Tt.area3D=function(e,r,a){var c=r.x-e.x,l=r.y-e.y,g=r.z-e.z,x=a.x-e.x,_=a.y-e.y,B=a.z-e.z,ie=l*B-g*_,xe=g*x-c*B,ke=c*_-l*x;return Math.sqrt(ie*ie+xe*xe+ke*ke)/2},Tt.centroid=function(e,r,a){return new k((e.x+r.x+a.x)/3,(e.y+r.y+a.y)/3)},Tt.inCentre=function(e,r,a){var c=r.distance(a),l=e.distance(a),g=e.distance(r),x=c+l+g;return new k((c*e.x+l*r.x+g*a.x)/x,(c*e.y+l*r.y+g*a.y)/x)};var Wn=function(){this._inputGeom=null,this._distance=null,this._curveBuilder=null,this._curveList=new ee;var r=arguments[1],a=arguments[2];this._inputGeom=arguments[0],this._distance=r,this._curveBuilder=a};Wn.prototype.addPoint=function(e){if(this._distance<=0)return null;var r=e.getCoordinates(),a=this._curveBuilder.getLineCurve(r,this._distance);this.addCurve(a,L.EXTERIOR,L.INTERIOR)},Wn.prototype.addPolygon=function(e){var r=this._distance,a=Le.LEFT;this._distance<0&&(r=-this._distance,a=Le.RIGHT);var c=e.getExteriorRing(),l=Ve.removeRepeatedPoints(c.getCoordinates());if(this._distance<0&&this.isErodedCompletely(c,this._distance)||this._distance<=0&&l.length<3)return null;this.addPolygonRing(l,r,a,L.EXTERIOR,L.INTERIOR);for(var g=0;g0&&this.isErodedCompletely(x,-this._distance)||this.addPolygonRing(_,r,Le.opposite(a),L.INTERIOR,L.EXTERIOR)}},Wn.prototype.isTriangleErodedCompletely=function(e,r){var a=new Tt(e[0],e[1],e[2]),c=a.inCentre();return Ne.distancePointLine(c,a.p0,a.p1)=Xi.MINIMUM_VALID_SIZE&&Ne.isCCW(e)&&(g=l,x=c,a=Le.opposite(a));var _=this._curveBuilder.getRingCurve(e,a,r);this.addCurve(_,g,x)},Wn.prototype.add=function(e){if(e.isEmpty())return null;e instanceof Nr?this.addPolygon(e):e instanceof Ar?this.addLineString(e):e instanceof Tn?this.addPoint(e):(e instanceof Bn||e instanceof Ii||e instanceof un||e instanceof Fr)&&this.addCollection(e)},Wn.prototype.isErodedCompletely=function(e,r){var a=e.getCoordinates();if(a.length<4)return r<0;if(4===a.length)return this.isTriangleErodedCompletely(a,r);var c=e.getEnvelopeInternal(),l=Math.min(c.getHeight(),c.getWidth());return r<0&&2*Math.abs(r)>l},Wn.prototype.addCollection=function(e){for(var r=0;r=this._max)throw new K;var e=this._parent.getGeometryN(this._index++);return e instanceof Fr?(this._subcollectionIterator=new Yi(e),this._subcollectionIterator.next()):e},Yi.prototype.remove=function(){throw new Error(this.getClass().getName())},Yi.prototype.hasNext=function(){if(this._atStart)return!0;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return!0;this._subcollectionIterator=null}return!(this._index>=this._max)},Yi.prototype.interfaces_=function(){return[be]},Yi.prototype.getClass=function(){return Yi},Yi.isAtomic=function(e){return!(e instanceof Fr)};var Zn=function(){this._geom=null,this._geom=arguments[0]};Zn.prototype.locate=function(e){return Zn.locate(e,this._geom)},Zn.prototype.interfaces_=function(){return[oo]},Zn.prototype.getClass=function(){return Zn},Zn.isPointInRing=function(e,r){return!!r.getEnvelopeInternal().intersects(e)&&Ne.isPointInRing(e,r.getCoordinates())},Zn.containsPointInPolygon=function(e,r){if(r.isEmpty())return!1;var a=r.getExteriorRing();if(!Zn.isPointInRing(e,a))return!1;for(var c=0;c=0;l--){var g=this._edgeList.get(l),x=g.getSym();null===c&&(c=x),null!==a&&x.setNext(a),a=g}c.setNext(a)},r.prototype.computeDepths=function(){if(1===arguments.length){var a=arguments[0],c=this.findIndex(a),l=a.getDepth(Le.LEFT),g=a.getDepth(Le.RIGHT),x=this.computeDepths(c+1,this._edgeList.size(),l);if(this.computeDepths(0,c,x)!==g)throw new Hi("depth mismatch at "+a.getCoordinate())}else if(3===arguments.length){for(var B=arguments[1],ie=arguments[2],xe=arguments[0];xe=0;x--){var _=this._resultAreaEdgeList.get(x),B=_.getSym();switch(null===c&&_.getEdgeRing()===a&&(c=_),g){case this._SCANNING_FOR_INCOMING:if(B.getEdgeRing()!==a)continue;l=B,g=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(_.getEdgeRing()!==a)continue;l.setNextMin(_),g=this._SCANNING_FOR_INCOMING}}g===this._LINKING_TO_OUTGOING&&(rt.isTrue(null!==c,"found null for first outgoing dirEdge"),rt.isTrue(c.getEdgeRing()===a,"unable to link last incoming dirEdge"),l.setNextMin(c))},r.prototype.getOutgoingDegree=function(){if(0===arguments.length){for(var a=0,c=this.iterator();c.hasNext();)c.next().isInResult()&&a++;return a}if(1===arguments.length){for(var l=arguments[0],g=0,x=this.iterator();x.hasNext();)x.next().getEdgeRing()===l&&g++;return g}},r.prototype.getLabel=function(){return this._label},r.prototype.findCoveredLineEdges=function(){for(var a=L.NONE,c=this.iterator();c.hasNext();){var l=c.next(),g=l.getSym();if(!l.isLineEdge()){if(l.isInResult()){a=L.INTERIOR;break}if(g.isInResult()){a=L.EXTERIOR;break}}}if(a===L.NONE)return null;for(var x=a,_=this.iterator();_.hasNext();){var B=_.next(),ie=B.getSym();B.isLineEdge()?B.getEdge().setCovered(x===L.INTERIOR):(B.isInResult()&&(x=L.EXTERIOR),ie.isInResult()&&(x=L.INTERIOR))}},r.prototype.computeLabelling=function(a){e.prototype.computeLabelling.call(this,a),this._label=new lr(L.NONE);for(var c=this.iterator();c.hasNext();)for(var l=c.next().getEdge().getLabel(),g=0;g<2;g++){var x=l.getLocation(g);x!==L.INTERIOR&&x!==L.BOUNDARY||this._label.setLocation(g,L.INTERIOR)}},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},r}(Cn),ba=function(e){function r(){e.apply(this,arguments)}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.createNode=function(a){return new to(a,new P0)},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},r}(fo),yo=function e(){this._pts=null,this._orientation=null;var r=arguments[0];this._pts=r,this._orientation=e.orientation(r)};yo.prototype.compareTo=function(e){return yo.compareOriented(this._pts,this._orientation,e._pts,e._orientation)},yo.prototype.interfaces_=function(){return[T]},yo.prototype.getClass=function(){return yo},yo.orientation=function(e){return 1===Ve.increasingDirection(e)},yo.compareOriented=function(e,r,a,c){for(var l=r?1:-1,g=c?1:-1,x=r?e.length:-1,_=c?a.length:-1,B=r?0:e.length-1,ie=c?0:a.length-1;;){var xe=e[B].compareTo(a[ie]);if(0!==xe)return xe;var ke=(B+=l)===x,qe=(ie+=g)===_;if(ke&&!qe)return-1;if(!ke&&qe)return 1;if(ke&&qe)return 0}};var ki=function(){this._edges=new ee,this._ocaMap=new we};ki.prototype.print=function(e){e.print("MULTILINESTRING ( ");for(var r=0;r0&&e.print(","),e.print("(");for(var c=a.getCoordinates(),l=0;l0&&e.print(","),e.print(c[l].x+" "+c[l].y);e.println(")")}e.print(") ")},ki.prototype.addAll=function(e){for(var r=e.iterator();r.hasNext();)this.add(r.next())},ki.prototype.findEdgeIndex=function(e){for(var r=0;r0||!r.coord.equals2D(this.edge.pts[r.segmentIndex]);l||a--;var g=new Array(a).fill(null),x=0;g[x++]=new k(e.coord);for(var _=e.segmentIndex+1;_<=r.segmentIndex;_++)g[x++]=this.edge.pts[_];return l&&(g[x]=r.coord),new Za(g,new lr(this.edge._label))},qi.prototype.add=function(e,r,a){var c=new _i(e,r,a),l=this._nodeMap.get(c);return null!==l?l:(this._nodeMap.put(c,c),c)},qi.prototype.isIntersection=function(e){for(var r=this.iterator();r.hasNext();)if(r.next().coord.equals(e))return!0;return!1},qi.prototype.interfaces_=function(){return[]},qi.prototype.getClass=function(){return qi};var No=function(){};No.prototype.getChainStartIndices=function(e){var r=0,a=new ee;a.add(new Ae(r));do{var c=this.findChainEnd(e,r);a.add(new Ae(c)),r=c}while(ra?r:a},ao.prototype.getMinX=function(e){var r=this.pts[this.startIndex[e]].x,a=this.pts[this.startIndex[e+1]].x;return rr&&(c=1),this._depth[e][a]=c}}},en.prototype.getDelta=function(e){return this._depth[e][Le.RIGHT]-this._depth[e][Le.LEFT]},en.prototype.getLocation=function(e,r){return this._depth[e][r]<=0?L.EXTERIOR:L.INTERIOR},en.prototype.toString=function(){return"A: "+this._depth[0][1]+","+this._depth[0][2]+" B: "+this._depth[1][1]+","+this._depth[1][2]},en.prototype.add=function(){if(1===arguments.length)for(var e=arguments[0],r=0;r<2;r++)for(var a=1;a<3;a++){var c=e.getLocation(r,a);c!==L.EXTERIOR&&c!==L.INTERIOR||(this.isNull(r,a)?this._depth[r][a]=en.depthAtLocation(c):this._depth[r][a]+=en.depthAtLocation(c))}else 3===arguments.length&&arguments[2]===L.INTERIOR&&this._depth[arguments[0]][arguments[1]]++},en.prototype.interfaces_=function(){return[]},en.prototype.getClass=function(){return en},en.depthAtLocation=function(e){return e===L.EXTERIOR?0:e===L.INTERIOR?1:en.NULL_VALUE},b0.NULL_VALUE.get=function(){return-1},Object.defineProperties(en,b0);var Za=function(e){function r(){if(e.call(this),this.pts=null,this._env=null,this.eiList=new qi(this),this._name=null,this._mce=null,this._isIsolated=!0,this._depth=new en,this._depthDelta=0,1===arguments.length)r.call(this,arguments[0],null);else if(2===arguments.length){var l=arguments[1];this.pts=arguments[0],this._label=l}}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.getDepth=function(){return this._depth},r.prototype.getCollapsedEdge=function(){var a=new Array(2).fill(null);return a[0]=this.pts[0],a[1]=this.pts[1],new r(a,lr.toLineLabel(this._label))},r.prototype.isIsolated=function(){return this._isIsolated},r.prototype.getCoordinates=function(){return this.pts},r.prototype.setIsolated=function(a){this._isIsolated=a},r.prototype.setName=function(a){this._name=a},r.prototype.equals=function(a){if(!(a instanceof r))return!1;var c=a;if(this.pts.length!==c.pts.length)return!1;for(var l=!0,g=!0,x=this.pts.length,_=0;_0?this.pts[0]:null:1===arguments.length?this.pts[arguments[0]]:void 0},r.prototype.print=function(a){a.print("edge "+this._name+": "),a.print("LINESTRING (");for(var c=0;c0&&a.print(","),a.print(this.pts[c].x+" "+this.pts[c].y);a.print(") "+this._label+" "+this._depthDelta)},r.prototype.computeIM=function(a){r.updateIM(this._label,a)},r.prototype.isCollapsed=function(){return!!this._label.isArea()&&3===this.pts.length&&!!this.pts[0].equals(this.pts[2])},r.prototype.isClosed=function(){return this.pts[0].equals(this.pts[this.pts.length-1])},r.prototype.getMaximumSegmentIndex=function(){return this.pts.length-1},r.prototype.getDepthDelta=function(){return this._depthDelta},r.prototype.getNumPoints=function(){return this.pts.length},r.prototype.printReverse=function(a){a.print("edge "+this._name+": ");for(var c=this.pts.length-1;c>=0;c--)a.print(this.pts[c]+" ");a.println("")},r.prototype.getMonotoneChainEdge=function(){return null===this._mce&&(this._mce=new ao(this)),this._mce},r.prototype.getEnvelope=function(){if(null===this._env){this._env=new Me;for(var a=0;a0&&a.append(","),a.append(this.pts[c].x+" "+this.pts[c].y);return a.append(") "+this._label+" "+this._depthDelta),a.toString()},r.prototype.isPointwiseEqual=function(a){if(this.pts.length!==a.pts.length)return!1;for(var c=0;cc||this._maxyg;if(x)return!1;var _=this.intersectsToleranceSquare(e,r);return rt.isTrue(!(x&&_),"Found bad envelope test"),_},Gn.prototype.initCorners=function(e){this._minx=e.x-.5,this._maxx=e.x+.5,this._miny=e.y-.5,this._maxy=e.y+.5,this._corner[0]=new k(this._maxx,this._maxy),this._corner[1]=new k(this._minx,this._maxy),this._corner[2]=new k(this._minx,this._miny),this._corner[3]=new k(this._maxx,this._miny)},Gn.prototype.intersects=function(e,r){return 1===this._scaleFactor?this.intersectsScaled(e,r):(this.copyScaled(e,this._p0Scaled),this.copyScaled(r,this._p1Scaled),this.intersectsScaled(this._p0Scaled,this._p1Scaled))},Gn.prototype.scale=function(e){return Math.round(e*this._scaleFactor)},Gn.prototype.getCoordinate=function(){return this._originalPt},Gn.prototype.copyScaled=function(e,r){r.x=this.scale(e.x),r.y=this.scale(e.y)},Gn.prototype.getSafeEnvelope=function(){if(null===this._safeEnv){var e=Gn.SAFE_ENV_EXPANSION_FACTOR/this._scaleFactor;this._safeEnv=new Me(this._originalPt.x-e,this._originalPt.x+e,this._originalPt.y-e,this._originalPt.y+e)}return this._safeEnv},Gn.prototype.intersectsPixelClosure=function(e,r){return this._li.computeIntersection(e,r,this._corner[0],this._corner[1]),!!(this._li.hasIntersection()||(this._li.computeIntersection(e,r,this._corner[1],this._corner[2]),this._li.hasIntersection()||(this._li.computeIntersection(e,r,this._corner[2],this._corner[3]),this._li.hasIntersection()||(this._li.computeIntersection(e,r,this._corner[3],this._corner[0]),this._li.hasIntersection()))))},Gn.prototype.intersectsToleranceSquare=function(e,r){var a=!1,c=!1;return this._li.computeIntersection(e,r,this._corner[0],this._corner[1]),!!(this._li.isProper()||(this._li.computeIntersection(e,r,this._corner[1],this._corner[2]),this._li.isProper()||(this._li.hasIntersection()&&(a=!0),this._li.computeIntersection(e,r,this._corner[2],this._corner[3]),this._li.isProper()||(this._li.hasIntersection()&&(c=!0),this._li.computeIntersection(e,r,this._corner[3],this._corner[0]),this._li.isProper()||a&&c||e.equals(this._pt)||r.equals(this._pt)))))},Gn.prototype.addSnappedNode=function(e,r){var a=e.getCoordinate(r),c=e.getCoordinate(r+1);return!!this.intersects(a,c)&&(e.addIntersection(this.getCoordinate(),r),!0)},Gn.prototype.interfaces_=function(){return[]},Gn.prototype.getClass=function(){return Gn},T0.SAFE_ENV_EXPANSION_FACTOR.get=function(){return.75},Object.defineProperties(Gn,T0);var Ia=function(){this.tempEnv1=new Me,this.selectedSegment=new Ke};Ia.prototype.select=function(){1!==arguments.length&&2===arguments.length&&(arguments[0].getLineSegment(arguments[1],this.selectedSegment),this.select(this.selectedSegment))},Ia.prototype.interfaces_=function(){return[]},Ia.prototype.getClass=function(){return Ia};var la=function(){this._index=null,this._index=arguments[0]},Ta={HotPixelSnapAction:{configurable:!0}};la.prototype.snap=function(){if(1===arguments.length)return this.snap(arguments[0],null,-1);if(3===arguments.length){var r=arguments[0],a=arguments[1],c=arguments[2],l=r.getSafeEnvelope(),g=new es(r,a,c);return this._index.query(l,{interfaces_:function(){return[no]},visitItem:function(x){x.select(l,g)}}),g.isNodeAdded()}},la.prototype.interfaces_=function(){return[]},la.prototype.getClass=function(){return la},Ta.HotPixelSnapAction.get=function(){return es},Object.defineProperties(la,Ta);var es=function(e){function r(){e.call(this),this._hotPixel=null,this._parentEdge=null,this._hotPixelVertexIndex=null,this._isNodeAdded=!1;var c=arguments[1],l=arguments[2];this._hotPixel=arguments[0],this._parentEdge=c,this._hotPixelVertexIndex=l}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.isNodeAdded=function(){return this._isNodeAdded},r.prototype.select=function(){if(2!==arguments.length)return e.prototype.select.apply(this,arguments);var c=arguments[1],l=arguments[0].getContext();if(null!==this._parentEdge&&l===this._parentEdge&&c===this._hotPixelVertexIndex)return null;this._isNodeAdded=this._hotPixel.addSnappedNode(l,c)},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},r}(Ia),xo=function(){this._li=null,this._interiorIntersections=null,this._li=arguments[0],this._interiorIntersections=new ee};xo.prototype.processIntersections=function(e,r,a,c){if(e===a&&r===c)return null;var l=e.getCoordinates()[r],g=e.getCoordinates()[r+1],x=a.getCoordinates()[c],_=a.getCoordinates()[c+1];if(this._li.computeIntersection(l,g,x,_),this._li.hasIntersection()&&this._li.isInteriorIntersection()){for(var B=0;B=0;r--){try{e.bufferReducedPrecision(r)}catch(g){if(!(g instanceof Hi))throw g;e._saveException=g}if(null!==e._resultGeometry)return null}throw this._saveException}if(1===arguments.length){var c=tn.precisionScaleFactor(this._argGeom,this._distance,arguments[0]),l=new ar(c);this.bufferFixedPrecision(l)}},tn.prototype.computeGeometry=function(){if(this.bufferOriginalPrecision(),null!==this._resultGeometry)return null;var e=this._argGeom.getFactory().getPrecisionModel();e.getType()===ar.FIXED?this.bufferFixedPrecision(e):this.bufferReducedPrecision()},tn.prototype.setQuadrantSegments=function(e){this._bufParams.setQuadrantSegments(e)},tn.prototype.bufferOriginalPrecision=function(){try{var e=new kn(this._bufParams);this._resultGeometry=e.buffer(this._argGeom,this._distance)}catch(r){if(!(r instanceof It))throw r;this._saveException=r}},tn.prototype.getResultGeometry=function(e){return this._distance=e,this.computeGeometry(),this._resultGeometry},tn.prototype.setEndCapStyle=function(e){this._bufParams.setEndCapStyle(e)},tn.prototype.interfaces_=function(){return[]},tn.prototype.getClass=function(){return tn},tn.bufferOp=function(){if(2===arguments.length){var r=arguments[1];return new tn(arguments[0]).getResultGeometry(r)}if(3===arguments.length){if(Number.isInteger(arguments[2])&&arguments[0]instanceof nt&&"number"==typeof arguments[1]){var c=arguments[1],l=arguments[2],g=new tn(arguments[0]);return g.setQuadrantSegments(l),g.getResultGeometry(c)}if(arguments[2]instanceof sr&&arguments[0]instanceof nt&&"number"==typeof arguments[1]){var _=arguments[1];return new tn(arguments[0],arguments[2]).getResultGeometry(_)}}else if(4===arguments.length){var xe=arguments[1],ke=arguments[2],qe=arguments[3],Qe=new tn(arguments[0]);return Qe.setQuadrantSegments(ke),Qe.setEndCapStyle(qe),Qe.getResultGeometry(xe)}},tn.precisionScaleFactor=function(e,r,a){var c=e.getEnvelopeInternal(),l=Fe.max(Math.abs(c.getMaxX()),Math.abs(c.getMaxY()),Math.abs(c.getMinX()),Math.abs(c.getMinY()))+2*(r>0?r:0),g=a-Math.trunc(Math.log(l)/Math.log(10)+1);return Math.pow(10,g)},Zo.CAP_ROUND.get=function(){return sr.CAP_ROUND},Zo.CAP_BUTT.get=function(){return sr.CAP_FLAT},Zo.CAP_FLAT.get=function(){return sr.CAP_FLAT},Zo.CAP_SQUARE.get=function(){return sr.CAP_SQUARE},Zo.MAX_PRECISION_DIGITS.get=function(){return 12},Object.defineProperties(tn,Zo);var _n=function(){this._pt=[new k,new k],this._distance=I.NaN,this._isNull=!0};_n.prototype.getCoordinates=function(){return this._pt},_n.prototype.getCoordinate=function(e){return this._pt[e]},_n.prototype.setMinimum=function(){if(1===arguments.length){var e=arguments[0];this.setMinimum(e._pt[0],e._pt[1])}else if(2===arguments.length){var r=arguments[0],a=arguments[1];if(this._isNull)return this.initialize(r,a),null;var c=r.distance(a);cthis._distance&&this.initialize(r,a,c)}},_n.prototype.interfaces_=function(){return[]},_n.prototype.getClass=function(){return _n};var di=function(){};di.prototype.interfaces_=function(){return[]},di.prototype.getClass=function(){return di},di.computeDistance=function(){if(arguments[2]instanceof _n&&arguments[0]instanceof Ar&&arguments[1]instanceof k)for(var r=arguments[1],a=arguments[2],c=arguments[0].getCoordinates(),l=new Ke,g=0;g0||this._isIn?L.INTERIOR:L.EXTERIOR)},ui.prototype.interfaces_=function(){return[]},ui.prototype.getClass=function(){return ui};var An=function e(){if(this._component=null,this._segIndex=null,this._pt=null,2===arguments.length)e.call(this,arguments[0],e.INSIDE_AREA,arguments[1]);else if(3===arguments.length){var l=arguments[1],g=arguments[2];this._component=arguments[0],this._segIndex=l,this._pt=g}},R0={INSIDE_AREA:{configurable:!0}};An.prototype.isInsideArea=function(){return this._segIndex===An.INSIDE_AREA},An.prototype.getCoordinate=function(){return this._pt},An.prototype.getGeometryComponent=function(){return this._component},An.prototype.getSegmentIndex=function(){return this._segIndex},An.prototype.interfaces_=function(){return[]},An.prototype.getClass=function(){return An},R0.INSIDE_AREA.get=function(){return-1},Object.defineProperties(An,R0);var Co=function(e){this._pts=e||null};Co.prototype.filter=function(e){e instanceof Tn&&this._pts.add(e)},Co.prototype.interfaces_=function(){return[Rr]},Co.prototype.getClass=function(){return Co},Co.getPoints=function(){if(1===arguments.length){var e=arguments[0];return e instanceof Tn?Ci.singletonList(e):Co.getPoints(e,new ee)}if(2===arguments.length){var r=arguments[0],a=arguments[1];return r instanceof Tn?a.add(r):r instanceof Fr&&r.apply(new Co(a)),a}};var Bo=function(){this._locations=null,this._locations=arguments[0]};Bo.prototype.filter=function(e){(e instanceof Tn||e instanceof Ar||e instanceof Nr)&&this._locations.add(new An(e,0,e.getCoordinate()))},Bo.prototype.interfaces_=function(){return[Rr]},Bo.prototype.getClass=function(){return Bo},Bo.getLocations=function(e){var r=new ee;return e.apply(new Bo(r)),r};var rn=function(){if(this._geom=null,this._terminateDistance=0,this._ptLocator=new ui,this._minDistanceLocation=null,this._minDistance=I.MAX_VALUE,2===arguments.length)this._geom=[arguments[0],arguments[1]],this._terminateDistance=0;else if(3===arguments.length){var a=arguments[0],c=arguments[1],l=arguments[2];this._geom=new Array(2).fill(null),this._geom[0]=a,this._geom[1]=c,this._terminateDistance=l}};rn.prototype.computeContainmentDistance=function(){if(0===arguments.length){var e=new Array(2).fill(null);if(this.computeContainmentDistance(0,e),this._minDistance<=this._terminateDistance)return null;this.computeContainmentDistance(1,e)}else if(2===arguments.length){var r=arguments[0],a=arguments[1],c=1-r,l=Ni.getPolygons(this._geom[r]);if(l.size()>0){var g=Bo.getLocations(this._geom[c]);if(this.computeContainmentDistance(g,l,a),this._minDistance<=this._terminateDistance)return this._minDistanceLocation[c]=a[0],this._minDistanceLocation[r]=a[1],null}}else if(3===arguments.length)if(arguments[2]instanceof Array&&Pe(arguments[0],Ge)&&Pe(arguments[1],Ge)){for(var x=arguments[0],_=arguments[1],B=arguments[2],ie=0;iethis._minDistance)return null;for(var c=e.getCoordinates(),l=r.getCoordinate(),g=0;gthis._minDistance)return null;for(var ke=B.getCoordinates(),qe=ie.getCoordinates(),Qe=0;Qethis._distance&&this.initialize(r,a,c)}},Dn.prototype.interfaces_=function(){return[]},Dn.prototype.getClass=function(){return Dn};var Bi=function(){};Bi.prototype.interfaces_=function(){return[]},Bi.prototype.getClass=function(){return Bi},Bi.computeDistance=function(){if(arguments[2]instanceof Dn&&arguments[0]instanceof Ar&&arguments[1]instanceof k)for(var e=arguments[0],r=arguments[1],a=arguments[2],c=new Ke,l=e.getCoordinates(),g=0;g1||e<=0)throw new M("Fraction is not in range (0.0 - 1.0]");this._densifyFrac=e},li.prototype.compute=function(e,r){this.computeOrientedDistance(e,r,this._ptDist),this.computeOrientedDistance(r,e,this._ptDist)},li.prototype.distance=function(){return this.compute(this._g0,this._g1),this._ptDist.getDistance()},li.prototype.computeOrientedDistance=function(e,r,a){var c=new ta(r);if(e.apply(c),a.setMaximum(c.getMaxPointDistance()),this._densifyFrac>0){var l=new co(r,this._densifyFrac);e.apply(l),a.setMaximum(l.getMaxPointDistance())}},li.prototype.orientedDistance=function(){return this.computeOrientedDistance(this._g0,this._g1,this._ptDist),this._ptDist.getDistance()},li.prototype.interfaces_=function(){return[]},li.prototype.getClass=function(){return li},li.distance=function(){if(2===arguments.length)return new li(arguments[0],arguments[1]).distance();if(3===arguments.length){var l=arguments[2],g=new li(arguments[0],arguments[1]);return g.setDensifyFraction(l),g.distance()}},Os.MaxPointDistanceFilter.get=function(){return ta},Os.MaxDensifiedByFractionDistanceFilter.get=function(){return co},Object.defineProperties(li,Os);var ta=function(){this._maxPtDist=new Dn,this._minPtDist=new Dn,this._euclideanDist=new Bi,this._geom=null,this._geom=arguments[0]};ta.prototype.filter=function(e){this._minPtDist.initialize(),Bi.computeDistance(this._geom,e,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)},ta.prototype.getMaxPointDistance=function(){return this._maxPtDist},ta.prototype.interfaces_=function(){return[C]},ta.prototype.getClass=function(){return ta};var co=function(){this._maxPtDist=new Dn,this._minPtDist=new Dn,this._geom=null,this._numSubSegs=0;var r=arguments[1];this._geom=arguments[0],this._numSubSegs=Math.trunc(Math.round(1/r))};co.prototype.filter=function(e,r){if(0===r)return null;for(var a=e.getCoordinate(r-1),c=e.getCoordinate(r),l=(c.x-a.x)/this._numSubSegs,g=(c.y-a.y)/this._numSubSegs,x=0;xa){this._isValid=!1;var l=c.getCoordinates();this._errorLocation=l[1],this._errorIndicator=e.getFactory().createLineString(l),this._errMsg="Distance between buffer curve and input is too large ("+this._maxDistanceFound+" at "+or.toLineString(l[0],l[1])+")"}},Yn.prototype.isValid=function(){var e=Math.abs(this._bufDistance),r=Yn.MAX_DISTANCE_DIFF_FRAC*e;return this._minValidDistance=e-r,this._maxValidDistance=e+r,!(!this._input.isEmpty()&&!this._result.isEmpty())||(this._bufDistance>0?this.checkPositiveValid():this.checkNegativeValid(),Yn.VERBOSE&&it.out.println("Min Dist= "+this._minDistanceFound+" err= "+(1-this._minDistanceFound/this._bufDistance)+" Max Dist= "+this._maxDistanceFound+" err= "+(this._maxDistanceFound/this._bufDistance-1)),this._isValid)},Yn.prototype.checkNegativeValid=function(){if(!(this._input instanceof Nr||this._input instanceof un||this._input instanceof Fr))return null;var e=this.getPolygonLines(this._input);if(this.checkMinimumDistance(e,this._result,this._minValidDistance),!this._isValid)return null;this.checkMaximumDistance(e,this._result,this._maxValidDistance)},Yn.prototype.getErrorIndicator=function(){return this._errorIndicator},Yn.prototype.checkMinimumDistance=function(e,r,a){var c=new rn(e,r,a);if(this._minDistanceFound=c.distance(),this._minDistanceFound0&&e>r&&(this._isValid=!1,this._errorMsg="Area of positive buffer is smaller than input",this._errorIndicator=this._result),this._distance<0&&e=2||this._distance>0?null:(this._result.isEmpty()||(this._isValid=!1,this._errorMsg="Result is non-empty",this._errorIndicator=this._result),void this.report("ExpectedEmpty"))},nn.prototype.report=function(e){if(!nn.VERBOSE)return null;it.out.println("Check "+e+": "+(this._isValid?"passed":"FAILED"))},nn.prototype.getErrorMessage=function(){return this._errorMsg},nn.prototype.interfaces_=function(){return[]},nn.prototype.getClass=function(){return nn},nn.isValidMsg=function(e,r,a){var c=new nn(e,r,a);return c.isValid()?null:c.getErrorMessage()},nn.isValid=function(e,r,a){return!!new nn(e,r,a).isValid()},rs.VERBOSE.get=function(){return!1},rs.MAX_ENV_DIFF_FRAC.get=function(){return.012},Object.defineProperties(nn,rs);var Vi=function(){this._pts=null,this._data=null;var r=arguments[1];this._pts=arguments[0],this._data=r};Vi.prototype.getCoordinates=function(){return this._pts},Vi.prototype.size=function(){return this._pts.length},Vi.prototype.getCoordinate=function(e){return this._pts[e]},Vi.prototype.isClosed=function(){return this._pts[0].equals(this._pts[this._pts.length-1])},Vi.prototype.getSegmentOctant=function(e){return e===this._pts.length-1?-1:Mo.octant(this.getCoordinate(e),this.getCoordinate(e+1))},Vi.prototype.setData=function(e){this._data=e},Vi.prototype.getData=function(){return this._data},Vi.prototype.toString=function(){return or.toLineString(new yr(this._pts))},Vi.prototype.interfaces_=function(){return[Mi]},Vi.prototype.getClass=function(){return Vi};var on=function(){this._findAllIntersections=!1,this._isCheckEndSegmentsOnly=!1,this._li=null,this._interiorIntersection=null,this._intSegments=null,this._intersections=new ee,this._intersectionCount=0,this._keepIntersections=!0,this._li=arguments[0],this._interiorIntersection=null};on.prototype.getInteriorIntersection=function(){return this._interiorIntersection},on.prototype.setCheckEndSegmentsOnly=function(e){this._isCheckEndSegmentsOnly=e},on.prototype.getIntersectionSegments=function(){return this._intSegments},on.prototype.count=function(){return this._intersectionCount},on.prototype.getIntersections=function(){return this._intersections},on.prototype.setFindAllIntersections=function(e){this._findAllIntersections=e},on.prototype.setKeepIntersections=function(e){this._keepIntersections=e},on.prototype.processIntersections=function(e,r,a,c){if(!this._findAllIntersections&&this.hasIntersection()||e===a&&r===c||this._isCheckEndSegmentsOnly&&!this.isEndSegment(e,r)&&!this.isEndSegment(a,c))return null;var l=e.getCoordinates()[r],g=e.getCoordinates()[r+1],x=a.getCoordinates()[c],_=a.getCoordinates()[c+1];this._li.computeIntersection(l,g,x,_),this._li.hasIntersection()&&this._li.isInteriorIntersection()&&(this._intSegments=new Array(4).fill(null),this._intSegments[0]=l,this._intSegments[1]=g,this._intSegments[2]=x,this._intSegments[3]=_,this._interiorIntersection=this._li.getIntersection(0),this._keepIntersections&&this._intersections.add(this._interiorIntersection),this._intersectionCount++)},on.prototype.isEndSegment=function(e,r){return 0===r||r>=e.size()-2},on.prototype.hasIntersection=function(){return null!==this._interiorIntersection},on.prototype.isDone=function(){return!this._findAllIntersections&&null!==this._interiorIntersection},on.prototype.interfaces_=function(){return[Fo]},on.prototype.getClass=function(){return on},on.createAllIntersectionsFinder=function(e){var r=new on(e);return r.setFindAllIntersections(!0),r},on.createAnyIntersectionFinder=function(e){return new on(e)},on.createIntersectionCounter=function(e){var r=new on(e);return r.setFindAllIntersections(!0),r.setKeepIntersections(!1),r};var ti=function(){this._li=new Or,this._segStrings=null,this._findAllIntersections=!1,this._segInt=null,this._isValid=!0,this._segStrings=arguments[0]};ti.prototype.execute=function(){if(null!==this._segInt)return null;this.checkInteriorIntersections()},ti.prototype.getIntersections=function(){return this._segInt.getIntersections()},ti.prototype.isValid=function(){return this.execute(),this._isValid},ti.prototype.setFindAllIntersections=function(e){this._findAllIntersections=e},ti.prototype.checkInteriorIntersections=function(){this._isValid=!0,this._segInt=new on(this._li),this._segInt.setFindAllIntersections(this._findAllIntersections);var e=new Ja;if(e.setSegmentIntersector(this._segInt),e.computeNodes(this._segStrings),this._segInt.hasIntersection())return this._isValid=!1,null},ti.prototype.checkValid=function(){if(this.execute(),!this._isValid)throw new Hi(this.getErrorMessage(),this._segInt.getInteriorIntersection())},ti.prototype.getErrorMessage=function(){if(this._isValid)return"no intersections found";var e=this._segInt.getIntersectionSegments();return"found non-noded intersection between "+or.toLineString(e[0],e[1])+" and "+or.toLineString(e[2],e[3])},ti.prototype.interfaces_=function(){return[]},ti.prototype.getClass=function(){return ti},ti.computeIntersections=function(e){var r=new ti(e);return r.setFindAllIntersections(!0),r.isValid(),r.getIntersections()};var Vo=function e(){this._nv=null,this._nv=new ti(e.toSegmentStrings(arguments[0]))};Vo.prototype.checkValid=function(){this._nv.checkValid()},Vo.prototype.interfaces_=function(){return[]},Vo.prototype.getClass=function(){return Vo},Vo.toSegmentStrings=function(e){for(var r=new ee,a=e.iterator();a.hasNext();){var c=a.next();r.add(new Vi(c.getCoordinates(),c))}return r},Vo.checkValid=function(e){new Vo(e).checkValid()};var ra=function(e){this._mapOp=e};ra.prototype.map=function(e){for(var r=new ee,a=0;a0&&c<4&&!this._preserveType?this._factory.createLineString(a):this._factory.createLinearRing(a)},Qn.prototype.interfaces_=function(){return[]},Qn.prototype.getClass=function(){return Qn};var $i=function e(){if(this._snapTolerance=0,this._srcPts=null,this._seg=new Ke,this._allowSnappingToSourceVertices=!1,this._isClosed=!1,arguments[0]instanceof Ar&&"number"==typeof arguments[1]){var a=arguments[1];e.call(this,arguments[0].getCoordinates(),a)}else if(arguments[0]instanceof Array&&"number"==typeof arguments[1]){var c=arguments[0],l=arguments[1];this._srcPts=c,this._isClosed=e.isClosed(c),this._snapTolerance=l}};$i.prototype.snapVertices=function(e,r){for(var a=this._isClosed?e.size()-1:e.size(),c=0;c=0&&e.add(g+1,new k(l),!1)}},$i.prototype.findSegmentIndexToSnap=function(e,r){for(var a=I.MAX_VALUE,c=-1,l=0;lr&&(r=c)}return r}if(2===arguments.length){var g=arguments[1];return Math.min(Ur.computeOverlaySnapTolerance(arguments[0]),Ur.computeOverlaySnapTolerance(g))}},Ur.computeSizeBasedSnapTolerance=function(e){var r=e.getEnvelopeInternal();return Math.min(r.getHeight(),r.getWidth())*Ur.SNAP_PRECISION_FACTOR},Ur.snapToSelf=function(e,r,a){return new Ur(e).snapToSelf(r,a)},A0.SNAP_PRECISION_FACTOR.get=function(){return 1e-9},Object.defineProperties(Ur,A0);var O0=function(e){function r(a,c,l){e.call(this),this._snapTolerance=a||null,this._snapPts=c||null,this._isSelfSnap=void 0!==l&&l}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.snapLine=function(a,c){var l=new $i(a,this._snapTolerance);return l.setAllowSnappingToSourceVertices(this._isSelfSnap),l.snapTo(c)},r.prototype.transformCoordinates=function(a,c){var l=a.toCoordinateArray(),g=this.snapLine(l,this._snapPts);return this._factory.getCoordinateSequenceFactory().create(g)},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},r}(Qn),On=function(){this._isFirst=!0,this._commonMantissaBitsCount=53,this._commonBits=0,this._commonSignExp=null};On.prototype.getCommon=function(){return I.longBitsToDouble(this._commonBits)},On.prototype.add=function(e){var r=I.doubleToLongBits(e);return this._isFirst?(this._commonBits=r,this._commonSignExp=On.signExpBits(this._commonBits),this._isFirst=!1,null):On.signExpBits(r)!==this._commonSignExp?(this._commonBits=0,null):(this._commonMantissaBitsCount=On.numCommonMostSigMantissaBits(this._commonBits,r),void(this._commonBits=On.zeroLowerBits(this._commonBits,64-(12+this._commonMantissaBitsCount))))},On.prototype.toString=function(){if(1===arguments.length){var e=arguments[0],r=I.longBitsToDouble(e),a="0000000000000000000000000000000000000000000000000000000000000000"+I.toBinaryString(e),c=a.substring(a.length-64);return c.substring(0,1)+" "+c.substring(1,12)+"(exp) "+c.substring(12)+" [ "+r+" ]"}},On.prototype.interfaces_=function(){return[]},On.prototype.getClass=function(){return On},On.getBit=function(e,r){return e&1<>52},On.zeroLowerBits=function(e,r){return e&~((1<=0;c--){if(On.getBit(e,c)!==On.getBit(r,c))return a;a++}return 52};var uo=function(){this._commonCoord=null,this._ccFilter=new na},Es={CommonCoordinateFilter:{configurable:!0},Translater:{configurable:!0}};uo.prototype.addCommonBits=function(e){var r=new ko(this._commonCoord);e.apply(r),e.geometryChanged()},uo.prototype.removeCommonBits=function(e){if(0===this._commonCoord.x&&0===this._commonCoord.y)return e;var r=new k(this._commonCoord);r.x=-r.x,r.y=-r.y;var a=new ko(r);return e.apply(a),e.geometryChanged(),e},uo.prototype.getCommonCoordinate=function(){return this._commonCoord},uo.prototype.add=function(e){e.apply(this._ccFilter),this._commonCoord=this._ccFilter.getCommonCoordinate()},uo.prototype.interfaces_=function(){return[]},uo.prototype.getClass=function(){return uo},Es.CommonCoordinateFilter.get=function(){return na},Es.Translater.get=function(){return ko},Object.defineProperties(uo,Es);var na=function(){this._commonBitsX=new On,this._commonBitsY=new On};na.prototype.filter=function(e){this._commonBitsX.add(e.x),this._commonBitsY.add(e.y)},na.prototype.getCommonCoordinate=function(){return new k(this._commonBitsX.getCommon(),this._commonBitsY.getCommon())},na.prototype.interfaces_=function(){return[C]},na.prototype.getClass=function(){return na};var ko=function(){this.trans=null,this.trans=arguments[0]};ko.prototype.filter=function(e,r){var a=e.getOrdinate(r,0)+this.trans.x,c=e.getOrdinate(r,1)+this.trans.y;e.setOrdinate(r,0,a),e.setOrdinate(r,1,c)},ko.prototype.isDone=function(){return!1},ko.prototype.isGeometryChanged=function(){return!0},ko.prototype.interfaces_=function(){return[zr]},ko.prototype.getClass=function(){return ko};var an=function(e,r){this._geom=new Array(2).fill(null),this._snapTolerance=null,this._cbr=null,this._geom[0]=e,this._geom[1]=r,this.computeSnapTolerance()};an.prototype.selfSnap=function(e){return new Ur(e).snapTo(e,this._snapTolerance)},an.prototype.removeCommonBits=function(e){this._cbr=new uo,this._cbr.add(e[0]),this._cbr.add(e[1]);var r=new Array(2).fill(null);return r[0]=this._cbr.removeCommonBits(e[0].copy()),r[1]=this._cbr.removeCommonBits(e[1].copy()),r},an.prototype.prepareResult=function(e){return this._cbr.addCommonBits(e),e},an.prototype.getResultGeometry=function(e){var r=this.snap(this._geom),a=ht.overlayOp(r[0],r[1],e);return this.prepareResult(a)},an.prototype.checkValid=function(e){e.isValid()||it.out.println("Snapped geometry is invalid")},an.prototype.computeSnapTolerance=function(){this._snapTolerance=Ur.computeOverlaySnapTolerance(this._geom[0],this._geom[1])},an.prototype.snap=function(e){var r=this.removeCommonBits(e);return Ur.snap(r[0],r[1],this._snapTolerance)},an.prototype.interfaces_=function(){return[]},an.prototype.getClass=function(){return an},an.overlayOp=function(e,r,a){return new an(e,r).getResultGeometry(a)},an.union=function(e,r){return an.overlayOp(e,r,ht.UNION)},an.intersection=function(e,r){return an.overlayOp(e,r,ht.INTERSECTION)},an.symDifference=function(e,r){return an.overlayOp(e,r,ht.SYMDIFFERENCE)},an.difference=function(e,r){return an.overlayOp(e,r,ht.DIFFERENCE)};var En=function(e,r){this._geom=new Array(2).fill(null),this._geom[0]=e,this._geom[1]=r};En.prototype.getResultGeometry=function(e){var r=null,a=!1,c=null;try{r=ht.overlayOp(this._geom[0],this._geom[1],e),a=!0}catch(l){if(!(l instanceof It))throw l;c=l}if(!a)try{r=an.overlayOp(this._geom[0],this._geom[1],e)}catch(l){throw l instanceof It?c:l}return r},En.prototype.interfaces_=function(){return[]},En.prototype.getClass=function(){return En},En.overlayOp=function(e,r,a){return new En(e,r).getResultGeometry(a)},En.union=function(e,r){return En.overlayOp(e,r,ht.UNION)},En.intersection=function(e,r){return En.overlayOp(e,r,ht.INTERSECTION)},En.symDifference=function(e,r){return En.overlayOp(e,r,ht.SYMDIFFERENCE)},En.difference=function(e,r){return En.overlayOp(e,r,ht.DIFFERENCE)};var Ra=function(){this.mce=null,this.chainIndex=null;var r=arguments[1];this.mce=arguments[0],this.chainIndex=r};Ra.prototype.computeIntersections=function(e,r){this.mce.computeIntersectsForChain(this.chainIndex,e.mce,e.chainIndex,r)},Ra.prototype.interfaces_=function(){return[]},Ra.prototype.getClass=function(){return Ra};var jn=function e(){if(this._label=null,this._xValue=null,this._eventType=null,this._insertEvent=null,this._deleteEventIndex=null,this._obj=null,2===arguments.length){var r=arguments[0],a=arguments[1];this._eventType=e.DELETE,this._xValue=r,this._insertEvent=a}else if(3===arguments.length){var c=arguments[0],l=arguments[1],g=arguments[2];this._eventType=e.INSERT,this._label=c,this._xValue=l,this._obj=g}},Aa={INSERT:{configurable:!0},DELETE:{configurable:!0}};jn.prototype.isDelete=function(){return this._eventType===jn.DELETE},jn.prototype.setDeleteEventIndex=function(e){this._deleteEventIndex=e},jn.prototype.getObject=function(){return this._obj},jn.prototype.compareTo=function(e){return this._xValuee._xValue?1:this._eventTypee._eventType?1:0},jn.prototype.getInsertEvent=function(){return this._insertEvent},jn.prototype.isInsert=function(){return this._eventType===jn.INSERT},jn.prototype.isSameLabel=function(e){return null!==this._label&&this._label===e._label},jn.prototype.getDeleteEventIndex=function(){return this._deleteEventIndex},jn.prototype.interfaces_=function(){return[T]},jn.prototype.getClass=function(){return jn},Aa.INSERT.get=function(){return 1},Aa.DELETE.get=function(){return 2},Object.defineProperties(jn,Aa);var Oa=function(){};Oa.prototype.interfaces_=function(){return[]},Oa.prototype.getClass=function(){return Oa};var ln=function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._properIntersectionPoint=null,this._li=null,this._includeProper=null,this._recordIsolated=null,this._isSelfIntersection=null,this._numIntersections=0,this.numTests=0,this._bdyNodes=null,this._isDone=!1,this._isDoneWhenProperInt=!1;var r=arguments[1],a=arguments[2];this._li=arguments[0],this._includeProper=r,this._recordIsolated=a};ln.prototype.isTrivialIntersection=function(e,r,a,c){if(e===a&&1===this._li.getIntersectionNum()){if(ln.isAdjacentSegments(r,c))return!0;if(e.isClosed()){var l=e.getNumPoints()-1;if(0===r&&c===l||0===c&&r===l)return!0}}return!1},ln.prototype.getProperIntersectionPoint=function(){return this._properIntersectionPoint},ln.prototype.setIsDoneIfProperInt=function(e){this._isDoneWhenProperInt=e},ln.prototype.hasProperInteriorIntersection=function(){return this._hasProperInterior},ln.prototype.isBoundaryPointInternal=function(e,r){for(var a=r.iterator();a.hasNext();){var c=a.next().getCoordinate();if(e.isIntersection(c))return!0}return!1},ln.prototype.hasProperIntersection=function(){return this._hasProper},ln.prototype.hasIntersection=function(){return this._hasIntersection},ln.prototype.isDone=function(){return this._isDone},ln.prototype.isBoundaryPoint=function(e,r){return!(null===r||!this.isBoundaryPointInternal(e,r[0])&&!this.isBoundaryPointInternal(e,r[1]))},ln.prototype.setBoundaryNodes=function(e,r){this._bdyNodes=new Array(2).fill(null),this._bdyNodes[0]=e,this._bdyNodes[1]=r},ln.prototype.addIntersections=function(e,r,a,c){if(e===a&&r===c)return null;this.numTests++;var l=e.getCoordinates()[r],g=e.getCoordinates()[r+1],x=a.getCoordinates()[c],_=a.getCoordinates()[c+1];this._li.computeIntersection(l,g,x,_),this._li.hasIntersection()&&(this._recordIsolated&&(e.setIsolated(!1),a.setIsolated(!1)),this._numIntersections++,this.isTrivialIntersection(e,r,a,c)||(this._hasIntersection=!0,!this._includeProper&&this._li.isProper()||(e.addIntersections(this._li,r,0),a.addIntersections(this._li,c,1)),this._li.isProper()&&(this._properIntersectionPoint=this._li.getIntersection(0).copy(),this._hasProper=!0,this._isDoneWhenProperInt&&(this._isDone=!0),this.isBoundaryPoint(this._li,this._bdyNodes)||(this._hasProperInterior=!0))))},ln.prototype.interfaces_=function(){return[]},ln.prototype.getClass=function(){return ln},ln.isAdjacentSegments=function(e,r){return 1===Math.abs(e-r)};var Qc=function(e){function r(){e.call(this),this.events=new ee,this.nOverlaps=null}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.prepareEvents=function(){Ci.sort(this.events);for(var a=0;ar||this._maxg?1:0},va.prototype.interfaces_=function(){return[F]},va.prototype.getClass=function(){return va};var E0=function(e){function r(){e.call(this),this._item=null;var c=arguments[1],l=arguments[2];this._min=arguments[0],this._max=c,this._item=l}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.query=function(a,c,l){if(!this.intersects(a,c))return null;l.visitItem(this._item)},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},r}(Ki),M0=function(e){function r(){e.call(this),this._node1=null,this._node2=null;var c=arguments[1];this._node1=arguments[0],this._node2=c,this.buildExtent(this._node1,this._node2)}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.buildExtent=function(a,c){this._min=Math.min(a._min,c._min),this._max=Math.max(a._max,c._max)},r.prototype.query=function(a,c,l){if(!this.intersects(a,c))return null;null!==this._node1&&this._node1.query(a,c,l),null!==this._node2&&this._node2.query(a,c,l)},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},r}(Ki),vi=function(){this._leaves=new ee,this._root=null,this._level=0};vi.prototype.buildTree=function(){Ci.sort(this._leaves,new Ki.NodeComparator);for(var e=this._leaves,r=null,a=new ee;;){if(this.buildLevel(e,a),1===a.size())return a.get(0);r=e,e=a,a=r}},vi.prototype.insert=function(e,r,a){if(null!==this._root)throw new Error("Index cannot be added to once it has been queried");this._leaves.add(new E0(e,r,a))},vi.prototype.query=function(e,r,a){this.init(),this._root.query(e,r,a)},vi.prototype.buildRoot=function(){if(null!==this._root)return null;this._root=this.buildTree()},vi.prototype.printNode=function(e){it.out.println(or.toLineString(new k(e._min,this._level),new k(e._max,this._level)))},vi.prototype.init=function(){if(null!==this._root)return null;this.buildRoot()},vi.prototype.buildLevel=function(e,r){this._level++,r.clear();for(var a=0;a=2,"found LineString with single point"),this.insertBoundaryPoint(this._argIndex,c[0]),this.insertBoundaryPoint(this._argIndex,c[c.length-1])},r.prototype.getInvalidPoint=function(){return this._invalidPoint},r.prototype.getBoundaryPoints=function(){for(var a=this.getBoundaryNodes(),c=new Array(a.size()).fill(null),l=0,g=a.iterator();g.hasNext();){var x=g.next();c[l++]=x.getCoordinate().copy()}return c},r.prototype.getBoundaryNodes=function(){return null===this._boundaryNodes&&(this._boundaryNodes=this._nodes.getBoundaryNodes(this._argIndex)),this._boundaryNodes},r.prototype.addSelfIntersectionNode=function(a,c,l){if(this.isBoundaryNode(a,c))return null;l===L.BOUNDARY&&this._useBoundaryDeterminationRule?this.insertBoundaryPoint(a,c):this.insertPoint(a,c,l)},r.prototype.addPolygonRing=function(a,c,l){if(a.isEmpty())return null;var g=Ve.removeRepeatedPoints(a.getCoordinates());if(g.length<4)return this._hasTooFewPoints=!0,this._invalidPoint=g[0],null;var x=c,_=l;Ne.isCCW(g)&&(x=l,_=c);var B=new Za(g,new lr(this._argIndex,L.BOUNDARY,x,_));this._lineEdgeMap.put(a,B),this.insertEdge(B),this.insertPoint(this._argIndex,g[0],L.BOUNDARY)},r.prototype.insertPoint=function(a,c,l){var g=this._nodes.addNode(c),x=g.getLabel();null===x?g._label=new lr(a,l):x.setLocation(a,l)},r.prototype.createEdgeSetIntersector=function(){return new Qc},r.prototype.addSelfIntersectionNodes=function(a){for(var c=this._edges.iterator();c.hasNext();)for(var l=c.next(),g=l.getLabel().getLocation(a),x=l.eiList.iterator();x.hasNext();){var _=x.next();this.addSelfIntersectionNode(a,_.coord,g)}},r.prototype.add=function(){if(1!==arguments.length)return e.prototype.add.apply(this,arguments);var a=arguments[0];if(a.isEmpty())return null;if(a instanceof un&&(this._useBoundaryDeterminationRule=!1),a instanceof Nr)this.addPolygon(a);else if(a instanceof Ar)this.addLineString(a);else if(a instanceof Tn)this.addPoint(a);else if(a instanceof Bn)this.addCollection(a);else if(a instanceof Ii)this.addCollection(a);else if(a instanceof un)this.addCollection(a);else{if(!(a instanceof Fr))throw new Error(a.getClass().getName());this.addCollection(a)}},r.prototype.addCollection=function(a){for(var c=0;c50?(null===this._areaPtLocator&&(this._areaPtLocator=new ia(this._parentGeom)),this._areaPtLocator.locate(a)):this._ptLocator.locate(a,this._parentGeom)},r.prototype.findEdge=function(){return 1===arguments.length?this._lineEdgeMap.get(arguments[0]):e.prototype.findEdge.apply(this,arguments)},r.prototype.interfaces_=function(){return[]},r.prototype.getClass=function(){return r},r.determineBoundary=function(a,c){return a.isInBoundary(c)?L.BOUNDARY:L.INTERIOR},r}(Tr),pa=function(){if(this._li=new Or,this._resultPrecisionModel=null,this._arg=null,1===arguments.length){var e=arguments[0];this.setComputationPrecision(e.getPrecisionModel()),this._arg=new Array(1).fill(null),this._arg[0]=new Do(0,e)}else if(2===arguments.length){var r=arguments[0],a=arguments[1],c=P.OGC_SFS_BOUNDARY_RULE;r.getPrecisionModel().compareTo(a.getPrecisionModel())>=0?this.setComputationPrecision(r.getPrecisionModel()):this.setComputationPrecision(a.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new Do(0,r,c),this._arg[1]=new Do(1,a,c)}else if(3===arguments.length){var l=arguments[0],g=arguments[1],x=arguments[2];l.getPrecisionModel().compareTo(g.getPrecisionModel())>=0?this.setComputationPrecision(l.getPrecisionModel()):this.setComputationPrecision(g.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new Do(0,l,x),this._arg[1]=new Do(1,g,x)}};pa.prototype.getArgGeometry=function(e){return this._arg[e].getGeometry()},pa.prototype.setComputationPrecision=function(e){this._resultPrecisionModel=e,this._li.setPrecisionModel(this._resultPrecisionModel)},pa.prototype.interfaces_=function(){return[]},pa.prototype.getClass=function(){return pa};var Po=function(){};Po.prototype.interfaces_=function(){return[]},Po.prototype.getClass=function(){return Po},Po.map=function(){if(arguments[0]instanceof nt&&Pe(arguments[1],Po.MapOp)){for(var e=arguments[0],r=arguments[1],a=new ee,c=0;c=e.size()?null:e.get(r)},Gr.union=function(e){return new Gr(e).union()},q0.STRTREE_NODE_CAPACITY.get=function(){return 4},Object.defineProperties(Gr,q0);var Ma=function(){};Ma.prototype.interfaces_=function(){return[]},Ma.prototype.getClass=function(){return Ma},Ma.union=function(e,r){if(e.isEmpty()||r.isEmpty()){if(e.isEmpty()&&r.isEmpty())return ht.createEmptyResult(ht.UNION,e,r,e.getFactory());if(e.isEmpty())return r.copy();if(r.isEmpty())return e.copy()}return e.checkNotGeometryCollection(e),e.checkNotGeometryCollection(r),En.overlayOp(e,r,ht.UNION)},D.GeoJSONReader=ja,D.GeoJSONWriter=C0,D.OverlayOp=ht,D.UnionOp=Ma,D.BufferOp=tn,Object.defineProperty(D,"__esModule",{value:!0})}(le)}}]); \ No newline at end of file diff --git a/web/611.5c65ee89d09abe22.js b/web/611.5c65ee89d09abe22.js new file mode 100644 index 0000000000000000000000000000000000000000..a2c3bf75ebfb1acc8e1dbdf841cae71e9b5e9bf6 --- /dev/null +++ b/web/611.5c65ee89d09abe22.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[611],{3726:(R,P,o)=>{o.d(P,{R:()=>g});var e=o(8750),m=o(1985),w=o(1397),y=o(7441),p=o(8071),b=o(6450);const T=["addListener","removeListener"],D=["addEventListener","removeEventListener"],k=["on","off"];function g(s,h,c,x){if((0,p.T)(c)&&(x=c,c=void 0),x)return g(s,h,c).pipe((0,b.I)(x));const[E,r]=function O(s){return(0,p.T)(s.addEventListener)&&(0,p.T)(s.removeEventListener)}(s)?D.map(u=>v=>s[u](h,v,c)):function A(s){return(0,p.T)(s.addListener)&&(0,p.T)(s.removeListener)}(s)?T.map(_(s,h)):function f(s){return(0,p.T)(s.on)&&(0,p.T)(s.off)}(s)?k.map(_(s,h)):[];if(!E&&(0,y.X)(s))return(0,w.Z)(u=>g(u,h,c))((0,e.Tg)(s));if(!E)throw new TypeError("Invalid event target");return new m.c(u=>{const v=(...M)=>u.next(1r(v)})}function _(s,h){return c=>x=>s[c](h,x)}},9454:(R,P,o)=>{o.d(P,{BS:()=>K,MY:()=>V,GK:()=>S,Z2:()=>W});var e=o(4438),m=o(9888),w=o(5024),y=o(1413),p=o(8359);const b=new e.nKC("CdkAccordion");let T=(()=>{class a{_stateChanges=new y.B;_openCloseAllActions=new y.B;id=(0,e.WQX)(m.g7).getId("cdk-accordion-");multi=!1;openAll(){this.multi&&this._openCloseAllActions.next(!0)}closeAll(){this._openCloseAllActions.next(!1)}ngOnChanges(n){this._stateChanges.next(n)}ngOnDestroy(){this._stateChanges.complete(),this._openCloseAllActions.complete()}static \u0275fac=function(t){return new(t||a)};static \u0275dir=e.FsC({type:a,selectors:[["cdk-accordion"],["","cdkAccordion",""]],inputs:{multi:[2,"multi","multi",e.L39]},exportAs:["cdkAccordion"],features:[e.Jv_([{provide:b,useExisting:a}]),e.GFd,e.OA$]})}return a})(),D=(()=>{class a{accordion=(0,e.WQX)(b,{optional:!0,skipSelf:!0});_changeDetectorRef=(0,e.WQX)(e.gRc);_expansionDispatcher=(0,e.WQX)(w.zP);_openCloseAllSubscription=p.yU.EMPTY;closed=new e.bkB;opened=new e.bkB;destroyed=new e.bkB;expandedChange=new e.bkB;id=(0,e.WQX)(m.g7).getId("cdk-accordion-child-");get expanded(){return this._expanded}set expanded(n){this._expanded!==n&&(this._expanded=n,this.expandedChange.emit(n),n?(this.opened.emit(),this._expansionDispatcher.notify(this.id,this.accordion?this.accordion.id:this.id)):this.closed.emit(),this._changeDetectorRef.markForCheck())}_expanded=!1;disabled=!1;_removeUniqueSelectionListener=()=>{};constructor(){}ngOnInit(){this._removeUniqueSelectionListener=this._expansionDispatcher.listen((n,t)=>{this.accordion&&!this.accordion.multi&&this.accordion.id===t&&this.id!==n&&(this.expanded=!1)}),this.accordion&&(this._openCloseAllSubscription=this._subscribeToOpenCloseAllActions())}ngOnDestroy(){this.opened.complete(),this.closed.complete(),this.destroyed.emit(),this.destroyed.complete(),this._removeUniqueSelectionListener(),this._openCloseAllSubscription.unsubscribe()}toggle(){this.disabled||(this.expanded=!this.expanded)}close(){this.disabled||(this.expanded=!1)}open(){this.disabled||(this.expanded=!0)}_subscribeToOpenCloseAllActions(){return this.accordion._openCloseAllActions.subscribe(n=>{this.disabled||(this.expanded=n)})}static \u0275fac=function(t){return new(t||a)};static \u0275dir=e.FsC({type:a,selectors:[["cdk-accordion-item"],["","cdkAccordionItem",""]],inputs:{expanded:[2,"expanded","expanded",e.L39],disabled:[2,"disabled","disabled",e.L39]},outputs:{closed:"closed",opened:"opened",destroyed:"destroyed",expandedChange:"expandedChange"},exportAs:["cdkAccordionItem"],features:[e.Jv_([{provide:b,useValue:void 0}]),e.GFd]})}return a})(),k=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275mod=e.$C({type:a});static \u0275inj=e.G2t({})}return a})();var g=o(6939),_=o(3),A=o(9172),f=o(5964),O=o(6697),s=o(7336),h=o(983),c=o(7786),x=o(177),E=o(9046);o(9969);const u=["body"],v=["bodyWrapper"],M=[[["mat-expansion-panel-header"]],"*",[["mat-action-row"]]],B=["mat-expansion-panel-header","*","mat-action-row"];function L(a,C){}const X=[[["mat-panel-title"]],[["mat-panel-description"]],"*"],N=["mat-panel-title","mat-panel-description","*"];function G(a,C){1&a&&(e.j41(0,"span",1),e.qSk(),e.j41(1,"svg",2),e.nrm(2,"path",3),e.k0s()())}const I=new e.nKC("MAT_ACCORDION"),F=new e.nKC("MAT_EXPANSION_PANEL");let z=(()=>{class a{_template=(0,e.WQX)(e.C4Q);_expansionPanel=(0,e.WQX)(F,{optional:!0});constructor(){}static \u0275fac=function(t){return new(t||a)};static \u0275dir=e.FsC({type:a,selectors:[["ng-template","matExpansionPanelContent",""]]})}return a})();const H=new e.nKC("MAT_EXPANSION_PANEL_DEFAULT_OPTIONS");let S=(()=>{class a extends D{_viewContainerRef=(0,e.WQX)(e.c1b);_animationsDisabled="NoopAnimations"===(0,e.WQX)(e.bc$,{optional:!0});_document=(0,e.WQX)(x.qQ);_ngZone=(0,e.WQX)(e.SKi);_elementRef=(0,e.WQX)(e.aKT);_renderer=(0,e.WQX)(e.sFG);_cleanupTransitionEnd;get hideToggle(){return this._hideToggle||this.accordion&&this.accordion.hideToggle}set hideToggle(n){this._hideToggle=n}_hideToggle=!1;get togglePosition(){return this._togglePosition||this.accordion&&this.accordion.togglePosition}set togglePosition(n){this._togglePosition=n}_togglePosition;afterExpand=new e.bkB;afterCollapse=new e.bkB;_inputChanges=new y.B;accordion=(0,e.WQX)(I,{optional:!0,skipSelf:!0});_lazyContent;_body;_bodyWrapper;_portal;_headerId=(0,e.WQX)(m.g7).getId("mat-expansion-panel-header-");constructor(){super();const n=(0,e.WQX)(H,{optional:!0});this._expansionDispatcher=(0,e.WQX)(w.zP),n&&(this.hideToggle=n.hideToggle)}_hasSpacing(){return!!this.accordion&&this.expanded&&"default"===this.accordion.displayMode}_getExpandedState(){return this.expanded?"expanded":"collapsed"}toggle(){this.expanded=!this.expanded}close(){this.expanded=!1}open(){this.expanded=!0}ngAfterContentInit(){this._lazyContent&&this._lazyContent._expansionPanel===this&&this.opened.pipe((0,A.Z)(null),(0,f.p)(()=>this.expanded&&!this._portal),(0,O.s)(1)).subscribe(()=>{this._portal=new g.VA(this._lazyContent._template,this._viewContainerRef)}),this._setupAnimationEvents()}ngOnChanges(n){this._inputChanges.next(n)}ngOnDestroy(){super.ngOnDestroy(),this._cleanupTransitionEnd?.(),this._inputChanges.complete()}_containsFocus(){if(this._body){const n=this._document.activeElement,t=this._body.nativeElement;return n===t||t.contains(n)}return!1}_transitionEndListener=({target:n,propertyName:t})=>{n===this._bodyWrapper?.nativeElement&&"grid-template-rows"===t&&this._ngZone.run(()=>{this.expanded?this.afterExpand.emit():this.afterCollapse.emit()})};_setupAnimationEvents(){this._ngZone.runOutsideAngular(()=>{this._animationsDisabled?(this.opened.subscribe(()=>this._ngZone.run(()=>this.afterExpand.emit())),this.closed.subscribe(()=>this._ngZone.run(()=>this.afterCollapse.emit()))):setTimeout(()=>{const n=this._elementRef.nativeElement;this._cleanupTransitionEnd=this._renderer.listen(n,"transitionend",this._transitionEndListener),n.classList.add("mat-expansion-panel-animations-enabled")},200)})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=e.VBU({type:a,selectors:[["mat-expansion-panel"]],contentQueries:function(t,i,l){if(1&t&&e.wni(l,z,5),2&t){let d;e.mGM(d=e.lsd())&&(i._lazyContent=d.first)}},viewQuery:function(t,i){if(1&t&&(e.GBs(u,5),e.GBs(v,5)),2&t){let l;e.mGM(l=e.lsd())&&(i._body=l.first),e.mGM(l=e.lsd())&&(i._bodyWrapper=l.first)}},hostAttrs:[1,"mat-expansion-panel"],hostVars:4,hostBindings:function(t,i){2&t&&e.AVh("mat-expanded",i.expanded)("mat-expansion-panel-spacing",i._hasSpacing())},inputs:{hideToggle:[2,"hideToggle","hideToggle",e.L39],togglePosition:"togglePosition"},outputs:{afterExpand:"afterExpand",afterCollapse:"afterCollapse"},exportAs:["matExpansionPanel"],features:[e.Jv_([{provide:I,useValue:void 0},{provide:F,useExisting:a}]),e.GFd,e.Vt3,e.OA$],ngContentSelectors:B,decls:9,vars:4,consts:[["bodyWrapper",""],["body",""],[1,"mat-expansion-panel-content-wrapper"],["role","region",1,"mat-expansion-panel-content",3,"id"],[1,"mat-expansion-panel-body"],[3,"cdkPortalOutlet"]],template:function(t,i){1&t&&(e.NAR(M),e.SdG(0),e.j41(1,"div",2,0)(3,"div",3,1)(5,"div",4),e.SdG(6,1),e.DNE(7,L,0,0,"ng-template",5),e.k0s(),e.SdG(8,2),e.k0s()()),2&t&&(e.R7$(),e.BMQ("inert",i.expanded?null:""),e.R7$(2),e.Y8G("id",i.id),e.BMQ("aria-labelledby",i._headerId),e.R7$(4),e.Y8G("cdkPortalOutlet",i._portal))},dependencies:[g.I3],styles:[".mat-expansion-panel{box-sizing:content-box;display:block;margin:0;overflow:hidden;position:relative;background:var(--mat-expansion-container-background-color, var(--mat-sys-surface));color:var(--mat-expansion-container-text-color, var(--mat-sys-on-surface));border-radius:var(--mat-expansion-container-shape, 12px)}.mat-expansion-panel.mat-expansion-panel-animations-enabled{transition:margin 225ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}.mat-accordion .mat-expansion-panel:not(.mat-expanded),.mat-accordion .mat-expansion-panel:not(.mat-expansion-panel-spacing){border-radius:0}.mat-accordion .mat-expansion-panel:first-of-type{border-top-right-radius:var(--mat-expansion-container-shape, 12px);border-top-left-radius:var(--mat-expansion-container-shape, 12px)}.mat-accordion .mat-expansion-panel:last-of-type{border-bottom-right-radius:var(--mat-expansion-container-shape, 12px);border-bottom-left-radius:var(--mat-expansion-container-shape, 12px)}@media(forced-colors: active){.mat-expansion-panel{outline:solid 1px}}.mat-expansion-panel-content-wrapper{display:grid;grid-template-rows:0fr;grid-template-columns:100%}.mat-expansion-panel-animations-enabled .mat-expansion-panel-content-wrapper{transition:grid-template-rows 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper{grid-template-rows:1fr}@supports not (grid-template-rows: 0fr){.mat-expansion-panel-content-wrapper{height:0}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper{height:auto}}.mat-expansion-panel-content{display:flex;flex-direction:column;overflow:visible;min-height:0;visibility:hidden;font-family:var(--mat-expansion-container-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-expansion-container-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-expansion-container-text-weight, var(--mat-sys-body-large-weight));line-height:var(--mat-expansion-container-text-line-height, var(--mat-sys-body-large-line-height));letter-spacing:var(--mat-expansion-container-text-tracking, var(--mat-sys-body-large-tracking))}.mat-expansion-panel-animations-enabled .mat-expansion-panel-content{transition:visibility 190ms linear}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper>.mat-expansion-panel-content{visibility:visible}.mat-expansion-panel-body{padding:0 24px 16px}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion>.mat-expansion-panel-spacing:first-child,.mat-accordion>*:first-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-top:0}.mat-accordion>.mat-expansion-panel-spacing:last-child,.mat-accordion>*:last-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px;border-top-color:var(--mat-expansion-actions-divider-color, var(--mat-sys-outline))}.mat-action-row .mat-button-base,.mat-action-row .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-action-row .mat-button-base,[dir=rtl] .mat-action-row .mat-mdc-button-base{margin-left:0;margin-right:8px}"],encapsulation:2,changeDetection:0})}return a})(),W=(()=>{class a{panel=(0,e.WQX)(S,{host:!0});_element=(0,e.WQX)(e.aKT);_focusMonitor=(0,e.WQX)(m.FN);_changeDetectorRef=(0,e.WQX)(e.gRc);_parentChangeSubscription=p.yU.EMPTY;constructor(){(0,e.WQX)(E.l).load(_.Ah);const n=this.panel,t=(0,e.WQX)(H,{optional:!0}),i=(0,e.WQX)(new e.ES_("tabindex"),{optional:!0}),l=n.accordion?n.accordion._stateChanges.pipe((0,f.p)(d=>!(!d.hideToggle&&!d.togglePosition))):h.w;this.tabIndex=parseInt(i||"")||0,this._parentChangeSubscription=(0,c.h)(n.opened,n.closed,l,n._inputChanges.pipe((0,f.p)(d=>!!(d.hideToggle||d.disabled||d.togglePosition)))).subscribe(()=>this._changeDetectorRef.markForCheck()),n.closed.pipe((0,f.p)(()=>n._containsFocus())).subscribe(()=>this._focusMonitor.focusVia(this._element,"program")),t&&(this.expandedHeight=t.expandedHeight,this.collapsedHeight=t.collapsedHeight)}expandedHeight;collapsedHeight;tabIndex=0;get disabled(){return this.panel.disabled}_toggle(){this.disabled||this.panel.toggle()}_isExpanded(){return this.panel.expanded}_getExpandedState(){return this.panel._getExpandedState()}_getPanelId(){return this.panel.id}_getTogglePosition(){return this.panel.togglePosition}_showToggle(){return!this.panel.hideToggle&&!this.panel.disabled}_getHeaderHeight(){const n=this._isExpanded();return n&&this.expandedHeight?this.expandedHeight:!n&&this.collapsedHeight?this.collapsedHeight:null}_keydown(n){switch(n.keyCode){case s.t6:case s.Fm:(0,s.rp)(n)||(n.preventDefault(),this._toggle());break;default:return void(this.panel.accordion&&this.panel.accordion._handleHeaderKeydown(n))}}focus(n,t){n?this._focusMonitor.focusVia(this._element,n,t):this._element.nativeElement.focus(t)}ngAfterViewInit(){this._focusMonitor.monitor(this._element).subscribe(n=>{n&&this.panel.accordion&&this.panel.accordion._handleHeaderFocus(this)})}ngOnDestroy(){this._parentChangeSubscription.unsubscribe(),this._focusMonitor.stopMonitoring(this._element)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=e.VBU({type:a,selectors:[["mat-expansion-panel-header"]],hostAttrs:["role","button",1,"mat-expansion-panel-header","mat-focus-indicator"],hostVars:13,hostBindings:function(t,i){1&t&&e.bIt("click",function(){return i._toggle()})("keydown",function(d){return i._keydown(d)}),2&t&&(e.BMQ("id",i.panel._headerId)("tabindex",i.disabled?-1:i.tabIndex)("aria-controls",i._getPanelId())("aria-expanded",i._isExpanded())("aria-disabled",i.panel.disabled),e.xc7("height",i._getHeaderHeight()),e.AVh("mat-expanded",i._isExpanded())("mat-expansion-toggle-indicator-after","after"===i._getTogglePosition())("mat-expansion-toggle-indicator-before","before"===i._getTogglePosition()))},inputs:{expandedHeight:"expandedHeight",collapsedHeight:"collapsedHeight",tabIndex:[2,"tabIndex","tabIndex",n=>null==n?0:(0,e.Udg)(n)]},features:[e.GFd],ngContentSelectors:N,decls:5,vars:3,consts:[[1,"mat-content"],[1,"mat-expansion-indicator"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-hidden","true","focusable","false"],["d","M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z"]],template:function(t,i){1&t&&(e.NAR(X),e.j41(0,"span",0),e.SdG(1),e.SdG(2,1),e.SdG(3,2),e.k0s(),e.DNE(4,G,3,0,"span",1)),2&t&&(e.AVh("mat-content-hide-toggle",!i._showToggle()),e.R7$(4),e.vxM(i._showToggle()?4:-1))},styles:['.mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;height:var(--mat-expansion-header-collapsed-state-height, 48px);font-family:var(--mat-expansion-header-text-font, var(--mat-sys-title-medium-font));font-size:var(--mat-expansion-header-text-size, var(--mat-sys-title-medium-size));font-weight:var(--mat-expansion-header-text-weight, var(--mat-sys-title-medium-weight));line-height:var(--mat-expansion-header-text-line-height, var(--mat-sys-title-medium-line-height));letter-spacing:var(--mat-expansion-header-text-tracking, var(--mat-sys-title-medium-tracking))}.mat-expansion-panel-animations-enabled .mat-expansion-panel-header{transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header::before{border-radius:inherit}.mat-expansion-panel-header.mat-expanded{height:var(--mat-expansion-header-expanded-state-height, 64px)}.mat-expansion-panel-header[aria-disabled=true]{color:var(--mat-expansion-header-disabled-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-header-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}@media(hover: none){.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-container-background-color, var(--mat-sys-surface))}}.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-keyboard-focused,.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-program-focused{background:var(--mat-expansion-header-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-content.mat-content-hide-toggle{margin-right:8px}[dir=rtl] .mat-content.mat-content-hide-toggle{margin-right:0;margin-left:8px}.mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-left:24px;margin-right:0}[dir=rtl] .mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-right:24px;margin-left:0}.mat-expansion-panel-header-title{color:var(--mat-expansion-header-text-color, var(--mat-sys-on-surface))}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;flex-basis:0;margin-right:16px;align-items:center}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header-description{flex-grow:2;color:var(--mat-expansion-header-description-color, var(--mat-sys-on-surface-variant))}.mat-expansion-panel-animations-enabled .mat-expansion-indicator{transition:transform 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header.mat-expanded .mat-expansion-indicator{transform:rotate(180deg)}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:"";display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle;color:var(--mat-expansion-header-indicator-color, var(--mat-sys-on-surface-variant));display:var(--mat-expansion-legacy-header-indicator-display, none)}.mat-expansion-indicator svg{width:24px;height:24px;margin:0 -8px;vertical-align:middle;fill:var(--mat-expansion-header-indicator-color, var(--mat-sys-on-surface-variant));display:var(--mat-expansion-header-indicator-display, inline-block)}@media(forced-colors: active){.mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}}'],encapsulation:2,changeDetection:0})}return a})(),K=(()=>{class a extends T{_keyManager;_ownHeaders=new e.rOR;_headers;hideToggle=!1;displayMode="default";togglePosition="after";ngAfterContentInit(){this._headers.changes.pipe((0,A.Z)(this._headers)).subscribe(n=>{this._ownHeaders.reset(n.filter(t=>t.panel.accordion===this)),this._ownHeaders.notifyOnChanges()}),this._keyManager=new m.Bu(this._ownHeaders).withWrap().withHomeAndEnd()}_handleHeaderKeydown(n){this._keyManager.onKeydown(n)}_handleHeaderFocus(n){this._keyManager.updateActiveItem(n)}ngOnDestroy(){super.ngOnDestroy(),this._keyManager?.destroy(),this._ownHeaders.destroy()}static \u0275fac=(()=>{let n;return function(i){return(n||(n=e.xGo(a)))(i||a)}})();static \u0275dir=e.FsC({type:a,selectors:[["mat-accordion"]],contentQueries:function(t,i,l){if(1&t&&e.wni(l,W,5),2&t){let d;e.mGM(d=e.lsd())&&(i._headers=d)}},hostAttrs:[1,"mat-accordion"],hostVars:2,hostBindings:function(t,i){2&t&&e.AVh("mat-accordion-multi",i.multi)},inputs:{hideToggle:[2,"hideToggle","hideToggle",e.L39],displayMode:"displayMode",togglePosition:"togglePosition"},exportAs:["matAccordion"],features:[e.Jv_([{provide:I,useExisting:a}]),e.GFd,e.Vt3]})}return a})(),V=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275mod=e.$C({type:a});static \u0275inj=e.G2t({imports:[_.yE,k,g.jc]})}return a})()}}]); \ No newline at end of file diff --git a/web/628.02df1283b3c1d8f0.js b/web/628.02df1283b3c1d8f0.js new file mode 100644 index 0000000000000000000000000000000000000000..cdc75e7bb036dd8f31d0a63ef1a2bba63143713d --- /dev/null +++ b/web/628.02df1283b3c1d8f0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[628],{2628:(se,L,a)=>{a.d(L,{$3:()=>te,jL:()=>ae,pN:()=>P});var i=a(4438),c=a(3),y=a(3980),d=a(6969),h=a(9888),O=a(6860),r=a(9969),_=a(8359),b=a(1413),v=a(7786),F=a(7673),R=a(9030),A=a(1985),k=a(8203),p=a(7336),S=a(9327),D=a(6939),I=a(177),W=a(9417),V=a(2408),M=a(5964),x=a(6354),X=a(9172),g=a(5558),Q=a(8141),B=a(3236),G=a(8793),m=a(6697),H=a(3557),K=a(3703),Y=a(1397),N=a(8750);function C(l,u){return u?e=>(0,G.x)(u.pipe((0,m.s)(1),(0,H.w)()),e.pipe(C(l))):(0,Y.Z)((e,t)=>(0,N.Tg)(l(e,t)).pipe((0,m.s)(1),(0,K.u)(e)))}var j=a(1584);function U(l,u=B.E){const e=(0,j.O)(l,u);return C(()=>e)}const z=["panel"],J=["*"];function Z(l,u){if(1&l){const e=i.RV6();i.j41(0,"div",1,0),i.bIt("@panelAnimation.done",function(o){i.eBV(e);const n=i.XpG();return i.Njj(n._animationDone.next(o))}),i.SdG(2),i.k0s()}if(2&l){const e=u.id,t=i.XpG();i.HbH(t._classList),i.AVh("mat-mdc-autocomplete-visible",t.showPanel)("mat-mdc-autocomplete-hidden",!t.showPanel)("mat-primary","primary"===t._color)("mat-accent","accent"===t._color)("mat-warn","warn"===t._color),i.Y8G("id",t.id)("@panelAnimation",t.isOpen?"visible":"hidden"),i.BMQ("aria-label",t.ariaLabel||null)("aria-labelledby",t._getPanelAriaLabelledby(e))}}const $=(0,r.hZ)("panelAnimation",[(0,r.wk)("void, hidden",(0,r.iF)({opacity:0,transform:"scaleY(0.8)"})),(0,r.kY)(":enter, hidden => visible",[(0,r.Os)([(0,r.i0)("0.03s linear",(0,r.iF)({opacity:1})),(0,r.i0)("0.12s cubic-bezier(0, 0, 0.2, 1)",(0,r.iF)({transform:"scaleY(1)"}))])]),(0,r.kY)(":leave, visible => hidden",[(0,r.i0)("0.075s linear",(0,r.iF)({opacity:0}))])]);class q{source;option;constructor(u,e){this.source=u,this.option=e}}const T=new i.nKC("mat-autocomplete-default-options",{providedIn:"root",factory:function ee(){return{autoActiveFirstOption:!1,autoSelectActiveOption:!1,hideSingleSelectionIndicator:!1,requireSelection:!1}}});let te=(()=>{class l{_changeDetectorRef=(0,i.WQX)(i.gRc);_elementRef=(0,i.WQX)(i.aKT);_defaults=(0,i.WQX)(T);_activeOptionChanges=_.yU.EMPTY;_animationDone=new i.bkB;_keyManager;showPanel=!1;get isOpen(){return this._isOpen&&this.showPanel}_isOpen=!1;_latestOpeningTrigger;_setColor(e){this._color=e,this._changeDetectorRef.markForCheck()}_color;template;panel;options;optionGroups;ariaLabel;ariaLabelledby;displayWith=null;autoActiveFirstOption;autoSelectActiveOption;requireSelection;panelWidth;disableRipple;optionSelected=new i.bkB;opened=new i.bkB;closed=new i.bkB;optionActivated=new i.bkB;set classList(e){this._classList=e,this._elementRef.nativeElement.className=""}_classList;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._syncParentProperties()}_hideSingleSelectionIndicator;_syncParentProperties(){if(this.options)for(const e of this.options)e._changeDetectorRef.markForCheck()}id=(0,i.WQX)(h.g7).getId("mat-autocomplete-");inertGroups;constructor(){const e=(0,i.WQX)(O.OD);this.inertGroups=e?.SAFARI||!1,this.autoActiveFirstOption=!!this._defaults.autoActiveFirstOption,this.autoSelectActiveOption=!!this._defaults.autoSelectActiveOption,this.requireSelection=!!this._defaults.requireSelection,this._hideSingleSelectionIndicator=this._defaults.hideSingleSelectionIndicator??!1}ngAfterContentInit(){this._keyManager=new h.Au(this.options).withWrap().skipPredicate(this._skipPredicate),this._activeOptionChanges=this._keyManager.change.subscribe(e=>{this.isOpen&&this.optionActivated.emit({source:this,option:this.options.toArray()[e]||null})}),this._setVisibility()}ngOnDestroy(){this._keyManager?.destroy(),this._activeOptionChanges.unsubscribe(),this._animationDone.complete()}_setScrollTop(e){this.panel&&(this.panel.nativeElement.scrollTop=e)}_getScrollTop(){return this.panel?this.panel.nativeElement.scrollTop:0}_setVisibility(){this.showPanel=!!this.options.length,this._changeDetectorRef.markForCheck()}_emitSelectEvent(e){const t=new q(this,e);this.optionSelected.emit(t)}_getPanelAriaLabelledby(e){return this.ariaLabel?null:this.ariaLabelledby?(e?e+" ":"")+this.ariaLabelledby:e}_skipPredicate(){return!1}static \u0275fac=function(t){return new(t||l)};static \u0275cmp=i.VBU({type:l,selectors:[["mat-autocomplete"]],contentQueries:function(t,o,n){if(1&t&&(i.wni(n,c.wT,5),i.wni(n,c.QC,5)),2&t){let s;i.mGM(s=i.lsd())&&(o.options=s),i.mGM(s=i.lsd())&&(o.optionGroups=s)}},viewQuery:function(t,o){if(1&t&&(i.GBs(i.C4Q,7),i.GBs(z,5)),2&t){let n;i.mGM(n=i.lsd())&&(o.template=n.first),i.mGM(n=i.lsd())&&(o.panel=n.first)}},hostAttrs:[1,"mat-mdc-autocomplete"],inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],displayWith:"displayWith",autoActiveFirstOption:[2,"autoActiveFirstOption","autoActiveFirstOption",i.L39],autoSelectActiveOption:[2,"autoSelectActiveOption","autoSelectActiveOption",i.L39],requireSelection:[2,"requireSelection","requireSelection",i.L39],panelWidth:"panelWidth",disableRipple:[2,"disableRipple","disableRipple",i.L39],classList:[0,"class","classList"],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",i.L39]},outputs:{optionSelected:"optionSelected",opened:"opened",closed:"closed",optionActivated:"optionActivated"},exportAs:["matAutocomplete"],features:[i.Jv_([{provide:c.is,useExisting:l}]),i.GFd],ngContentSelectors:J,decls:1,vars:0,consts:[["panel",""],["role","listbox",1,"mat-mdc-autocomplete-panel","mdc-menu-surface","mdc-menu-surface--open",3,"id"]],template:function(t,o){1&t&&(i.NAR(),i.DNE(0,Z,3,16,"ng-template"))},styles:["div.mat-mdc-autocomplete-panel{width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;box-sizing:border-box;position:static;border-radius:var(--mat-autocomplete-container-shape, var(--mat-sys-corner-extra-small));box-shadow:var(--mat-autocomplete-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));background-color:var(--mat-autocomplete-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-autocomplete-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden;pointer-events:none}mat-autocomplete{display:none}"],encapsulation:2,data:{animation:[$]},changeDetection:0})}return l})();const ie={provide:W.kq,useExisting:(0,i.Rfq)(()=>P),multi:!0},w=new i.nKC("mat-autocomplete-scroll-strategy",{providedIn:"root",factory:()=>{const l=(0,i.WQX)(d.hJ);return()=>l.scrollStrategies.reposition()}}),ne={provide:w,deps:[d.hJ],useFactory:function oe(l){return()=>l.scrollStrategies.reposition()}};let P=(()=>{class l{_environmentInjector=(0,i.WQX)(i.uvJ);_element=(0,i.WQX)(i.aKT);_overlay=(0,i.WQX)(d.hJ);_viewContainerRef=(0,i.WQX)(i.c1b);_zone=(0,i.WQX)(i.SKi);_changeDetectorRef=(0,i.WQX)(i.gRc);_dir=(0,i.WQX)(k.dS,{optional:!0});_formField=(0,i.WQX)(V.xb,{optional:!0,host:!0});_document=(0,i.WQX)(I.qQ);_viewportRuler=(0,i.WQX)(y.Xj);_scrollStrategy=(0,i.WQX)(w);_renderer=(0,i.WQX)(i.sFG);_defaults=(0,i.WQX)(T,{optional:!0});_overlayRef;_portal;_componentDestroyed=!1;_initialized=new b.B;_keydownSubscription;_outsideClickSubscription;_cleanupWindowBlur;_previousValue;_valueOnAttach;_valueOnLastKeydown;_positionStrategy;_manuallyFloatingLabel=!1;_closingActionsSubscription;_viewportSubscription=_.yU.EMPTY;_breakpointObserver=(0,i.WQX)(S.QP);_handsetLandscapeSubscription=_.yU.EMPTY;_canOpenOnNextFocus=!0;_valueBeforeAutoSelection;_pendingAutoselectedOption;_closeKeyEventStream=new b.B;_windowBlurHandler=()=>{this._canOpenOnNextFocus=this._document.activeElement!==this._element.nativeElement||this.panelOpen};_onChange=()=>{};_onTouched=()=>{};autocomplete;position="auto";connectedTo;autocompleteAttribute="off";autocompleteDisabled;constructor(){}_aboveClass="mat-mdc-autocomplete-panel-above";ngAfterViewInit(){this._initialized.next(),this._initialized.complete(),this._cleanupWindowBlur=this._renderer.listen("window","blur",this._windowBlurHandler)}ngOnChanges(e){e.position&&this._positionStrategy&&(this._setStrategyPositions(this._positionStrategy),this.panelOpen&&this._overlayRef.updatePosition())}ngOnDestroy(){this._cleanupWindowBlur?.(),this._handsetLandscapeSubscription.unsubscribe(),this._viewportSubscription.unsubscribe(),this._componentDestroyed=!0,this._destroyPanel(),this._closeKeyEventStream.complete(),this._clearFromModal()}get panelOpen(){return this._overlayAttached&&this.autocomplete.showPanel}_overlayAttached=!1;openPanel(){this._openPanelInternal()}closePanel(){this._resetLabel(),this._overlayAttached&&(this.panelOpen&&this._zone.run(()=>{this.autocomplete.closed.emit()}),this.autocomplete._latestOpeningTrigger===this&&(this.autocomplete._isOpen=!1,this.autocomplete._latestOpeningTrigger=null),this._overlayAttached=!1,this._pendingAutoselectedOption=null,this._overlayRef&&this._overlayRef.hasAttached()&&(this._overlayRef.detach(),this._closingActionsSubscription.unsubscribe()),this._updatePanelState(),this._componentDestroyed||this._changeDetectorRef.detectChanges(),this._trackedModal&&(0,h.Ae)(this._trackedModal,"aria-owns",this.autocomplete.id))}updatePosition(){this._overlayAttached&&this._overlayRef.updatePosition()}get panelClosingActions(){return(0,v.h)(this.optionSelections,this.autocomplete._keyManager.tabOut.pipe((0,M.p)(()=>this._overlayAttached)),this._closeKeyEventStream,this._getOutsideClickStream(),this._overlayRef?this._overlayRef.detachments().pipe((0,M.p)(()=>this._overlayAttached)):(0,F.of)()).pipe((0,x.T)(e=>e instanceof c.MI?e:null))}optionSelections=(0,R.v)(()=>{const e=this.autocomplete?this.autocomplete.options:null;return e?e.changes.pipe((0,X.Z)(e),(0,g.n)(()=>(0,v.h)(...e.map(t=>t.onSelectionChange)))):this._initialized.pipe((0,g.n)(()=>this.optionSelections))});get activeOption(){return this.autocomplete&&this.autocomplete._keyManager?this.autocomplete._keyManager.activeItem:null}_getOutsideClickStream(){return new A.c(e=>{const t=n=>{const s=(0,O.Fb)(n),f=this._formField?this._formField.getConnectedOverlayOrigin().nativeElement:null,E=this.connectedTo?this.connectedTo.elementRef.nativeElement:null;this._overlayAttached&&s!==this._element.nativeElement&&this._document.activeElement!==this._element.nativeElement&&(!f||!f.contains(s))&&(!E||!E.contains(s))&&this._overlayRef&&!this._overlayRef.overlayElement.contains(s)&&e.next(n)},o=[this._renderer.listen("document","click",t),this._renderer.listen("document","auxclick",t),this._renderer.listen("document","touchend",t)];return()=>{o.forEach(n=>n())}})}writeValue(e){Promise.resolve(null).then(()=>this._assignOptionValue(e))}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this._element.nativeElement.disabled=e}_handleKeydown(e){const t=e.keyCode,o=(0,p.rp)(e);if(t===p._f&&!o&&e.preventDefault(),this._valueOnLastKeydown=this._element.nativeElement.value,this.activeOption&&t===p.Fm&&this.panelOpen&&!o)this.activeOption._selectViaInteraction(),this._resetActiveItem(),e.preventDefault();else if(this.autocomplete){const n=this.autocomplete._keyManager.activeItem,s=t===p.i7||t===p.n6;t===p.wn||s&&!o&&this.panelOpen?this.autocomplete._keyManager.onKeydown(e):s&&this._canOpen()&&this._openPanelInternal(this._valueOnLastKeydown),(s||this.autocomplete._keyManager.activeItem!==n)&&(this._scrollToOption(this.autocomplete._keyManager.activeItemIndex||0),this.autocomplete.autoSelectActiveOption&&this.activeOption&&(this._pendingAutoselectedOption||(this._valueBeforeAutoSelection=this._valueOnLastKeydown),this._pendingAutoselectedOption=this.activeOption,this._assignOptionValue(this.activeOption.value)))}}_handleInput(e){let t=e.target,o=t.value;if("number"===t.type&&(o=""==o?null:parseFloat(o)),this._previousValue!==o){if(this._previousValue=o,this._pendingAutoselectedOption=null,(!this.autocomplete||!this.autocomplete.requireSelection)&&this._onChange(o),o){if(this.panelOpen&&!this.autocomplete.requireSelection){const n=this.autocomplete.options?.find(s=>s.selected);n&&o!==this._getDisplayValue(n.value)&&n.deselect(!1)}}else this._clearPreviousSelectedOption(null,!1);if(this._canOpen()&&this._document.activeElement===e.target){const n=this._valueOnLastKeydown??this._element.nativeElement.value;this._valueOnLastKeydown=null,this._openPanelInternal(n)}}}_handleFocus(){this._canOpenOnNextFocus?this._canOpen()&&(this._previousValue=this._element.nativeElement.value,this._attachOverlay(this._previousValue),this._floatLabel(!0)):this._canOpenOnNextFocus=!0}_handleClick(){this._canOpen()&&!this.panelOpen&&this._openPanelInternal()}_floatLabel(e=!1){this._formField&&"auto"===this._formField.floatLabel&&(e?this._formField._animateAndLockLabel():this._formField.floatLabel="always",this._manuallyFloatingLabel=!0)}_resetLabel(){this._manuallyFloatingLabel&&(this._formField&&(this._formField.floatLabel="auto"),this._manuallyFloatingLabel=!1)}_subscribeToClosingActions(){const e=new A.c(o=>{(0,i.mal)(()=>{o.next()},{injector:this._environmentInjector})}),t=this.autocomplete.options.changes.pipe((0,Q.M)(()=>this._positionStrategy.reapplyLastPosition()),U(0));return(0,v.h)(e,t).pipe((0,g.n)(()=>this._zone.run(()=>{const o=this.panelOpen;return this._resetActiveItem(),this._updatePanelState(),this._changeDetectorRef.detectChanges(),this.panelOpen&&this._overlayRef.updatePosition(),o!==this.panelOpen&&(this.panelOpen?this._emitOpened():this.autocomplete.closed.emit()),this.panelClosingActions})),(0,m.s)(1)).subscribe(o=>this._setValueAndClose(o))}_emitOpened(){this.autocomplete.opened.emit()}_destroyPanel(){this._overlayRef&&(this.closePanel(),this._overlayRef.dispose(),this._overlayRef=null)}_getDisplayValue(e){const t=this.autocomplete;return t&&t.displayWith?t.displayWith(e):e}_assignOptionValue(e){const t=this._getDisplayValue(e);null==e&&this._clearPreviousSelectedOption(null,!1),this._updateNativeInputValue(t??"")}_updateNativeInputValue(e){this._formField?this._formField._control.value=e:this._element.nativeElement.value=e,this._previousValue=e}_setValueAndClose(e){const t=this.autocomplete,o=e?e.source:this._pendingAutoselectedOption;o?(this._clearPreviousSelectedOption(o),this._assignOptionValue(o.value),this._onChange(o.value),t._emitSelectEvent(o),this._element.nativeElement.focus()):t.requireSelection&&this._element.nativeElement.value!==this._valueOnAttach&&(this._clearPreviousSelectedOption(null),this._assignOptionValue(null),t._animationDone?t._animationDone.pipe((0,m.s)(1)).subscribe(()=>this._onChange(null)):this._onChange(null)),this.closePanel()}_clearPreviousSelectedOption(e,t){this.autocomplete?.options?.forEach(o=>{o!==e&&o.selected&&o.deselect(t)})}_openPanelInternal(e=this._element.nativeElement.value){this._attachOverlay(e),this._floatLabel(),this._trackedModal&&(0,h.px)(this._trackedModal,"aria-owns",this.autocomplete.id)}_attachOverlay(e){let t=this._overlayRef;t?(this._positionStrategy.setOrigin(this._getConnectedElement()),t.updateSize({width:this._getPanelWidth()})):(this._portal=new D.VA(this.autocomplete.template,this._viewContainerRef,{id:this._formField?.getLabelId()}),t=this._overlay.create(this._getOverlayConfig()),this._overlayRef=t,this._viewportSubscription=this._viewportRuler.change().subscribe(()=>{this.panelOpen&&t&&t.updateSize({width:this._getPanelWidth()})}),this._handsetLandscapeSubscription=this._breakpointObserver.observe(S.Rp.HandsetLandscape).subscribe(n=>{n.matches?this._positionStrategy.withFlexibleDimensions(!0).withGrowAfterOpen(!0).withViewportMargin(8):this._positionStrategy.withFlexibleDimensions(!1).withGrowAfterOpen(!1).withViewportMargin(0)})),t&&!t.hasAttached()&&(t.attach(this._portal),this._valueOnAttach=e,this._valueOnLastKeydown=null,this._closingActionsSubscription=this._subscribeToClosingActions());const o=this.panelOpen;this.autocomplete._isOpen=this._overlayAttached=!0,this.autocomplete._latestOpeningTrigger=this,this.autocomplete._setColor(this._formField?.color),this._updatePanelState(),this._applyModalPanelOwnership(),this.panelOpen&&o!==this.panelOpen&&this._emitOpened()}_handlePanelKeydown=e=>{(e.keyCode===p._f&&!(0,p.rp)(e)||e.keyCode===p.i7&&(0,p.rp)(e,"altKey"))&&(this._pendingAutoselectedOption&&(this._updateNativeInputValue(this._valueBeforeAutoSelection??""),this._pendingAutoselectedOption=null),this._closeKeyEventStream.next(),this._resetActiveItem(),e.stopPropagation(),e.preventDefault())};_updatePanelState(){if(this.autocomplete._setVisibility(),this.panelOpen){const e=this._overlayRef;this._keydownSubscription||(this._keydownSubscription=e.keydownEvents().subscribe(this._handlePanelKeydown)),this._outsideClickSubscription||(this._outsideClickSubscription=e.outsidePointerEvents().subscribe())}else this._keydownSubscription?.unsubscribe(),this._outsideClickSubscription?.unsubscribe(),this._keydownSubscription=this._outsideClickSubscription=null}_getOverlayConfig(){return new d.rR({positionStrategy:this._getOverlayPosition(),scrollStrategy:this._scrollStrategy(),width:this._getPanelWidth(),direction:this._dir??void 0,panelClass:this._defaults?.overlayPanelClass})}_getOverlayPosition(){const e=this._overlay.position().flexibleConnectedTo(this._getConnectedElement()).withFlexibleDimensions(!1).withPush(!1);return this._setStrategyPositions(e),this._positionStrategy=e,e}_setStrategyPositions(e){const t=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],o=this._aboveClass,n=[{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:o},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:o}];let s;s="above"===this.position?n:"below"===this.position?t:[...t,...n],e.withPositions(s)}_getConnectedElement(){return this.connectedTo?this.connectedTo.elementRef:this._formField?this._formField.getConnectedOverlayOrigin():this._element}_getPanelWidth(){return this.autocomplete.panelWidth||this._getHostWidth()}_getHostWidth(){return this._getConnectedElement().nativeElement.getBoundingClientRect().width}_resetActiveItem(){const e=this.autocomplete;if(e.autoActiveFirstOption){let t=-1;for(let o=0;o .cdk-overlay-container [aria-modal="true"]');if(!e)return;const t=this.autocomplete.id;this._trackedModal&&(0,h.Ae)(this._trackedModal,"aria-owns",t),(0,h.px)(e,"aria-owns",t),this._trackedModal=e}_clearFromModal(){this._trackedModal&&((0,h.Ae)(this._trackedModal,"aria-owns",this.autocomplete.id),this._trackedModal=null)}static \u0275fac=function(t){return new(t||l)};static \u0275dir=i.FsC({type:l,selectors:[["input","matAutocomplete",""],["textarea","matAutocomplete",""]],hostAttrs:[1,"mat-mdc-autocomplete-trigger"],hostVars:7,hostBindings:function(t,o){1&t&&i.bIt("focusin",function(){return o._handleFocus()})("blur",function(){return o._onTouched()})("input",function(s){return o._handleInput(s)})("keydown",function(s){return o._handleKeydown(s)})("click",function(){return o._handleClick()}),2&t&&i.BMQ("autocomplete",o.autocompleteAttribute)("role",o.autocompleteDisabled?null:"combobox")("aria-autocomplete",o.autocompleteDisabled?null:"list")("aria-activedescendant",o.panelOpen&&o.activeOption?o.activeOption.id:null)("aria-expanded",o.autocompleteDisabled?null:o.panelOpen.toString())("aria-controls",o.autocompleteDisabled||!o.panelOpen||null==o.autocomplete?null:o.autocomplete.id)("aria-haspopup",o.autocompleteDisabled?null:"listbox")},inputs:{autocomplete:[0,"matAutocomplete","autocomplete"],position:[0,"matAutocompletePosition","position"],connectedTo:[0,"matAutocompleteConnectedTo","connectedTo"],autocompleteAttribute:[0,"autocomplete","autocompleteAttribute"],autocompleteDisabled:[2,"matAutocompleteDisabled","autocompleteDisabled",i.L39]},exportAs:["matAutocompleteTrigger"],features:[i.Jv_([ie]),i.GFd,i.OA$]})}return l})(),ae=(()=>{class l{static \u0275fac=function(t){return new(t||l)};static \u0275mod=i.$C({type:l});static \u0275inj=i.G2t({providers:[ne],imports:[d.z_,c.Sy,c.yE,y.Gj,c.Sy,c.yE]})}return l})()}}]); \ No newline at end of file diff --git a/web/8.81a885008d22a962.js b/web/8.81a885008d22a962.js new file mode 100644 index 0000000000000000000000000000000000000000..6f292b996c594ae0ddba0f7080593ed14041fdb0 --- /dev/null +++ b/web/8.81a885008d22a962.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[8],{8008:(yn,je,se)=>{se.r(je),se.d(je,{AnimationDriver:()=>ds,NoopAnimationDriver:()=>ve,\u0275Animation:()=>fn,\u0275AnimationEngine:()=>qe,\u0275AnimationRenderer:()=>bt,\u0275AnimationRendererFactory:()=>pn,\u0275AnimationStyleNormalizer:()=>Je,\u0275BaseAnimationRenderer:()=>Ve,\u0275NoopAnimationStyleNormalizer:()=>xe,\u0275WebAnimationsDriver:()=>wt,\u0275WebAnimationsPlayer:()=>$e,\u0275WebAnimationsStyleNormalizer:()=>at,\u0275allowPreviousPlayerStylesMerge:()=>rt,\u0275camelCaseToDashCase:()=>Ss,\u0275containsElement:()=>Te,\u0275createEngine:()=>hn,\u0275getParentElement:()=>ne,\u0275invokeQuery:()=>we,\u0275normalizeKeyframes:()=>st,\u0275validateStyleProperty:()=>Ze,\u0275validateWebAnimatableStyleProperty:()=>hs});var d=se(9969),E=se(4438);function Ge(i){return new E.wOt(3e3,!1)}const ls=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"]);function $(i){switch(i.length){case 0:return new d.sf;case 1:return i[0];default:return new d.ui(i)}}function He(i,e,t=new Map,s=new Map){const n=[],r=[];let a=-1,o=null;if(e.forEach(l=>{const u=l.get("offset"),c=u==a,h=c&&o||new Map;l.forEach((S,_)=>{let m=_,y=S;if("offset"!==_)switch(m=i.normalizePropertyName(m,n),y){case d.FX:y=t.get(_);break;case d.kp:y=s.get(_);break;default:y=i.normalizeStyleValue(_,m,y,n)}h.set(m,y)}),c||r.push(h),o=h,a=u}),n.length)throw function Zt(){return new E.wOt(3502,!1)}();return r}function _e(i,e,t,s){switch(e){case"start":i.onStart(()=>s(t&&Se(t,"start",i)));break;case"done":i.onDone(()=>s(t&&Se(t,"done",i)));break;case"destroy":i.onDestroy(()=>s(t&&Se(t,"destroy",i)))}}function Se(i,e,t){const r=Ee(i.element,i.triggerName,i.fromState,i.toState,e||i.phaseName,t.totalTime??i.totalTime,!!t.disabled),a=i._data;return null!=a&&(r._data=a),r}function Ee(i,e,t,s,n="",r=0,a){return{element:i,triggerName:e,fromState:t,toState:s,phaseName:n,totalTime:r,disabled:!!a}}function O(i,e,t){let s=i.get(e);return s||i.set(e,s=t),s}function Xe(i){const e=i.indexOf(":");return[i.substring(1,e),i.slice(e+1)]}const us=typeof document>"u"?null:document.documentElement;function ne(i){const e=i.parentNode||i.host||null;return e===us?null:e}let U=null,Ye=!1;function Ze(i){U||(U=function fs(){return typeof document<"u"?document.body:null}()||{},Ye=!!U.style&&"WebkitAppearance"in U.style);let e=!0;return U.style&&!function cs(i){return"ebkit"==i.substring(1,6)}(i)&&(e=i in U.style,!e&&Ye&&(e="Webkit"+i.charAt(0).toUpperCase()+i.slice(1)in U.style)),e}function hs(i){return ls.has(i)}function Te(i,e){for(;e;){if(e===i)return!0;e=ne(e)}return!1}function we(i,e,t){if(t)return Array.from(i.querySelectorAll(e));const s=i.querySelector(e);return s?[s]:[]}let ve=(()=>{class i{validateStyleProperty(t){return Ze(t)}containsElement(t,s){return Te(t,s)}getParentElement(t){return ne(t)}query(t,s,n){return we(t,s,n)}computeStyle(t,s,n){return n||""}animate(t,s,n,r,a,o=[],l){return new d.sf(n,r)}static \u0275fac=function(s){return new(s||i)};static \u0275prov=E.jDH({token:i,factory:i.\u0275fac})}return i})();class ds{static NOOP=new ve}class Je{}class xe{normalizePropertyName(e,t){return e}normalizeStyleValue(e,t,s,n){return s}}const be="ng-enter",ie="ng-leave",re="ng-trigger",ae=".ng-trigger",tt="ng-animating",Ae=".ng-animating";function Q(i){if("number"==typeof i)return i;const e=i.match(/^(-?[\.\d]+)(m?s)/);return!e||e.length<2?0:Pe(parseFloat(e[1]),e[2])}function Pe(i,e){return"s"===e?1e3*i:i}function oe(i,e,t){return i.hasOwnProperty("duration")?i:function gs(i,e,t){let n,r=0,a="";if("string"==typeof i){const o=i.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===o)return e.push(Ge()),{duration:0,delay:0,easing:""};n=Pe(parseFloat(o[1]),o[2]);const l=o[3];null!=l&&(r=Pe(parseFloat(l),o[4]));const u=o[5];u&&(a=u)}else n=i;if(!t){let o=!1,l=e.length;n<0&&(e.push(function Ct(){return new E.wOt(3100,!1)}()),o=!0),r<0&&(e.push(function kt(){return new E.wOt(3101,!1)}()),o=!0),o&&e.splice(l,0,Ge())}return{duration:n,delay:r,easing:a}}(i,e,t)}function st(i){return i.length?i[0]instanceof Map?i:i.map(e=>new Map(Object.entries(e))):[]}function nt(i){return Array.isArray(i)?new Map(...i):new Map(i)}function K(i,e,t){e.forEach((s,n)=>{const r=Me(n);t&&!t.has(n)&&t.set(n,i.style[r]),i.style[r]=s})}function W(i,e){e.forEach((t,s)=>{const n=Me(s);i.style[n]=""})}function x(i){return Array.isArray(i)?1==i.length?i[0]:(0,d.K2)(i):i}const Ne=new RegExp("{{\\s*(.+?)\\s*}}","g");function it(i){let e=[];if("string"==typeof i){let t;for(;t=Ne.exec(i);)e.push(t[1]);Ne.lastIndex=0}return e}function ee(i,e,t){const s=`${i}`,n=s.replace(Ne,(r,a)=>{let o=e[a];return null==o&&(t.push(function Ot(){return new E.wOt(3003,!1)}()),o=""),o.toString()});return n==s?i:n}const _s=/-+([a-z0-9])/g;function Me(i){return i.replace(_s,(...e)=>e[1].toUpperCase())}function Ss(i){return i.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function rt(i,e){return 0===i||0===e}function I(i,e,t){switch(e.type){case d.If.Trigger:return i.visitTrigger(e,t);case d.If.State:return i.visitState(e,t);case d.If.Transition:return i.visitTransition(e,t);case d.If.Sequence:return i.visitSequence(e,t);case d.If.Group:return i.visitGroup(e,t);case d.If.Animate:return i.visitAnimate(e,t);case d.If.Keyframes:return i.visitKeyframes(e,t);case d.If.Style:return i.visitStyle(e,t);case d.If.Reference:return i.visitReference(e,t);case d.If.AnimateChild:return i.visitAnimateChild(e,t);case d.If.AnimateRef:return i.visitAnimateRef(e,t);case d.If.Query:return i.visitQuery(e,t);case d.If.Stagger:return i.visitStagger(e,t);default:throw function It(){return new E.wOt(3004,!1)}()}}function Ce(i,e){return window.getComputedStyle(i)[e]}const Ts=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"]);class at extends Je{normalizePropertyName(e,t){return Me(e)}normalizeStyleValue(e,t,s,n){let r="";const a=s.toString().trim();if(Ts.has(t)&&0!==s&&"0"!==s)if("number"==typeof s)r="px";else{const o=s.match(/^[+-]?[\d\.]+([a-z]*)$/);o&&0==o[1].length&&n.push(function Rt(){return new E.wOt(3005,!1)}())}return a+r}}const ce=new Set(["true","1"]),he=new Set(["false","0"]);function ot(i,e){const t=ce.has(i)||he.has(i),s=ce.has(e)||he.has(e);return(n,r)=>{let a="*"==i||i==n,o="*"==e||e==r;return!a&&t&&"boolean"==typeof n&&(a=n?ce.has(i):he.has(i)),!o&&s&&"boolean"==typeof r&&(o=r?ce.has(e):he.has(e)),a&&o}}const As=new RegExp("s*:selfs*,?","g");function ke(i,e,t,s){return new Ps(i).build(e,t,s)}class Ps{_driver;constructor(e){this._driver=e}build(e,t,s){const n=new Cs(t);return this._resetContextStyleTimingState(n),I(this,x(e),n)}_resetContextStyleTimingState(e){e.currentQuerySelector="",e.collectedStyles=new Map,e.collectedStyles.set("",new Map),e.currentTime=0}visitTrigger(e,t){let s=t.queryCount=0,n=t.depCount=0;const r=[],a=[];return"@"==e.name.charAt(0)&&t.errors.push(function Ft(){return new E.wOt(3006,!1)}()),e.definitions.forEach(o=>{if(this._resetContextStyleTimingState(t),o.type==d.If.State){const l=o,u=l.name;u.toString().split(/\s*,\s*/).forEach(c=>{l.name=c,r.push(this.visitState(l,t))}),l.name=u}else if(o.type==d.If.Transition){const l=this.visitTransition(o,t);s+=l.queryCount,n+=l.depCount,a.push(l)}else t.errors.push(function Lt(){return new E.wOt(3007,!1)}())}),{type:d.If.Trigger,name:e.name,states:r,transitions:a,queryCount:s,depCount:n,options:null}}visitState(e,t){const s=this.visitStyle(e.styles,t),n=e.options&&e.options.params||null;if(s.containsDynamicStyles){const r=new Set,a=n||{};s.styles.forEach(o=>{o instanceof Map&&o.forEach(l=>{it(l).forEach(u=>{a.hasOwnProperty(u)||r.add(u)})})}),r.size&&t.errors.push(function zt(){return new E.wOt(3008,!1)}(0,r.values()))}return{type:d.If.State,name:e.name,style:s,options:n?{params:n}:null}}visitTransition(e,t){t.queryCount=0,t.depCount=0;const s=I(this,x(e.animation),t),n=function ws(i,e){const t=[];return"string"==typeof i?i.split(/\s*,\s*/).forEach(s=>function vs(i,e,t){if(":"==i[0]){const l=function bs(i,e){switch(i){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(t,s)=>parseFloat(s)>parseFloat(t);case":decrement":return(t,s)=>parseFloat(s) *"}}(i,t);if("function"==typeof l)return void e.push(l);i=l}const s=i.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==s||s.length<4)return t.push(function jt(){return new E.wOt(3015,!1)}()),e;const n=s[1],r=s[2],a=s[3];e.push(ot(n,a)),"<"==r[0]&&("*"!=n||"*"!=a)&&e.push(ot(a,n))}(s,t,e)):t.push(i),t}(e.expr,t.errors);return{type:d.If.Transition,matchers:n,animation:s,queryCount:t.queryCount,depCount:t.depCount,options:j(e.options)}}visitSequence(e,t){return{type:d.If.Sequence,steps:e.steps.map(s=>I(this,s,t)),options:j(e.options)}}visitGroup(e,t){const s=t.currentTime;let n=0;const r=e.steps.map(a=>{t.currentTime=s;const o=I(this,a,t);return n=Math.max(n,t.currentTime),o});return t.currentTime=n,{type:d.If.Group,steps:r,options:j(e.options)}}visitAnimate(e,t){const s=function Ds(i,e){if(i.hasOwnProperty("duration"))return i;if("number"==typeof i)return De(oe(i,e).duration,0,"");const t=i;if(t.split(/\s+/).some(r=>"{"==r.charAt(0)&&"{"==r.charAt(1))){const r=De(0,0,"");return r.dynamic=!0,r.strValue=t,r}const n=oe(t,e);return De(n.duration,n.delay,n.easing)}(e.timings,t.errors);t.currentAnimateTimings=s;let n,r=e.styles?e.styles:(0,d.iF)({});if(r.type==d.If.Keyframes)n=this.visitKeyframes(r,t);else{let a=e.styles,o=!1;if(!a){o=!0;const u={};s.easing&&(u.easing=s.easing),a=(0,d.iF)(u)}t.currentTime+=s.duration+s.delay;const l=this.visitStyle(a,t);l.isEmptyStep=o,n=l}return t.currentAnimateTimings=null,{type:d.If.Animate,timings:s,style:n,options:null}}visitStyle(e,t){const s=this._makeStyleAst(e,t);return this._validateStyleAst(s,t),s}_makeStyleAst(e,t){const s=[],n=Array.isArray(e.styles)?e.styles:[e.styles];for(let o of n)"string"==typeof o?o===d.kp?s.push(o):t.errors.push(new E.wOt(3002,!1)):s.push(new Map(Object.entries(o)));let r=!1,a=null;return s.forEach(o=>{if(o instanceof Map&&(o.has("easing")&&(a=o.get("easing"),o.delete("easing")),!r))for(let l of o.values())if(l.toString().indexOf("{{")>=0){r=!0;break}}),{type:d.If.Style,styles:s,easing:a,offset:e.offset,containsDynamicStyles:r,options:null}}_validateStyleAst(e,t){const s=t.currentAnimateTimings;let n=t.currentTime,r=t.currentTime;s&&r>0&&(r-=s.duration+s.delay),e.styles.forEach(a=>{"string"!=typeof a&&a.forEach((o,l)=>{const u=t.collectedStyles.get(t.currentQuerySelector),c=u.get(l);let h=!0;c&&(r!=n&&r>=c.startTime&&n<=c.endTime&&(t.errors.push(function Bt(){return new E.wOt(3010,!1)}()),h=!1),r=c.startTime),h&&u.set(l,{startTime:r,endTime:n}),t.options&&function ys(i,e,t){const s=e.params||{},n=it(i);n.length&&n.forEach(r=>{s.hasOwnProperty(r)||t.push(function Dt(){return new E.wOt(3001,!1)}())})}(o,t.options,t.errors)})})}visitKeyframes(e,t){const s={type:d.If.Keyframes,styles:[],options:null};if(!t.currentAnimateTimings)return t.errors.push(function qt(){return new E.wOt(3011,!1)}()),s;let r=0;const a=[];let o=!1,l=!1,u=0;const c=e.steps.map(b=>{const A=this._makeStyleAst(b,t);let C=null!=A.offset?A.offset:function ks(i){if("string"==typeof i)return null;let e=null;if(Array.isArray(i))i.forEach(t=>{if(t instanceof Map&&t.has("offset")){const s=t;e=parseFloat(s.get("offset")),s.delete("offset")}});else if(i instanceof Map&&i.has("offset")){const t=i;e=parseFloat(t.get("offset")),t.delete("offset")}return e}(A.styles),N=0;return null!=C&&(r++,N=A.offset=C),l=l||N<0||N>1,o=o||N0&&r{const C=S>0?A==_?1:S*A:a[A],N=C*w;t.currentTime=m+y.delay+N,y.duration=N,this._validateStyleAst(b,t),b.offset=C,s.styles.push(b)}),s}visitReference(e,t){return{type:d.If.Reference,animation:I(this,x(e.animation),t),options:j(e.options)}}visitAnimateChild(e,t){return t.depCount++,{type:d.If.AnimateChild,options:j(e.options)}}visitAnimateRef(e,t){return{type:d.If.AnimateRef,animation:this.visitReference(e.animation,t),options:j(e.options)}}visitQuery(e,t){const s=t.currentQuerySelector,n=e.options||{};t.queryCount++,t.currentQuery=e;const[r,a]=function Ns(i){const e=!!i.split(/\s*,\s*/).find(t=>":self"==t);return e&&(i=i.replace(As,"")),i=i.replace(/@\*/g,ae).replace(/@\w+/g,t=>ae+"-"+t.slice(1)).replace(/:animating/g,Ae),[i,e]}(e.selector);t.currentQuerySelector=s.length?s+" "+r:r,O(t.collectedStyles,t.currentQuerySelector,new Map);const o=I(this,x(e.animation),t);return t.currentQuery=null,t.currentQuerySelector=s,{type:d.If.Query,selector:r,limit:n.limit||0,optional:!!n.optional,includeSelf:a,animation:o,originalSelector:e.selector,options:j(e.options)}}visitStagger(e,t){t.currentQuery||t.errors.push(function Ut(){return new E.wOt(3013,!1)}());const s="full"===e.timings?{duration:0,delay:0,easing:"full"}:oe(e.timings,t.errors,!0);return{type:d.If.Stagger,animation:I(this,x(e.animation),t),timings:s,options:null}}}class Cs{errors;queryCount=0;depCount=0;currentTransition=null;currentQuery=null;currentQuerySelector=null;currentAnimateTimings=null;currentTime=0;collectedStyles=new Map;options=null;unsupportedCSSPropertiesFound=new Set;constructor(e){this.errors=e}}function j(i){return i?(i={...i}).params&&(i.params=function Ms(i){return i?{...i}:null}(i.params)):i={},i}function De(i,e,t){return{duration:i,delay:e,easing:t}}function Oe(i,e,t,s,n,r,a=null,o=!1){return{type:1,element:i,keyframes:e,preStyleProps:t,postStyleProps:s,duration:n,delay:r,totalTime:n+r,easing:a,subTimeline:o}}class fe{_map=new Map;get(e){return this._map.get(e)||[]}append(e,t){let s=this._map.get(e);s||this._map.set(e,s=[]),s.push(...t)}has(e){return this._map.has(e)}clear(){this._map.clear()}}const Rs=new RegExp(":enter","g"),Ls=new RegExp(":leave","g");function Ie(i,e,t,s,n,r=new Map,a=new Map,o,l,u=[]){return(new zs).buildKeyframes(i,e,t,s,n,r,a,o,l,u)}class zs{buildKeyframes(e,t,s,n,r,a,o,l,u,c=[]){u=u||new fe;const h=new Re(e,t,u,n,r,c,[]);h.options=l;const S=l.delay?Q(l.delay):0;h.currentTimeline.delayNextStep(S),h.currentTimeline.setStyles([a],null,h.errors,l),I(this,s,h);const _=h.timelines.filter(m=>m.containsAnimation());if(_.length&&o.size){let m;for(let y=_.length-1;y>=0;y--){const w=_[y];if(w.element===t){m=w;break}}m&&!m.allowOnlyTimelineStyles()&&m.setStyles([o],null,h.errors,l)}return _.length?_.map(m=>m.buildKeyframes()):[Oe(t,[],[],[],0,S,"",!1)]}visitTrigger(e,t){}visitState(e,t){}visitTransition(e,t){}visitAnimateChild(e,t){const s=t.subInstructions.get(t.element);if(s){const n=t.createSubContext(e.options),r=t.currentTimeline.currentTime,a=this._visitSubInstructions(s,n,n.options);r!=a&&t.transformIntoNewTimeline(a)}t.previousNode=e}visitAnimateRef(e,t){const s=t.createSubContext(e.options);s.transformIntoNewTimeline(),this._applyAnimationRefDelays([e.options,e.animation.options],t,s),this.visitReference(e.animation,s),t.transformIntoNewTimeline(s.currentTimeline.currentTime),t.previousNode=e}_applyAnimationRefDelays(e,t,s){for(const n of e){const r=n?.delay;if(r){const a="number"==typeof r?r:Q(ee(r,n?.params??{},t.errors));s.delayNextStep(a)}}}_visitSubInstructions(e,t,s){let r=t.currentTimeline.currentTime;const a=null!=s.duration?Q(s.duration):null,o=null!=s.delay?Q(s.delay):null;return 0!==a&&e.forEach(l=>{const u=t.appendInstructionToTimeline(l,a,o);r=Math.max(r,u.duration+u.delay)}),r}visitReference(e,t){t.updateOptions(e.options,!0),I(this,e.animation,t),t.previousNode=e}visitSequence(e,t){const s=t.subContextCount;let n=t;const r=e.options;if(r&&(r.params||r.delay)&&(n=t.createSubContext(r),n.transformIntoNewTimeline(),null!=r.delay)){n.previousNode.type==d.If.Style&&(n.currentTimeline.snapshotCurrentStyles(),n.previousNode=de);const a=Q(r.delay);n.delayNextStep(a)}e.steps.length&&(e.steps.forEach(a=>I(this,a,n)),n.currentTimeline.applyStylesToKeyframe(),n.subContextCount>s&&n.transformIntoNewTimeline()),t.previousNode=e}visitGroup(e,t){const s=[];let n=t.currentTimeline.currentTime;const r=e.options&&e.options.delay?Q(e.options.delay):0;e.steps.forEach(a=>{const o=t.createSubContext(e.options);r&&o.delayNextStep(r),I(this,a,o),n=Math.max(n,o.currentTimeline.currentTime),s.push(o.currentTimeline)}),s.forEach(a=>t.currentTimeline.mergeTimelineCollectedStyles(a)),t.transformIntoNewTimeline(n),t.previousNode=e}_visitTiming(e,t){if(e.dynamic){const s=e.strValue;return oe(t.params?ee(s,t.params,t.errors):s,t.errors)}return{duration:e.duration,delay:e.delay,easing:e.easing}}visitAnimate(e,t){const s=t.currentAnimateTimings=this._visitTiming(e.timings,t),n=t.currentTimeline;s.delay&&(t.incrementTime(s.delay),n.snapshotCurrentStyles());const r=e.style;r.type==d.If.Keyframes?this.visitKeyframes(r,t):(t.incrementTime(s.duration),this.visitStyle(r,t),n.applyStylesToKeyframe()),t.currentAnimateTimings=null,t.previousNode=e}visitStyle(e,t){const s=t.currentTimeline,n=t.currentAnimateTimings;!n&&s.hasCurrentStyleProperties()&&s.forwardFrame();const r=n&&n.easing||e.easing;e.isEmptyStep?s.applyEmptyStep(r):s.setStyles(e.styles,r,t.errors,t.options),t.previousNode=e}visitKeyframes(e,t){const s=t.currentAnimateTimings,n=t.currentTimeline.duration,r=s.duration,o=t.createSubContext().currentTimeline;o.easing=s.easing,e.styles.forEach(l=>{o.forwardTime((l.offset||0)*r),o.setStyles(l.styles,l.easing,t.errors,t.options),o.applyStylesToKeyframe()}),t.currentTimeline.mergeTimelineCollectedStyles(o),t.transformIntoNewTimeline(n+r),t.previousNode=e}visitQuery(e,t){const s=t.currentTimeline.currentTime,n=e.options||{},r=n.delay?Q(n.delay):0;r&&(t.previousNode.type===d.If.Style||0==s&&t.currentTimeline.hasCurrentStyleProperties())&&(t.currentTimeline.snapshotCurrentStyles(),t.previousNode=de);let a=s;const o=t.invokeQuery(e.selector,e.originalSelector,e.limit,e.includeSelf,!!n.optional,t.errors);t.currentQueryTotal=o.length;let l=null;o.forEach((u,c)=>{t.currentQueryIndex=c;const h=t.createSubContext(e.options,u);r&&h.delayNextStep(r),u===t.element&&(l=h.currentTimeline),I(this,e.animation,h),h.currentTimeline.applyStylesToKeyframe(),a=Math.max(a,h.currentTimeline.currentTime)}),t.currentQueryIndex=0,t.currentQueryTotal=0,t.transformIntoNewTimeline(a),l&&(t.currentTimeline.mergeTimelineCollectedStyles(l),t.currentTimeline.snapshotCurrentStyles()),t.previousNode=e}visitStagger(e,t){const s=t.parentContext,n=t.currentTimeline,r=e.timings,a=Math.abs(r.duration),o=a*(t.currentQueryTotal-1);let l=a*t.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":l=o-l;break;case"full":l=s.currentStaggerTime}const c=t.currentTimeline;l&&c.delayNextStep(l);const h=c.currentTime;I(this,e.animation,t),t.previousNode=e,s.currentStaggerTime=n.currentTime-h+(n.startTime-s.currentTimeline.startTime)}}const de={};class Re{_driver;element;subInstructions;_enterClassName;_leaveClassName;errors;timelines;parentContext=null;currentTimeline;currentAnimateTimings=null;previousNode=de;subContextCount=0;options={};currentQueryIndex=0;currentQueryTotal=0;currentStaggerTime=0;constructor(e,t,s,n,r,a,o,l){this._driver=e,this.element=t,this.subInstructions=s,this._enterClassName=n,this._leaveClassName=r,this.errors=a,this.timelines=o,this.currentTimeline=l||new me(this._driver,t,0),o.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(e,t){if(!e)return;const s=e;let n=this.options;null!=s.duration&&(n.duration=Q(s.duration)),null!=s.delay&&(n.delay=Q(s.delay));const r=s.params;if(r){let a=n.params;a||(a=this.options.params={}),Object.keys(r).forEach(o=>{(!t||!a.hasOwnProperty(o))&&(a[o]=ee(r[o],a,this.errors))})}}_copyOptions(){const e={};if(this.options){const t=this.options.params;if(t){const s=e.params={};Object.keys(t).forEach(n=>{s[n]=t[n]})}}return e}createSubContext(e=null,t,s){const n=t||this.element,r=new Re(this._driver,n,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(n,s||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(e),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(e){return this.previousNode=de,this.currentTimeline=this.currentTimeline.fork(this.element,e),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(e,t,s){const n={duration:t??e.duration,delay:this.currentTimeline.currentTime+(s??0)+e.delay,easing:""},r=new Ks(this._driver,e.element,e.keyframes,e.preStyleProps,e.postStyleProps,n,e.stretchStartingKeyframe);return this.timelines.push(r),n}incrementTime(e){this.currentTimeline.forwardTime(this.currentTimeline.duration+e)}delayNextStep(e){e>0&&this.currentTimeline.delayNextStep(e)}invokeQuery(e,t,s,n,r,a){let o=[];if(n&&o.push(this.element),e.length>0){e=(e=e.replace(Rs,"."+this._enterClassName)).replace(Ls,"."+this._leaveClassName);let u=this._driver.query(this.element,e,1!=s);0!==s&&(u=s<0?u.slice(u.length+s,u.length):u.slice(0,s)),o.push(...u)}return!r&&0==o.length&&a.push(function Wt(){return new E.wOt(3014,!1)}()),o}}class me{_driver;element;startTime;_elementTimelineStylesLookup;duration=0;easing=null;_previousKeyframe=new Map;_currentKeyframe=new Map;_keyframes=new Map;_styleSummary=new Map;_localTimelineStyles=new Map;_globalTimelineStyles;_pendingStyles=new Map;_backFill=new Map;_currentEmptyStepKeyframe=null;constructor(e,t,s,n){this._driver=e,this.element=t,this.startTime=s,this._elementTimelineStylesLookup=n,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(t),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(t,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(e){const t=1===this._keyframes.size&&this._pendingStyles.size;this.duration||t?(this.forwardTime(this.currentTime+e),t&&this.snapshotCurrentStyles()):this.startTime+=e}fork(e,t){return this.applyStylesToKeyframe(),new me(this._driver,e,t||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(e){this.applyStylesToKeyframe(),this.duration=e,this._loadKeyframe()}_updateStyle(e,t){this._localTimelineStyles.set(e,t),this._globalTimelineStyles.set(e,t),this._styleSummary.set(e,{time:this.currentTime,value:t})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(e){e&&this._previousKeyframe.set("easing",e);for(let[t,s]of this._globalTimelineStyles)this._backFill.set(t,s||d.kp),this._currentKeyframe.set(t,d.kp);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(e,t,s,n){t&&this._previousKeyframe.set("easing",t);const r=n&&n.params||{},a=function Bs(i,e){const t=new Map;let s;return i.forEach(n=>{if("*"===n){s??=e.keys();for(let r of s)t.set(r,d.kp)}else for(let[r,a]of n)t.set(r,a)}),t}(e,this._globalTimelineStyles);for(let[o,l]of a){const u=ee(l,r,s);this._pendingStyles.set(o,u),this._localTimelineStyles.has(o)||this._backFill.set(o,this._globalTimelineStyles.get(o)??d.kp),this._updateStyle(o,u)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((e,t)=>{this._currentKeyframe.set(t,e)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((e,t)=>{this._currentKeyframe.has(t)||this._currentKeyframe.set(t,e)}))}snapshotCurrentStyles(){for(let[e,t]of this._localTimelineStyles)this._pendingStyles.set(e,t),this._updateStyle(e,t)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const e=[];for(let t in this._currentKeyframe)e.push(t);return e}mergeTimelineCollectedStyles(e){e._styleSummary.forEach((t,s)=>{const n=this._styleSummary.get(s);(!n||t.time>n.time)&&this._updateStyle(s,t.value)})}buildKeyframes(){this.applyStylesToKeyframe();const e=new Set,t=new Set,s=1===this._keyframes.size&&0===this.duration;let n=[];this._keyframes.forEach((o,l)=>{const u=new Map([...this._backFill,...o]);u.forEach((c,h)=>{c===d.FX?e.add(h):c===d.kp&&t.add(h)}),s||u.set("offset",l/this.duration),n.push(u)});const r=[...e.values()],a=[...t.values()];if(s){const o=n[0],l=new Map(o);o.set("offset",0),l.set("offset",1),n=[o,l]}return Oe(this.element,n,r,a,this.duration,this.startTime,this.easing,!1)}}class Ks extends me{keyframes;preStyleProps;postStyleProps;_stretchStartingKeyframe;timings;constructor(e,t,s,n,r,a,o=!1){super(e,t,a.delay),this.keyframes=s,this.preStyleProps=n,this.postStyleProps=r,this._stretchStartingKeyframe=o,this.timings={duration:a.duration,delay:a.delay,easing:a.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let e=this.keyframes,{delay:t,duration:s,easing:n}=this.timings;if(this._stretchStartingKeyframe&&t){const r=[],a=s+t,o=t/a,l=new Map(e[0]);l.set("offset",0),r.push(l);const u=new Map(e[0]);u.set("offset",ct(o)),r.push(u);const c=e.length-1;for(let h=1;h<=c;h++){let S=new Map(e[h]);const _=S.get("offset");S.set("offset",ct((t+_*s)/a)),r.push(S)}s=a,t=0,n="",e=r}return Oe(this.element,e,this.preStyleProps,this.postStyleProps,s,t,n,!0)}}function ct(i,e=3){const t=Math.pow(10,e-1);return Math.round(i*t)/t}function ht(i,e,t,s,n,r,a,o,l,u,c,h,S){return{type:0,element:i,triggerName:e,isRemovalTransition:n,fromState:t,fromStyles:r,toState:s,toStyles:a,timelines:o,queriedElements:l,preStyleProps:u,postStyleProps:c,totalTime:h,errors:S}}const Fe={};class ft{_triggerName;ast;_stateStyles;constructor(e,t,s){this._triggerName=e,this.ast=t,this._stateStyles=s}match(e,t,s,n){return function qs(i,e,t,s,n){return i.some(r=>r(e,t,s,n))}(this.ast.matchers,e,t,s,n)}buildStyles(e,t,s){let n=this._stateStyles.get("*");return void 0!==e&&(n=this._stateStyles.get(e?.toString())||n),n?n.buildStyles(t,s):new Map}build(e,t,s,n,r,a,o,l,u,c){const h=[],S=this.ast.options&&this.ast.options.params||Fe,m=this.buildStyles(s,o&&o.params||Fe,h),y=l&&l.params||Fe,w=this.buildStyles(n,y,h),b=new Set,A=new Map,C=new Map,N="void"===n,Z={params:dt(y,S),delay:this.ast.options?.delay},B=c?[]:Ie(e,t,this.ast.animation,r,a,m,w,Z,u,h);let k=0;return B.forEach(D=>{k=Math.max(D.duration+D.delay,k)}),h.length?ht(t,this._triggerName,s,n,N,m,w,[],[],A,C,k,h):(B.forEach(D=>{const G=D.element,J=O(A,G,new Set);D.preStyleProps.forEach(H=>J.add(H));const At=O(C,G,new Set);D.postStyleProps.forEach(H=>At.add(H)),G!==t&&b.add(G)}),ht(t,this._triggerName,s,n,N,m,w,B,[...b.values()],A,C,k))}}function dt(i,e){const t={...e};return Object.entries(i).forEach(([s,n])=>{null!=n&&(t[s]=n)}),t}class Qs{styles;defaultParams;normalizer;constructor(e,t,s){this.styles=e,this.defaultParams=t,this.normalizer=s}buildStyles(e,t){const s=new Map,n=dt(e,this.defaultParams);return this.styles.styles.forEach(r=>{"string"!=typeof r&&r.forEach((a,o)=>{a&&(a=ee(a,n,t));const l=this.normalizer.normalizePropertyName(o,t);a=this.normalizer.normalizeStyleValue(o,l,a,t),s.set(o,a)})}),s}}class Vs{name;ast;_normalizer;transitionFactories=[];fallbackTransition;states=new Map;constructor(e,t,s){this.name=e,this.ast=t,this._normalizer=s,t.states.forEach(n=>{this.states.set(n.name,new Qs(n.style,n.options&&n.options.params||{},s))}),mt(this.states,"true","1"),mt(this.states,"false","0"),t.transitions.forEach(n=>{this.transitionFactories.push(new ft(e,n,this.states))}),this.fallbackTransition=function Us(i,e){return new ft(i,{type:d.If.Transition,animation:{type:d.If.Sequence,steps:[],options:null},matchers:[(a,o)=>!0],options:null,queryCount:0,depCount:0},e)}(e,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(e,t,s,n){return this.transitionFactories.find(a=>a.match(e,t,s,n))||null}matchStyles(e,t,s){return this.fallbackTransition.buildStyles(e,t,s)}}function mt(i,e,t){i.has(e)?i.has(t)||i.set(t,i.get(e)):i.has(t)&&i.set(e,i.get(t))}const Ws=new fe;class js{bodyNode;_driver;_normalizer;_animations=new Map;_playersById=new Map;players=[];constructor(e,t,s){this.bodyNode=e,this._driver=t,this._normalizer=s}register(e,t){const s=[],r=ke(this._driver,t,s,[]);if(s.length)throw function Jt(){return new E.wOt(3503,!1)}();this._animations.set(e,r)}_buildPlayer(e,t,s){const n=e.element,r=He(this._normalizer,e.keyframes,t,s);return this._driver.animate(n,r,e.duration,e.delay,e.easing,[],!0)}create(e,t,s={}){const n=[],r=this._animations.get(e);let a;const o=new Map;if(r?(a=Ie(this._driver,t,r,be,ie,new Map,new Map,s,Ws,n),a.forEach(c=>{const h=O(o,c.element,new Map);c.postStyleProps.forEach(S=>h.set(S,null))})):(n.push(function xt(){return new E.wOt(3300,!1)}()),a=[]),n.length)throw function es(){return new E.wOt(3504,!1)}();o.forEach((c,h)=>{c.forEach((S,_)=>{c.set(_,this._driver.computeStyle(h,_,d.kp))})});const u=$(a.map(c=>{const h=o.get(c.element);return this._buildPlayer(c,new Map,h)}));return this._playersById.set(e,u),u.onDestroy(()=>this.destroy(e)),this.players.push(u),u}destroy(e){const t=this._getPlayer(e);t.destroy(),this._playersById.delete(e);const s=this.players.indexOf(t);s>=0&&this.players.splice(s,1)}_getPlayer(e){const t=this._playersById.get(e);if(!t)throw function ts(){return new E.wOt(3301,!1)}();return t}listen(e,t,s,n){const r=Ee(t,"","","");return _e(this._getPlayer(e),s,r,n),()=>{}}command(e,t,s,n){if("register"==s)return void this.register(e,n[0]);if("create"==s)return void this.create(e,t,n[0]||{});const r=this._getPlayer(e);switch(s){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(n[0]));break;case"destroy":this.destroy(e)}}}const pt="ng-animate-queued",Le="ng-animate-disabled",Zs=[],gt={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},Js={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},z="__ng_removed";class ze{namespaceId;value;options;get params(){return this.options.params}constructor(e,t=""){this.namespaceId=t;const s=e&&e.hasOwnProperty("value");if(this.value=function sn(i){return i??null}(s?e.value:e),s){const{value:r,...a}=e;this.options=a}else this.options={};this.options.params||(this.options.params={})}absorbOptions(e){const t=e.params;if(t){const s=this.options.params;Object.keys(t).forEach(n=>{null==s[n]&&(s[n]=t[n])})}}}const te="void",Ke=new ze(te);class xs{id;hostElement;_engine;players=[];_triggers=new Map;_queue=[];_elementListeners=new Map;_hostClassName;constructor(e,t,s){this.id=e,this.hostElement=t,this._engine=s,this._hostClassName="ng-tns-"+e,F(t,this._hostClassName)}listen(e,t,s,n){if(!this._triggers.has(t))throw function ss(){return new E.wOt(3302,!1)}();if(null==s||0==s.length)throw function ns(){return new E.wOt(3303,!1)}();if(!function nn(i){return"start"==i||"done"==i}(s))throw function is(){return new E.wOt(3400,!1)}();const r=O(this._elementListeners,e,[]),a={name:t,phase:s,callback:n};r.push(a);const o=O(this._engine.statesByElement,e,new Map);return o.has(t)||(F(e,re),F(e,re+"-"+t),o.set(t,Ke)),()=>{this._engine.afterFlush(()=>{const l=r.indexOf(a);l>=0&&r.splice(l,1),this._triggers.has(t)||o.delete(t)})}}register(e,t){return!this._triggers.has(e)&&(this._triggers.set(e,t),!0)}_getTrigger(e){const t=this._triggers.get(e);if(!t)throw function rs(){return new E.wOt(3401,!1)}();return t}trigger(e,t,s,n=!0){const r=this._getTrigger(t),a=new Be(this.id,t,e);let o=this._engine.statesByElement.get(e);o||(F(e,re),F(e,re+"-"+t),this._engine.statesByElement.set(e,o=new Map));let l=o.get(t);const u=new ze(s,this.id);if(!(s&&s.hasOwnProperty("value"))&&l&&u.absorbOptions(l.options),o.set(t,u),l||(l=Ke),u.value!==te&&l.value===u.value){if(!function on(i,e){const t=Object.keys(i),s=Object.keys(e);if(t.length!=s.length)return!1;for(let n=0;n{W(e,w),K(e,b)})}return}const S=O(this._engine.playersByElement,e,[]);S.forEach(y=>{y.namespaceId==this.id&&y.triggerName==t&&y.queued&&y.destroy()});let _=r.matchTransition(l.value,u.value,e,u.params),m=!1;if(!_){if(!n)return;_=r.fallbackTransition,m=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:e,triggerName:t,transition:_,fromState:l,toState:u,player:a,isFallbackTransition:m}),m||(F(e,pt),a.onStart(()=>{Y(e,pt)})),a.onDone(()=>{let y=this.players.indexOf(a);y>=0&&this.players.splice(y,1);const w=this._engine.playersByElement.get(e);if(w){let b=w.indexOf(a);b>=0&&w.splice(b,1)}}),this.players.push(a),S.push(a),a}deregister(e){this._triggers.delete(e),this._engine.statesByElement.forEach(t=>t.delete(e)),this._elementListeners.forEach((t,s)=>{this._elementListeners.set(s,t.filter(n=>n.name!=e))})}clearElementCache(e){this._engine.statesByElement.delete(e),this._elementListeners.delete(e);const t=this._engine.playersByElement.get(e);t&&(t.forEach(s=>s.destroy()),this._engine.playersByElement.delete(e))}_signalRemovalForInnerTriggers(e,t){const s=this._engine.driver.query(e,ae,!0);s.forEach(n=>{if(n[z])return;const r=this._engine.fetchNamespacesByElement(n);r.size?r.forEach(a=>a.triggerLeaveAnimation(n,t,!1,!0)):this.clearElementCache(n)}),this._engine.afterFlushAnimationsDone(()=>s.forEach(n=>this.clearElementCache(n)))}triggerLeaveAnimation(e,t,s,n){const r=this._engine.statesByElement.get(e),a=new Map;if(r){const o=[];if(r.forEach((l,u)=>{if(a.set(u,l.value),this._triggers.has(u)){const c=this.trigger(e,u,te,n);c&&o.push(c)}}),o.length)return this._engine.markElementAsRemoved(this.id,e,!0,t,a),s&&$(o).onDone(()=>this._engine.processLeaveNode(e)),!0}return!1}prepareLeaveAnimationListeners(e){const t=this._elementListeners.get(e),s=this._engine.statesByElement.get(e);if(t&&s){const n=new Set;t.forEach(r=>{const a=r.name;if(n.has(a))return;n.add(a);const l=this._triggers.get(a).fallbackTransition,u=s.get(a)||Ke,c=new ze(te),h=new Be(this.id,a,e);this._engine.totalQueuedPlayers++,this._queue.push({element:e,triggerName:a,transition:l,fromState:u,toState:c,player:h,isFallbackTransition:!0})})}}removeNode(e,t){const s=this._engine;if(e.childElementCount&&this._signalRemovalForInnerTriggers(e,t),this.triggerLeaveAnimation(e,t,!0))return;let n=!1;if(s.totalAnimations){const r=s.players.length?s.playersByQueriedElement.get(e):[];if(r&&r.length)n=!0;else{let a=e;for(;a=a.parentNode;)if(s.statesByElement.get(a)){n=!0;break}}}if(this.prepareLeaveAnimationListeners(e),n)s.markElementAsRemoved(this.id,e,!1,t);else{const r=e[z];(!r||r===gt)&&(s.afterFlush(()=>this.clearElementCache(e)),s.destroyInnerAnimations(e),s._onRemovalComplete(e,t))}}insertNode(e,t){F(e,this._hostClassName)}drainQueuedTransitions(e){const t=[];return this._queue.forEach(s=>{const n=s.player;if(n.destroyed)return;const r=s.element,a=this._elementListeners.get(r);a&&a.forEach(o=>{if(o.name==s.triggerName){const l=Ee(r,s.triggerName,s.fromState.value,s.toState.value);l._data=e,_e(s.player,o.phase,l,o.callback)}}),n.markedForDestroy?this._engine.afterFlush(()=>{n.destroy()}):t.push(s)}),this._queue=[],t.sort((s,n)=>{const r=s.transition.ast.depCount,a=n.transition.ast.depCount;return 0==r||0==a?r-a:this._engine.driver.containsElement(s.element,n.element)?1:-1})}destroy(e){this.players.forEach(t=>t.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,e)}}class en{bodyNode;driver;_normalizer;players=[];newHostElements=new Map;playersByElement=new Map;playersByQueriedElement=new Map;statesByElement=new Map;disabledNodes=new Set;totalAnimations=0;totalQueuedPlayers=0;_namespaceLookup={};_namespaceList=[];_flushFns=[];_whenQuietFns=[];namespacesByHostElement=new Map;collectedEnterElements=[];collectedLeaveElements=[];onRemovalComplete=(e,t)=>{};_onRemovalComplete(e,t){this.onRemovalComplete(e,t)}constructor(e,t,s){this.bodyNode=e,this.driver=t,this._normalizer=s}get queuedPlayers(){const e=[];return this._namespaceList.forEach(t=>{t.players.forEach(s=>{s.queued&&e.push(s)})}),e}createNamespace(e,t){const s=new xs(e,t,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,t)?this._balanceNamespaceList(s,t):(this.newHostElements.set(t,s),this.collectEnterElement(t)),this._namespaceLookup[e]=s}_balanceNamespaceList(e,t){const s=this._namespaceList,n=this.namespacesByHostElement;if(s.length-1>=0){let a=!1,o=this.driver.getParentElement(t);for(;o;){const l=n.get(o);if(l){const u=s.indexOf(l);s.splice(u+1,0,e),a=!0;break}o=this.driver.getParentElement(o)}a||s.unshift(e)}else s.push(e);return n.set(t,e),e}register(e,t){let s=this._namespaceLookup[e];return s||(s=this.createNamespace(e,t)),s}registerTrigger(e,t,s){let n=this._namespaceLookup[e];n&&n.register(t,s)&&this.totalAnimations++}destroy(e,t){e&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{const s=this._fetchNamespace(e);this.namespacesByHostElement.delete(s.hostElement);const n=this._namespaceList.indexOf(s);n>=0&&this._namespaceList.splice(n,1),s.destroy(t),delete this._namespaceLookup[e]}))}_fetchNamespace(e){return this._namespaceLookup[e]}fetchNamespacesByElement(e){const t=new Set,s=this.statesByElement.get(e);if(s)for(let n of s.values())if(n.namespaceId){const r=this._fetchNamespace(n.namespaceId);r&&t.add(r)}return t}trigger(e,t,s,n){if(pe(t)){const r=this._fetchNamespace(e);if(r)return r.trigger(t,s,n),!0}return!1}insertNode(e,t,s,n){if(!pe(t))return;const r=t[z];if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;const a=this.collectedLeaveElements.indexOf(t);a>=0&&this.collectedLeaveElements.splice(a,1)}if(e){const a=this._fetchNamespace(e);a&&a.insertNode(t,s)}n&&this.collectEnterElement(t)}collectEnterElement(e){this.collectedEnterElements.push(e)}markElementAsDisabled(e,t){t?this.disabledNodes.has(e)||(this.disabledNodes.add(e),F(e,Le)):this.disabledNodes.has(e)&&(this.disabledNodes.delete(e),Y(e,Le))}removeNode(e,t,s){if(pe(t)){const n=e?this._fetchNamespace(e):null;n?n.removeNode(t,s):this.markElementAsRemoved(e,t,!1,s);const r=this.namespacesByHostElement.get(t);r&&r.id!==e&&r.removeNode(t,s)}else this._onRemovalComplete(t,s)}markElementAsRemoved(e,t,s,n,r){this.collectedLeaveElements.push(t),t[z]={namespaceId:e,setForRemoval:n,hasAnimation:s,removedBeforeQueried:!1,previousTriggersValues:r}}listen(e,t,s,n,r){return pe(t)?this._fetchNamespace(e).listen(t,s,n,r):()=>{}}_buildInstruction(e,t,s,n,r){return e.transition.build(this.driver,e.element,e.fromState.value,e.toState.value,s,n,e.fromState.options,e.toState.options,t,r)}destroyInnerAnimations(e){let t=this.driver.query(e,ae,!0);t.forEach(s=>this.destroyActiveAnimationsForElement(s)),0!=this.playersByQueriedElement.size&&(t=this.driver.query(e,Ae,!0),t.forEach(s=>this.finishActiveQueriedAnimationOnElement(s)))}destroyActiveAnimationsForElement(e){const t=this.playersByElement.get(e);t&&t.forEach(s=>{s.queued?s.markedForDestroy=!0:s.destroy()})}finishActiveQueriedAnimationOnElement(e){const t=this.playersByQueriedElement.get(e);t&&t.forEach(s=>s.finish())}whenRenderingDone(){return new Promise(e=>{if(this.players.length)return $(this.players).onDone(()=>e());e()})}processLeaveNode(e){const t=e[z];if(t&&t.setForRemoval){if(e[z]=gt,t.namespaceId){this.destroyInnerAnimations(e);const s=this._fetchNamespace(t.namespaceId);s&&s.clearElementCache(e)}this._onRemovalComplete(e,t.setForRemoval)}e.classList?.contains(Le)&&this.markElementAsDisabled(e,!1),this.driver.query(e,".ng-animate-disabled",!0).forEach(s=>{this.markElementAsDisabled(s,!1)})}flush(e=-1){let t=[];if(this.newHostElements.size&&(this.newHostElements.forEach((s,n)=>this._balanceNamespaceList(s,n)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let s=0;ss()),this._flushFns=[],this._whenQuietFns.length){const s=this._whenQuietFns;this._whenQuietFns=[],t.length?$(t).onDone(()=>{s.forEach(n=>n())}):s.forEach(n=>n())}}reportError(e){throw function as(){return new E.wOt(3402,!1)}()}_flushAnimations(e,t){const s=new fe,n=[],r=new Map,a=[],o=new Map,l=new Map,u=new Map,c=new Set;this.disabledNodes.forEach(f=>{c.add(f);const p=this.driver.query(f,".ng-animate-queued",!0);for(let g=0;g{const g=be+y++;m.set(p,g),f.forEach(T=>F(T,g))});const w=[],b=new Set,A=new Set;for(let f=0;fb.add(T)):A.add(p))}const C=new Map,N=St(S,Array.from(b));N.forEach((f,p)=>{const g=ie+y++;C.set(p,g),f.forEach(T=>F(T,g))}),e.push(()=>{_.forEach((f,p)=>{const g=m.get(p);f.forEach(T=>Y(T,g))}),N.forEach((f,p)=>{const g=C.get(p);f.forEach(T=>Y(T,g))}),w.forEach(f=>{this.processLeaveNode(f)})});const Z=[],B=[];for(let f=this._namespaceList.length-1;f>=0;f--)this._namespaceList[f].drainQueuedTransitions(t).forEach(g=>{const T=g.player,P=g.element;if(Z.push(T),this.collectedEnterElements.length){const M=P[z];if(M&&M.setForMove){if(M.previousTriggersValues&&M.previousTriggersValues.has(g.triggerName)){const X=M.previousTriggersValues.get(g.triggerName),L=this.statesByElement.get(g.element);if(L&&L.has(g.triggerName)){const ye=L.get(g.triggerName);ye.value=X,L.set(g.triggerName,ye)}}return void T.destroy()}}const q=!h||!this.driver.containsElement(h,P),R=C.get(P),V=m.get(P),v=this._buildInstruction(g,s,V,R,q);if(v.errors&&v.errors.length)return void B.push(v);if(q)return T.onStart(()=>W(P,v.fromStyles)),T.onDestroy(()=>K(P,v.toStyles)),void n.push(T);if(g.isFallbackTransition)return T.onStart(()=>W(P,v.fromStyles)),T.onDestroy(()=>K(P,v.toStyles)),void n.push(T);const Mt=[];v.timelines.forEach(M=>{M.stretchStartingKeyframe=!0,this.disabledNodes.has(M.element)||Mt.push(M)}),v.timelines=Mt,s.append(P,v.timelines),a.push({instruction:v,player:T,element:P}),v.queriedElements.forEach(M=>O(o,M,[]).push(T)),v.preStyleProps.forEach((M,X)=>{if(M.size){let L=l.get(X);L||l.set(X,L=new Set),M.forEach((ye,We)=>L.add(We))}}),v.postStyleProps.forEach((M,X)=>{let L=u.get(X);L||u.set(X,L=new Set),M.forEach((ye,We)=>L.add(We))})});if(B.length){const f=[];B.forEach(p=>{f.push(function os(){return new E.wOt(3505,!1)}())}),Z.forEach(p=>p.destroy()),this.reportError(f)}const k=new Map,D=new Map;a.forEach(f=>{const p=f.element;s.has(p)&&(D.set(p,p),this._beforeAnimationBuild(f.player.namespaceId,f.instruction,k))}),n.forEach(f=>{const p=f.element;this._getPreviousPlayers(p,!1,f.namespaceId,f.triggerName,null).forEach(T=>{O(k,p,[]).push(T),T.destroy()})});const G=w.filter(f=>Tt(f,l,u)),J=new Map;_t(J,this.driver,A,u,d.kp).forEach(f=>{Tt(f,l,u)&&G.push(f)});const H=new Map;_.forEach((f,p)=>{_t(H,this.driver,new Set(f),l,d.FX)}),G.forEach(f=>{const p=J.get(f),g=H.get(f);J.set(f,new Map([...p?.entries()??[],...g?.entries()??[]]))});const Ue=[],Pt=[],Nt={};a.forEach(f=>{const{element:p,player:g,instruction:T}=f;if(s.has(p)){if(c.has(p))return g.onDestroy(()=>K(p,T.toStyles)),g.disabled=!0,g.overrideTotalTime(T.totalTime),void n.push(g);let P=Nt;if(D.size>1){let R=p;const V=[];for(;R=R.parentNode;){const v=D.get(R);if(v){P=v;break}V.push(R)}V.forEach(v=>D.set(v,P))}const q=this._buildAnimation(g.namespaceId,T,k,r,H,J);if(g.setRealPlayer(q),P===Nt)Ue.push(g);else{const R=this.playersByElement.get(P);R&&R.length&&(g.parentPlayer=$(R)),n.push(g)}}else W(p,T.fromStyles),g.onDestroy(()=>K(p,T.toStyles)),Pt.push(g),c.has(p)&&n.push(g)}),Pt.forEach(f=>{const p=r.get(f.element);if(p&&p.length){const g=$(p);f.setRealPlayer(g)}}),n.forEach(f=>{f.parentPlayer?f.syncPlayerEvents(f.parentPlayer):f.destroy()});for(let f=0;f!q.destroyed);P.length?rn(this,p,P):this.processLeaveNode(p)}return w.length=0,Ue.forEach(f=>{this.players.push(f),f.onDone(()=>{f.destroy();const p=this.players.indexOf(f);this.players.splice(p,1)}),f.play()}),Ue}afterFlush(e){this._flushFns.push(e)}afterFlushAnimationsDone(e){this._whenQuietFns.push(e)}_getPreviousPlayers(e,t,s,n,r){let a=[];if(t){const o=this.playersByQueriedElement.get(e);o&&(a=o)}else{const o=this.playersByElement.get(e);if(o){const l=!r||r==te;o.forEach(u=>{u.queued||!l&&u.triggerName!=n||a.push(u)})}}return(s||n)&&(a=a.filter(o=>!(s&&s!=o.namespaceId||n&&n!=o.triggerName))),a}_beforeAnimationBuild(e,t,s){const r=t.element,a=t.isRemovalTransition?void 0:e,o=t.isRemovalTransition?void 0:t.triggerName;for(const l of t.timelines){const u=l.element,c=u!==r,h=O(s,u,[]);this._getPreviousPlayers(u,c,a,o,t.toState).forEach(_=>{const m=_.getRealPlayer();m.beforeDestroy&&m.beforeDestroy(),_.destroy(),h.push(_)})}W(r,t.fromStyles)}_buildAnimation(e,t,s,n,r,a){const o=t.triggerName,l=t.element,u=[],c=new Set,h=new Set,S=t.timelines.map(m=>{const y=m.element;c.add(y);const w=y[z];if(w&&w.removedBeforeQueried)return new d.sf(m.duration,m.delay);const b=y!==l,A=function an(i){const e=[];return Et(i,e),e}((s.get(y)||Zs).map(k=>k.getRealPlayer())).filter(k=>!!k.element&&k.element===y),C=r.get(y),N=a.get(y),Z=He(this._normalizer,m.keyframes,C,N),B=this._buildPlayer(m,Z,A);if(m.subTimeline&&n&&h.add(y),b){const k=new Be(e,o,y);k.setRealPlayer(B),u.push(k)}return B});u.forEach(m=>{O(this.playersByQueriedElement,m.element,[]).push(m),m.onDone(()=>function tn(i,e,t){let s=i.get(e);if(s){if(s.length){const n=s.indexOf(t);s.splice(n,1)}0==s.length&&i.delete(e)}return s}(this.playersByQueriedElement,m.element,m))}),c.forEach(m=>F(m,tt));const _=$(S);return _.onDestroy(()=>{c.forEach(m=>Y(m,tt)),K(l,t.toStyles)}),h.forEach(m=>{O(n,m,[]).push(_)}),_}_buildPlayer(e,t,s){return t.length>0?this.driver.animate(e.element,t,e.duration,e.delay,e.easing,s):new d.sf(e.duration,e.delay)}}class Be{namespaceId;triggerName;element;_player=new d.sf;_containsRealPlayer=!1;_queuedCallbacks=new Map;destroyed=!1;parentPlayer=null;markedForDestroy=!1;disabled=!1;queued=!0;totalTime=0;constructor(e,t,s){this.namespaceId=e,this.triggerName=t,this.element=s}setRealPlayer(e){this._containsRealPlayer||(this._player=e,this._queuedCallbacks.forEach((t,s)=>{t.forEach(n=>_e(e,s,void 0,n))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(e.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(e){this.totalTime=e}syncPlayerEvents(e){const t=this._player;t.triggerCallback&&e.onStart(()=>t.triggerCallback("start")),e.onDone(()=>this.finish()),e.onDestroy(()=>this.destroy())}_queueEvent(e,t){O(this._queuedCallbacks,e,[]).push(t)}onDone(e){this.queued&&this._queueEvent("done",e),this._player.onDone(e)}onStart(e){this.queued&&this._queueEvent("start",e),this._player.onStart(e)}onDestroy(e){this.queued&&this._queueEvent("destroy",e),this._player.onDestroy(e)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(e){this.queued||this._player.setPosition(e)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(e){const t=this._player;t.triggerCallback&&t.triggerCallback(e)}}function pe(i){return i&&1===i.nodeType}function yt(i,e){const t=i.style.display;return i.style.display=e??"none",t}function _t(i,e,t,s,n){const r=[];t.forEach(l=>r.push(yt(l)));const a=[];s.forEach((l,u)=>{const c=new Map;l.forEach(h=>{const S=e.computeStyle(u,h,n);c.set(h,S),(!S||0==S.length)&&(u[z]=Js,a.push(u))}),i.set(u,c)});let o=0;return t.forEach(l=>yt(l,r[o++])),a}function St(i,e){const t=new Map;if(i.forEach(o=>t.set(o,[])),0==e.length)return t;const n=new Set(e),r=new Map;function a(o){if(!o)return 1;let l=r.get(o);if(l)return l;const u=o.parentNode;return l=t.has(u)?u:n.has(u)?1:a(u),r.set(o,l),l}return e.forEach(o=>{const l=a(o);1!==l&&t.get(l).push(o)}),t}function F(i,e){i.classList?.add(e)}function Y(i,e){i.classList?.remove(e)}function rn(i,e,t){$(t).onDone(()=>i.processLeaveNode(e))}function Et(i,e){for(let t=0;tn.add(r)):e.set(i,s),t.delete(i),!0}class qe{_driver;_normalizer;_transitionEngine;_timelineEngine;_triggerCache={};onRemovalComplete=(e,t)=>{};constructor(e,t,s){this._driver=t,this._normalizer=s,this._transitionEngine=new en(e.body,t,s),this._timelineEngine=new js(e.body,t,s),this._transitionEngine.onRemovalComplete=(n,r)=>this.onRemovalComplete(n,r)}registerTrigger(e,t,s,n,r){const a=e+"-"+n;let o=this._triggerCache[a];if(!o){const l=[],c=ke(this._driver,r,l,[]);if(l.length)throw function Yt(){return new E.wOt(3404,!1)}();o=function $s(i,e,t){return new Vs(i,e,t)}(n,c,this._normalizer),this._triggerCache[a]=o}this._transitionEngine.registerTrigger(t,n,o)}register(e,t){this._transitionEngine.register(e,t)}destroy(e,t){this._transitionEngine.destroy(e,t)}onInsert(e,t,s,n){this._transitionEngine.insertNode(e,t,s,n)}onRemove(e,t,s){this._transitionEngine.removeNode(e,t,s)}disableAnimations(e,t){this._transitionEngine.markElementAsDisabled(e,t)}process(e,t,s,n){if("@"==s.charAt(0)){const[r,a]=Xe(s);this._timelineEngine.command(r,t,a,n)}else this._transitionEngine.trigger(e,t,s,n)}listen(e,t,s,n,r){if("@"==s.charAt(0)){const[a,o]=Xe(s);return this._timelineEngine.listen(a,t,o,r)}return this._transitionEngine.listen(e,t,s,n,r)}flush(e=-1){this._transitionEngine.flush(e)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(e){this._transitionEngine.afterFlushAnimationsDone(e)}}let un=(()=>{class i{_element;_startStyles;_endStyles;static initialStylesByElement=new WeakMap;_state=0;_initialStyles;constructor(t,s,n){this._element=t,this._startStyles=s,this._endStyles=n;let r=i.initialStylesByElement.get(t);r||i.initialStylesByElement.set(t,r=new Map),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&K(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(K(this._element,this._initialStyles),this._endStyles&&(K(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(i.initialStylesByElement.delete(this._element),this._startStyles&&(W(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(W(this._element,this._endStyles),this._endStyles=null),K(this._element,this._initialStyles),this._state=3)}}return i})();function Qe(i){let e=null;return i.forEach((t,s)=>{(function cn(i){return"display"===i||"position"===i})(s)&&(e=e||new Map,e.set(s,t))}),e}class $e{element;keyframes;options;_specialStyles;_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_duration;_delay;_initialized=!1;_finished=!1;_started=!1;_destroyed=!1;_finalKeyframe;_originalOnDoneFns=[];_originalOnStartFns=[];domPlayer;time=0;parentPlayer=null;currentSnapshot=new Map;constructor(e,t,s,n){this.element=e,this.keyframes=t,this.options=s,this._specialStyles=n,this._duration=s.duration,this._delay=s.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(e=>e()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const e=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,e,this.options),this._finalKeyframe=e.length?e[e.length-1]:new Map;const t=()=>this._onFinish();this.domPlayer.addEventListener("finish",t),this.onDestroy(()=>{this.domPlayer.removeEventListener("finish",t)})}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(e){const t=[];return e.forEach(s=>{t.push(Object.fromEntries(s))}),t}_triggerWebAnimation(e,t,s){return e.animate(this._convertKeyframesToObject(t),s)}onStart(e){this._originalOnStartFns.push(e),this._onStartFns.push(e)}onDone(e){this._originalOnDoneFns.push(e),this._onDoneFns.push(e)}onDestroy(e){this._onDestroyFns.push(e)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(e=>e()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(e=>e()),this._onDestroyFns=[])}setPosition(e){void 0===this.domPlayer&&this.init(),this.domPlayer.currentTime=e*this.time}getPosition(){return+(this.domPlayer.currentTime??0)/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const e=new Map;this.hasStarted()&&this._finalKeyframe.forEach((s,n)=>{"offset"!==n&&e.set(n,this._finished?s:Ce(this.element,n))}),this.currentSnapshot=e}triggerCallback(e){const t="start"===e?this._onStartFns:this._onDoneFns;t.forEach(s=>s()),t.length=0}}class wt{validateStyleProperty(e){return!0}validateAnimatableStyleProperty(e){return!0}containsElement(e,t){return Te(e,t)}getParentElement(e){return ne(e)}query(e,t,s){return we(e,t,s)}computeStyle(e,t,s){return Ce(e,t)}animate(e,t,s,n,r,a=[]){const l={duration:s,delay:n,fill:0==n?"both":"forwards"};r&&(l.easing=r);const u=new Map,c=a.filter(_=>_ instanceof $e);rt(s,n)&&c.forEach(_=>{_.currentSnapshot.forEach((m,y)=>u.set(y,m))});let h=st(t).map(_=>new Map(_));h=function Es(i,e,t){if(t.size&&e.length){let s=e[0],n=[];if(t.forEach((r,a)=>{s.has(a)||n.push(a),s.set(a,r)}),n.length)for(let r=1;ra.set(o,Ce(i,o)))}}return e}(e,h,u);const S=function ln(i,e){let t=null,s=null;return Array.isArray(e)&&e.length?(t=Qe(e[0]),e.length>1&&(s=Qe(e[e.length-1]))):e instanceof Map&&(t=Qe(e)),t||s?new un(i,t,s):null}(e,h);return new $e(e,h,l,S)}}function hn(i,e){return"noop"===i?new qe(e,new ve,new xe):new qe(e,new wt,new at)}class fn{_driver;_animationAst;constructor(e,t){this._driver=e;const s=[],r=ke(e,t,s,[]);if(s.length)throw function Ht(){return new E.wOt(3500,!1)}();this._animationAst=r}buildTimelines(e,t,s,n,r){const a=Array.isArray(t)?nt(t):t,o=Array.isArray(s)?nt(s):s,l=[];r=r||new fe;const u=Ie(this._driver,e,this._animationAst,be,ie,a,o,n,r,l);if(l.length)throw function Xt(){return new E.wOt(3501,!1)}();return u}}const vt="@.disabled";class Ve{namespaceId;delegate;engine;_onDestroy;\u0275type=0;constructor(e,t,s,n){this.namespaceId=e,this.delegate=t,this.engine=s,this._onDestroy=n}get data(){return this.delegate.data}destroyNode(e){this.delegate.destroyNode?.(e)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(e,t){return this.delegate.createElement(e,t)}createComment(e){return this.delegate.createComment(e)}createText(e){return this.delegate.createText(e)}appendChild(e,t){this.delegate.appendChild(e,t),this.engine.onInsert(this.namespaceId,t,e,!1)}insertBefore(e,t,s,n=!0){this.delegate.insertBefore(e,t,s),this.engine.onInsert(this.namespaceId,t,e,n)}removeChild(e,t,s){this.parentNode(t)&&this.engine.onRemove(this.namespaceId,t,this.delegate)}selectRootElement(e,t){return this.delegate.selectRootElement(e,t)}parentNode(e){return this.delegate.parentNode(e)}nextSibling(e){return this.delegate.nextSibling(e)}setAttribute(e,t,s,n){this.delegate.setAttribute(e,t,s,n)}removeAttribute(e,t,s){this.delegate.removeAttribute(e,t,s)}addClass(e,t){this.delegate.addClass(e,t)}removeClass(e,t){this.delegate.removeClass(e,t)}setStyle(e,t,s,n){this.delegate.setStyle(e,t,s,n)}removeStyle(e,t,s){this.delegate.removeStyle(e,t,s)}setProperty(e,t,s){"@"==t.charAt(0)&&t==vt?this.disableAnimations(e,!!s):this.delegate.setProperty(e,t,s)}setValue(e,t){this.delegate.setValue(e,t)}listen(e,t,s,n){return this.delegate.listen(e,t,s,n)}disableAnimations(e,t){this.engine.disableAnimations(e,t)}}class bt extends Ve{factory;constructor(e,t,s,n,r){super(t,s,n,r),this.factory=e,this.namespaceId=t}setProperty(e,t,s){"@"==t.charAt(0)?"."==t.charAt(1)&&t==vt?this.disableAnimations(e,s=void 0===s||!!s):this.engine.process(this.namespaceId,e,t.slice(1),s):this.delegate.setProperty(e,t,s)}listen(e,t,s,n){if("@"==t.charAt(0)){const r=function dn(i){switch(i){case"body":return document.body;case"document":return document;case"window":return window;default:return i}}(e);let a=t.slice(1),o="";return"@"!=a.charAt(0)&&([a,o]=function mn(i){const e=i.indexOf(".");return[i.substring(0,e),i.slice(e+1)]}(a)),this.engine.listen(this.namespaceId,r,a,o,l=>{this.factory.scheduleListenerCallback(l._data||-1,s,l)})}return this.delegate.listen(e,t,s,n)}}class pn{delegate;engine;_zone;_currentId=0;_microtaskId=1;_animationCallbacksBuffer=[];_rendererCache=new Map;_cdRecurDepth=0;constructor(e,t,s){this.delegate=e,this.engine=t,this._zone=s,t.onRemovalComplete=(n,r)=>{r?.removeChild(null,n)}}createRenderer(e,t){const n=this.delegate.createRenderer(e,t);if(!e||!t?.data?.animation){const u=this._rendererCache;let c=u.get(n);return c||(c=new Ve("",n,this.engine,()=>u.delete(n)),u.set(n,c)),c}const r=t.id,a=t.id+"-"+this._currentId;this._currentId++,this.engine.register(a,e);const o=u=>{Array.isArray(u)?u.forEach(o):this.engine.registerTrigger(r,a,e,u.name,u)};return t.data.animation.forEach(o),new bt(this,a,n,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(e,t,s){if(e>=0&&et(s));const n=this._animationCallbacksBuffer;0==n.length&&queueMicrotask(()=>{this._zone.run(()=>{n.forEach(r=>{const[a,o]=r;a(o)}),this._animationCallbacksBuffer=[]})}),n.push([t,s])}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}componentReplaced(e){this.engine.flush(),this.delegate.componentReplaced?.(e)}}}}]); \ No newline at end of file diff --git a/web/910.c72829e7a46b4712.js b/web/910.c72829e7a46b4712.js new file mode 100644 index 0000000000000000000000000000000000000000..f1c954b31a9c7682c798f001035bae24da6fc25c --- /dev/null +++ b/web/910.c72829e7a46b4712.js @@ -0,0 +1 @@ +(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[910],{7060:(_t,ct,W)=>{"use strict";W.d(ct,{Y:()=>Ms,w:()=>i8});var F={};W.r(F),W.d(F,{assertParamsValid:()=>Rp,computeFlatOffset:()=>Op,computeOutShape:()=>$p,getNormalizedAxes:()=>RC,isSliceContinous:()=>Dp,maskToAxes:()=>AC,parseSliceParams:()=>ac,sliceInfo:()=>Pp,startForAxis:()=>iy,startIndicesWithElidedDims:()=>ny,stopForAxis:()=>ay,stopIndicesWithElidedDims:()=>sy,stridesForAxis:()=>ry,stridesWithElidedDims:()=>Jx});var Re={};W.r(Re),W.d(Re,{collectGatherOpShapeInfo:()=>Of,computeOutShape:()=>ub,segOpComputeOptimalWindowSize:()=>lb});var Ke={};W.r(Ke),W.d(Ke,{ERF_A1:()=>vf,ERF_A2:()=>wf,ERF_A3:()=>_f,ERF_A4:()=>Tf,ERF_A5:()=>Sf,ERF_P:()=>bf,PARALLELIZE_THRESHOLD:()=>ff,RowPartitionType:()=>lr,SELU_SCALE:()=>Sc,SELU_SCALEALPHA:()=>Tc,applyActivation:()=>yc,assertAndGetBroadcastShape:()=>ht,assertAxesAreInnerMostDims:()=>Fn,assertParamsConsistent:()=>pf,assignToTypedArray:()=>jy,axesAreInnerMostDims:()=>Gp,calculateShapes:()=>Mi,checkEinsumDimSizes:()=>Nf,checkPadOnDimRoundingMode:()=>qn,combineLocations:()=>gy,combineRaggedTensorToTensorShapes:()=>My,complexWithEvenIndex:()=>Gy,complexWithOddIndex:()=>Hy,computeConv2DInfo:()=>Nn,computeConv3DInfo:()=>qr,computeDefaultPad:()=>Lp,computeDilation2DInfo:()=>tl,computeOptimalWindowSize:()=>_c,computeOutAndReduceShapes:()=>An,computeOutShape:()=>or,computePool2DInfo:()=>ks,computePool3DInfo:()=>Tr,convertConv2DDataFormat:()=>Sr,decodeEinsumEquation:()=>Ef,eitherStridesOrDilationsAreOne:()=>Pn,expandShapeToKeepDim:()=>hn,exponent:()=>Ky,exponents:()=>Xy,fromStringArrayToUint8:()=>cb,fromUint8ToStringArray:()=>Ar,getAxesPermutation:()=>rn,getBroadcastDims:()=>ga,getComplexWithIndex:()=>Cf,getEinsumComputePath:()=>Af,getEinsumPermutation:()=>kf,getFusedBiasGradient:()=>xc,getFusedDyActivation:()=>gc,getImageCenter:()=>mf,getInnerMostAxes:()=>dn,getPermuted:()=>fl,getRaggedRank:()=>zy,getReductionAxes:()=>bn,getReshaped:()=>pl,getReshapedPermuted:()=>ml,getRowPartitionTypesHelper:()=>Vy,getSliceBeginCoords:()=>gf,getSliceSize:()=>xf,getSparseFillEmptyRowsIndicesDenseShapeMismatch:()=>Yy,getSparseFillEmptyRowsNegativeIndexErrorMessage:()=>Qy,getSparseFillEmptyRowsOutOfRangeIndexErrorMessage:()=>Jy,getSparseReshapeEmptyTensorZeroOutputDimErrorMessage:()=>nb,getSparseReshapeInputOutputMismatchErrorMessage:()=>rb,getSparseReshapeInputOutputMultipleErrorMessage:()=>sb,getSparseReshapeMultipleNegativeOneOutputDimErrorMessage:()=>eb,getSparseReshapeNegativeOutputDimErrorMessage:()=>tb,getSparseSegmentReductionIndicesOutOfRangeErrorMessage:()=>ob,getSparseSegmentReductionNegativeSegmentIdsErrorMessage:()=>Df,getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage:()=>ib,getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage:()=>ab,getUndoAxesPermutation:()=>Yr,isIdentityPermutation:()=>Rf,log:()=>B1,mergeRealAndImagArrays:()=>Nr,prepareAndValidate:()=>yf,prepareSplitSize:()=>$f,segment_util:()=>Re,shouldFuse:()=>bc,slice_util:()=>F,splitRealAndImagArrays:()=>Wy,stridesOrDilationsArePositive:()=>Di,tupleValuesAreOne:()=>Zr,upcastType:()=>ls,validateDefaultValueShape:()=>By,validateInput:()=>$N,validateUpdateShape:()=>Uy,warn:()=>fs});var Tt={};W.r(Tt),W.d(Tt,{mx:()=>Fw,XI:()=>Um,Nk:()=>Uw,f6:()=>Ww,ct:()=>Pw,YG:()=>Gw,hH:()=>Hw,z3:()=>Kw,sG:()=>Zw,uM:()=>Qw,vS:()=>t_,qB:()=>n_,GG:()=>s_,lg:()=>i_,rq:()=>r_,cu:()=>o_,WR:()=>a_,GE:()=>l_,px:()=>u_,jC:()=>c_,He:()=>d_,hE:()=>p_,BF:()=>Wm,Dk:()=>m_,cl:()=>g_,_B:()=>v_,ub:()=>__,_f:()=>S_,Ku:()=>E_,qy:()=>k_,Zy:()=>N_,bu:()=>Ki,zv:()=>fP,dH:()=>Mw,HS:()=>Bw,yH:()=>R_,l3:()=>$_,z9:()=>qm,x6:()=>B3,_m:()=>D_,eW:()=>O_,GK:()=>P_,SP:()=>F_,yr:()=>L_,dl:()=>Jw,Dw:()=>M_,xT:()=>z_,_X:()=>zm,wz:()=>U_});var nt=W(7673),Xe=W(4572),st=W(6648),Ce=W(8141),q=W(9437),de=W(1397),_e=W(5964),ue=W(9852),fe=W(6594),Pe=W(6354),Te=W(6173),lt=W(3993),Ht=W(9974),at=W(4360),jt=W(3669),Ee=W(1584),Be=W(8750),et=W(1985),N=W(467);class we{constructor(t,e){this.backend=t,this.dataMover=e,this.data=new WeakMap,this.dataIdsCount=0}get(t){return this.data.has(t)||this.dataMover.moveData(this.backend,t),this.data.get(t)}set(t,e){this.dataIdsCount++,this.data.set(t,e)}has(t){return this.data.has(t)}delete(t){return this.dataIdsCount--,this.data.delete(t)}numDataIds(){return this.dataIdsCount}}class Fe{refCount(t){return $e("refCount")}incRef(t){return $e("incRef")}timerAvailable(){return!0}time(t){return $e("time")}read(t){return $e("read")}readSync(t){return $e("readSync")}readToGPU(t,e){return $e("readToGPU")}numDataIds(){return $e("numDataIds")}disposeData(t,e){return $e("disposeData")}write(t,e,s){return $e("write")}move(t,e,s,r,i){return $e("move")}createTensorFromGPUData(t,e,s){return $e("createTensorFromGPUData")}memory(){return $e("memory")}floatPrecision(){return $e("floatPrecision")}epsilon(){return 32===this.floatPrecision()?1e-7:1e-4}dispose(){return $e("dispose")}}function $e(n){throw new Error(`'${n}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function qe(n){let t=n.length,e=0;for(;t>0;)e=Math.random()*t|0,t--,M(n,t,e)}function G(n,t,e){return Math.max(n,Math.min(t,e))}function C(n){return n%2==0?n:n+1}function M(n,t,e){const s=n[t];n[t]=n[e],n[e]=s}function T(n,t){if(!n)throw new Error("string"==typeof t?t:t())}function Me(n,t,e=""){T(rt(n,t),()=>e+` Shapes ${n} and ${t} must match`)}function Ye(n){T(null!=n,()=>"The input to the tensor constructor must be a non-null value.")}function K(n){if(0===n.length)return 1;let t=n[0];for(let e=1;e0,e,s){return new Promise((r,i)=>{let a=0;const o=()=>{if(n())return void r();a++;const l=t(a);null!=e&&a>=e?i():null!=s?s(o,l):setTimeout(o,l)};o()})}function It(n,t){let e=1,s=-1;for(let i=0;i=0)e*=n[i];else if(-1===n[i]){if(-1!==s)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${s} and dim ${i}`);s=i}else if(n[i]<0)throw Error(`Shapes can not be < 0. Found ${n[i]} at dim ${i}`);if(-1===s){if(t>0&&t!==e)throw Error(`Size(${t}) must match the product of shape ${n}`);return n}if(0===e)throw Error(`Cannot infer the missing size in [${n}] when there are 0 elements`);if(t%e!=0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${e}`);const r=n.slice();return r[s]=t/e,r}function pt(n,t){const e=t.length;return T((n=null==n?t.map((s,r)=>r):[].concat(n)).every(s=>s>=-e&&s`All values in axis param must be in range [-${e}, ${e}) but got axis ${n}`),T(n.every(s=>St(s)),()=>`All values in axis param must be integers but got axis ${n}`),n.map(s=>s<0?e+s:s)}function Qs(n,t){const e=[],s=[],r=null!=t&&Array.isArray(t)&&0===t.length,i=null==t||r?null:pt(t,n).sort();let a=0;for(let o=0;oo)&&1===n[o]&&(e.push(n[o]),s.push(o)),i[a]<=o&&a++}1!==n[o]&&(e.push(n[o]),s.push(o))}return{newShape:e,keptDims:s}}function Cn(n,t){return $t(n,t)}function $t(n,t){let e=null;if(null==n||"float32"===n)e=new Float32Array(t);else if("int32"===n)e=new Int32Array(t);else if("bool"===n)e=new Uint8Array(t);else{if("string"!==n)throw new Error(`Unknown data type ${n}`);e=new Array(t)}return e}function Ve(n,t){return!("complex64"===t||"float32"===t&&"complex64"!==n||"int32"===t&&"float32"!==n&&"complex64"!==n||"bool"===t&&"bool"===n)}function ra(n){if("float32"===n||"int32"===n)return 4;if("complex64"===n)return 8;if("bool"===n)return 1;throw new Error(`Unknown dtype ${n}`)}function os(n){return"string"==typeof n||n instanceof String}function ia(n){return"number"==typeof n}function vr(n){return Array.isArray(n)?vr(n[0]):n instanceof Float32Array?"float32":n instanceof Int32Array||n instanceof Uint8Array||n instanceof Uint8ClampedArray?"int32":ia(n)?"float32":os(n)?"string":function ln(n){return"boolean"==typeof n}(n)?"bool":"float32"}function Cs(n){return!!(n&&n.constructor&&n.call&&n.apply)}function vi(n,t){for(let e=t;e=0;--s)e[s]=e[s+1]*n[s+1];return e}function jl(n,t,e,s=!1){const r=new Array;if(1===t.length){const i=t[0]*(s?2:1);for(let a=0;al*u)*(s?2:1);for(let l=0;lr*i)*(e?2:1);if(0===s)return[];if(s!==t.length)throw new Error(`[${n}] does not match the input size ${t.length}${e?" for a complex tensor":""}.`);return jl(0,n,t,e)}function Vr(n,t){const e=yn(n,t);for(let s=0;ss*r,1);if(null==t||"float32"===t)return ds(n,new Float32Array(e));if("int32"===t)return ds(n,new Int32Array(e));if("bool"===t)return ds(n,new Uint8Array(e));throw new Error(`Unknown data type ${t}`)}function Js(n){n.forEach(t=>{T(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${n}].`)})}function Is(n,t,e){if(0===t)return 0;if(1===t)return n[0];let s=n[n.length-1];for(let r=0;r"u"||typeof this.global.location>"u"||typeof this.global.location.search>"u")return;const t=this.getQueryParams(this.global.location.search);ve in t&&t[ve].split(",").forEach(s=>{const[r,i]=s.split(":");this.urlFlags[r]=function H(n,t){const e=t.toLowerCase();return"true"===e||"false"===e?"true"===e:""+ +e===e?+e:t}(0,i)})}}function _(n){const t={};return n.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(e,...s)=>(function A(n,t,e){n[decodeURIComponent(t)]=decodeURIComponent(e||"")}(t,s[0],s[1]),s.join("="))),t}function E(){return ye}let gt,ye=null;function zt(){if(null==gt){let n;if(typeof window<"u")n=window;else if(typeof global<"u")n=global;else if(typeof process<"u")n=process;else{if(!(typeof self<"u"))throw new Error("Could not find a global object");n=self}gt=n}return gt}function xn(n,t){const e=function bt(){const n=zt();return null==n._tfGlobals&&(n._tfGlobals=new Map),n._tfGlobals}();if(e.has(n))return e.get(n);{const s=t();return e.set(n,s),e.get(n)}}const In="Abs",jn="Acos",ps="Acosh",oa="Add",ed="AddN",Kl="ArgMax",ql="ArgMin",Qa="Asin",Ja="Asinh",eo="Atan",to="Atanh",no="Atan2",Zl="AvgPool",sd="AvgPoolGrad",Yl="AvgPool3D",rd="AvgPool3DGrad",Ql="BatchMatMul",Jl="BatchToSpaceND",id="Bincount",ad="BitwiseAnd",Fg="BroadcastArgs",so="Cast",ro="Ceil",ao="ClipByValue",od="Complex",eu="ComplexAbs",tu="Concat",nu="Conv2D",ld="Conv2DBackpropFilter",su="Conv2DBackpropInput",ru="Conv3D",ud="Conv3DBackpropFilterV2",cd="Conv3DBackpropInputV2",oo="Cos",lo="Cosh",hd="Cumprod",iu="Cumsum",dd="CropAndResize",pd="DenseBincount",fd="DepthToSpace",au="DepthwiseConv2dNative",md="DepthwiseConv2dNativeBackpropFilter",gd="DepthwiseConv2dNativeBackpropInput",ou="Dilation2D",xd="Dilation2DBackpropInput",yd="Dilation2DBackpropFilter",uo="RealDiv",vd="Einsum",co="Elu",wd="EluGrad",ho="Erf",lu="Equal",po="Exp",uu="ExpandDims",fo="Expm1",Td="Fill",Sd="FlipLeftRight",mo="Floor",go="FloorDiv",cu="FusedBatchNorm",hu="GatherV2",Mg="GatherNd",du="Greater",xo="GreaterEqual",yo="Identity",Cd="IFFT",Id="Imag",bo="IsFinite",vo="IsInf",wo="IsNan",pu="LeakyRelu",fu="Less",mu="LessEqual",Vg="LinSpace",_o="Log",To="Log1p",gu="LogicalAnd",xu="LogicalNot",yu="LogicalOr",bu="LRN",Ed="LRNGrad",vu="Max",So="Maximum",wu="MaxPool",kd="MaxPoolGrad",_u="MaxPool3D",Nd="MaxPool3DGrad",zg="MaxPoolWithArgmax",Tu="Mean",Su="Min",Co="Minimum",Cu="MirrorPad",Io="Mod",Bg="Multinomial",Eo="Multiply",Iu="Neg",Eu="NotEqual",Ad="NonMaxSuppressionV3",Rd="NonMaxSuppressionV4",$d="NonMaxSuppressionV5",ku="OnesLike",Nu="OneHot",Au="Pack",Ru="PadV2",ko="Pow",$u="Prelu",Du="Prod",Ug="RaggedGather",Wg="RaggedRange",Gg="RaggedTensorToTensor",Dd="Range",Od="Real",No="Reciprocal",Ao="Relu",Ou="Reshape",Pu="ResizeNearestNeighbor",Pd="ResizeNearestNeighborGrad",Fu="ResizeBilinear",Fd="ResizeBilinearGrad",Ro="Relu6",Lu="Reverse",$o="Round",Do="Rsqrt",Hg="ScatterNd",jg="TensorScatterUpdate",Xg="SearchSorted",Mu="Select",Oo="Selu",Vu="Slice",Po="Sin",Fo="Sinh",Lo="Sign",Mo="Sigmoid",Vo="Softplus",zo="Sqrt",zu="Sum",Bu="SpaceToBatchND",Uu="SplitV",Wu="Softmax",Ld="SparseFillEmptyRows",Md="SparseReshape",Vd="SparseSegmentMean",zd="SparseSegmentSum",Kg="SparseToDense",Bo="SquaredDifference",Bd="Square",Gu="StaticRegexReplace",Ud="StridedSlice",Wd="StringNGrams",Gd="StringSplit",Hd="StringToHashBucketFast",Uo="Sub",Wo="Tan",Go="Tanh",Ho="Tile",jd="TopK",Xd="Transform",la="Transpose",Kd="Unique",Hu="Unpack",ju="UnsortedSegmentSum",Xu="ZerosLike",jo="Step",Zd="RotateWithOffset",Ku="_FusedMatMul",qu="FusedConv2D",Zu="FusedDepthwiseConv2D";function fs(...n){E().getBool("IS_TEST")||E().getBool("PROD")||console.warn(...n)}function B1(...n){E().getBool("IS_TEST")||E().getBool("PROD")||console.log(...n)}const ua=xn("kernelRegistry",()=>new Map),Xo=xn("gradRegistry",()=>new Map);function Yu(n,t){const e=Jd(n,t);return ua.get(e)}function qg(n){return Xo.get(n)}function Yd(n){const t=ua.entries(),e=[];for(;;){const{done:s,value:r}=t.next();if(s)break;const[i,a]=r,[o]=i.split("_");o===n&&e.push(a)}return e}function Qd(n){const{kernelName:t,backendName:e}=n,s=Jd(t,e);ua.has(s)&&fs(`The kernel '${t}' for backend '${e}' is already registered`),ua.set(s,n)}function U1(n){const{kernelName:t}=n;Xo.has(t)&&E().getBool("DEBUG")&&fs(`Overriding the gradient for '${t}'`),Xo.set(t,n)}function Jd(n,t){return`${t}_${n}`}function Zg(n){return n instanceof Float32Array||n instanceof Int32Array||n instanceof Uint8Array||n instanceof Uint8ClampedArray}var Yg=W(1929);const wi=W.n(Yg)()||Yg;function Qu(n){return wi.fromString(n,!0,16)}const Qg=Qu("c3a5c85c97cb3127"),_i=Qu("b492b66fbe98f273"),Xn=Qu("9ae16a3b2f90404f");function ep(n){return n.xor(n.shru(47))}function Jg(n,t,e){const s=n.slice(t,t+e);return wi.fromBytes(Array.from(s),!0,!0)}function Xt(n,t){return Jg(n,t,8)}function ex(n,t){return Jg(n,t,4)}function En(n,t){return 0===t?n:n.shru(t).or(n.shl(64-t))}function zr(n,t,e=Qu("9ddfea08eb382d69")){let s=n.xor(t).mul(e);s=s.xor(s.shru(47));let r=t.xor(s).mul(e);return r=r.xor(r.shru(47)),r=r.mul(e),r}function Ju(n,t,e,s){return function G1(n,t,e,s,r,i){r=r.add(n),i=En(i.add(r).add(s),21);const a=r;return r=(r=r.add(t)).add(e),i=i.add(En(r,44)),[r.add(s),i.add(a)]}(Xt(n,t),Xt(n,t+8),Xt(n,t+16),Xt(n,t+24),e,s)}function K1(n,t=n.length){const e=wi.fromNumber(81,!0);if(t<=32)return t<=16?function H1(n,t=n.length){if(t>=8){const e=Xn.add(2*t),s=Xt(n,0).add(Xn),r=Xt(n,t-8);return zr(En(r,37).mul(e).add(s),En(s,25).add(r).mul(e),e)}if(t>=4){const e=Xn.add(2*t);return zr(ex(n,0).shl(3).add(t),ex(n,t-4),e)}if(t>0){const a=t+(n[t-1]<<2);return ep(Xn.mul(n[0]+(n[t>>1]<<8)).xor(Qg.mul(a))).mul(Xn)}return Xn}(n,t):function j1(n,t=n.length){const e=Xn.add(2*t),s=Xt(n,0).mul(_i),r=Xt(n,8),i=Xt(n,t-8).mul(e),a=Xt(n,t-16).mul(Xn);return zr(En(s.add(r),43).add(En(i,30)).add(a),s.add(En(r.add(Xn),18)).add(i),e)}(n,t);if(t<=64)return function X1(n,t=n.length){const e=Xn.add(2*t),s=Xt(n,0).mul(Xn),r=Xt(n,8),i=Xt(n,t-8).mul(e),a=Xt(n,t-16).mul(Xn),o=En(s.add(r),43).add(En(i,30)).add(a),l=zr(o,s.add(En(r.add(Xn),18)).add(i),e),u=Xt(n,16).mul(e),c=Xt(n,24),h=o.add(Xt(n,t-32)).mul(e),d=l.add(Xt(n,t-24)).mul(e);return zr(En(u.add(c),43).add(En(h,30)).add(d),u.add(En(c.add(s),18)).add(h),e)}(n,t);let s=e,r=e.mul(_i).add(113),i=ep(r.mul(Xn).add(113)).mul(Xn),a=[wi.UZERO,wi.UZERO],o=[wi.UZERO,wi.UZERO];s=s.mul(Xn).add(Xt(n,0));let l=0;const u=64*(t-1>>6),c=u+(t-1&63)-63;do{s=En(s.add(r).add(a[0]).add(Xt(n,l+8)),37).mul(_i),r=En(r.add(a[1]).add(Xt(n,l+48)),42).mul(_i),s=s.xor(o[1]),r=r.add(a[0]).add(Xt(n,l+40)),i=En(i.add(o[0]),33).mul(_i),a=Ju(n,l,a[1].mul(_i),s.add(o[0])),o=Ju(n,l+32,i.add(o[1]),r.add(Xt(n,l+16))),[i,s]=[s,i],l+=64}while(l!==u);const h=_i.add(i.and(255).shl(1));return l=c,o[0]=o[0].add(t-1&63),a[0]=a[0].add(o[0]),o[0]=o[0].add(a[0]),s=En(s.add(r).add(a[0]).add(Xt(n,l+8)),37).mul(h),r=En(r.add(a[1]).add(Xt(n,l+48)),42).mul(h),s=s.xor(o[1].mul(9)),r=r.add(a[0].mul(9).add(Xt(n,l+40))),i=En(i.add(o[0]),33).mul(h),a=Ju(n,l,a[1].mul(h),s.add(o[0])),o=Ju(n,l+32,i.add(o[1]),r.add(Xt(n,l+16))),[i,s]=[s,i],zr(zr(a[0],o[0],h).add(ep(r).mul(Qg)).add(i),zr(a[1],o[1],h).add(s),h)}function Br(n,t){return"string"===t?Ur(n):Ti([n],t)}function Ti(n,t){if("string"===t)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(n)&&(n=Si(n)),E().getBool("DEBUG")&&function sa(n,t){for(let e=0;e{r=s()};let a;const o=Vn();if(this.backendTimer.timerAvailable())a=this.backendTimer.time(i);else{i();for(const u of r)u.dataSync();a=Promise.resolve({kernelMs:Vn()-o})}if(E().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let u=0;u{Q1(h,c.dtype,t)})}return{kernelName:t,outputs:r,inputs:e,timeMs:a.then(u=>u.kernelMs),extraInfo:a.then(u=>null!=u.getExtraProfileInfo?u.getExtraProfileInfo():"")}}logKernelProfile(t){const{kernelName:e,outputs:s,timeMs:r,inputs:i,extraInfo:a}=t;s.forEach(o=>{Promise.all([o.data(),r,a]).then(l=>{this.logger.logKernelProfile(e,o,l[0],l[1],i,l[2])})})}}function Q1(n,t,e){if("float32"!==t)return!1;for(let s=0;s0?g:""} `}}console.log(`%c${l}\t%c${o}\t%c${u}D ${h}\t%c${c}\t%c${d}\t%c${a}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}}function nS(n,t,e,s){const r=Ue(t),i=function sS(n,t,e,s){const r=K(t),i=s[s.length-1],a=new Array(i).fill(0),o=t.length,l="complex64"===e?Zo(n):n;if(o>1)for(let u=0;u" "+u).join("\n")),l.join("\n")}function qo(n,t,e){let s;return s=Array.isArray(n)?`${parseFloat(n[0].toFixed(7))} + ${parseFloat(n[1].toFixed(7))}j`:os(n)?`'${n}'`:"bool"===e?nx(n):parseFloat(n.toFixed(7)).toString(),zs(s,t)}function nx(n){return 0===n?"false":"true"}function ec(n,t,e,s,r,i=!0){const a="complex64"===e?2:1,o=t[0],l=t.length;if(0===l)return"complex64"===e?[qo(Zo(n)[0],0,e)]:"bool"===e?[nx(n[0])]:[n[0].toString()];if(1===l){if(o>20){let x=Array.from(n.slice(0,3*a)),y=Array.from(n.slice((o-3)*a,o*a));return"complex64"===e&&(x=Zo(x),y=Zo(y)),["["+x.map((b,v)=>qo(b,r[v],e)).join(", ")+", ..., "+y.map((b,v)=>qo(b,r[o-3+v],e)).join(", ")+"]"]}return["["+("complex64"===e?Zo(n):Array.from(n)).map((m,x)=>qo(m,r[x],e)).join(", ")+"]"]}const u=t.slice(1),c=s.slice(1),h=s[0]*a,d=[];if(o>20){for(let g=0;g<3;g++){const m=g*h;d.push(...ec(n.slice(m,m+h),u,e,c,r,!1))}d.push("...");for(let g=o-3;g0?d[0]+p:"");for(let g=1;g`Length of values '${r}' does not match the size inferred by the shape '${this.size}'.`)}if("complex64"===e)throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=s||$t(e,this.size),this.strides=Ue(t)}set(t,...e){0===e.length&&(e=[0]),T(e.length===this.rank,()=>`The number of provided coordinates (${e.length}) must match the rank (${this.rank})`);const s=this.locToIndex(e);this.values[s]=t}get(...t){0===t.length&&(t=[0]);let e=0;for(const r of t){if(r<0||r>=this.shape[e])throw new Error(`Requested out of range element at ${t}. Buffer shape=${this.shape}`);e++}let s=t[t.length-1];for(let r=0;rWr(r))}catch{throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e})()}dataToGPU(t){return this.throwIfDisposed(),Bs().readToGPU(this.dataId,t)}dataSync(){this.throwIfDisposed();const t=Bs().readSync(this.dataId);if("string"===this.dtype)try{return t.map(e=>Wr(e))}catch{throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return t}bytes(){var t=this;return(0,N.A)(function*(){t.throwIfDisposed();const e=yield Bs().read(t.dataId);return"string"===t.dtype?e:new Uint8Array(e.buffer)})()}dispose(){this.isDisposed||(this.kerasMask&&this.kerasMask.dispose(),Bs().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(t=!1){return ca.print(this,t)}clone(){return this.throwIfDisposed(),ca.clone(this)}toString(t=!1){return nS(this.dataSync(),this.shape,this.dtype,t)}cast(t){return this.throwIfDisposed(),ca.cast(this,t)}variable(t=!0,e,s){return this.throwIfDisposed(),Bs().makeVariable(this,t,e,s)}}function ne(){return xn("Tensor",()=>Qt)}Object.defineProperty(Qt,Symbol.hasInstance,{value:n=>!!n&&null!=n.data&&null!=n.dataSync&&null!=n.throwIfDisposed}),ne();class tc extends Qt{constructor(t,e,s,r){super(t.shape,t.dtype,t.dataId,r),this.trainable=e,this.name=s}assign(t){if(t.dtype!==this.dtype)throw new Error(`dtype of the new value (${t.dtype}) and previous value (${this.dtype}) must match`);if(!rt(t.shape,this.shape))throw new Error(`shape of the new value (${t.shape}) and previous value (${this.shape}) must match`);Bs().disposeTensor(this),this.dataId=t.dataId,Bs().incRef(this,null)}dispose(){Bs().disposeVariable(this),this.isDisposedInternal=!0}}Object.defineProperty(tc,Symbol.hasInstance,{value:n=>n instanceof Qt&&null!=n.assign&&n.assign instanceof Function});var rx=function(n){return n.float32="float32",n.int32="int32",n.bool="int32",n.complex64="complex64",n}(rx||{}),ix=function(n){return n.float32="float32",n.int32="int32",n.bool="bool",n.complex64="complex64",n}(ix||{}),ax=function(n){return n.float32="float32",n.int32="float32",n.bool="float32",n.complex64="complex64",n}(ax||{}),ox=function(n){return n.float32="complex64",n.int32="complex64",n.bool="complex64",n.complex64="complex64",n}(ox||{});const lS={float32:ax,int32:rx,bool:ix,complex64:ox};function ls(n,t){if("string"===n||"string"===t){if("string"===n&&"string"===t)return"string";throw new Error(`Can not upcast ${n} with ${t}`)}return lS[n][t]}function np(n){return ls(n,"int32")}function lx(n){return null!=n&&"object"==typeof n&&"texture"in n&&n.texture instanceof WebGLTexture}function ux(n){return typeof GPUBuffer<"u"&&null!=n&&"object"==typeof n&&"buffer"in n&&n.buffer instanceof GPUBuffer}function un(n,t){if(n.dtype===t.dtype)return[n,t];const e=ls(n.dtype,t.dtype);return[n.cast(e),t.cast(e)]}function Gr(n){const t=[];return cx(n,t,new Set),t}function cx(n,t,e){if(null==n)return;if(n instanceof Qt)return void t.push(n);if(!function uS(n){return Array.isArray(n)||"object"==typeof n}(n))return;const s=n;for(const r in s){const i=s[r];e.has(i)||(e.add(i),cx(i,t,e))}}function rp(n){return null!=n.kernelName}class hx{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(t=>t.name)))}}}dispose(){for(const t in this.registeredVariables)this.registeredVariables[t].dispose()}}let cS=(()=>{class n{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new hx}ready(){var e=this;return(0,N.A)(function*(){if(null!=e.pendingBackendInit)return e.pendingBackendInit.then(()=>{});if(null!=e.backendInstance)return;const s=e.getSortedBackends();for(let r=0;r{null!=s.setupFunc&&s.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){Yd(e).forEach(r=>{null!=r.disposeFunc&&r.disposeFunc(this.registry[e])})}initializeBackend(e){const s=this.registryFactory[e];if(null==s)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{const r=s.factory();if(!r||r instanceof Fe||"function"!=typeof r.then)return this.registry[e]=r,{success:!0,asyncInit:!1};{const i=++this.pendingBackendInitId,a=r.then(o=>!(i(ithis.registryFactory[s].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){const e=this.getSortedBackends();for(let s=0;sthis.startScope(r),()=>this.endScope(i),()=>(i=s(),i instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),i))}scopedRun(e,s,r){e();try{const i=r();return s(),i}catch(i){throw s(),i}}nextTensorId(){return n.nextTensorId++}nextVariableId(){return n.nextVariableId++}clone(e){const s=V.runKernel(yo,{x:e});return this.addTapeNode(this.state.activeScope.name,{x:e},[s],o=>({x:()=>V.runKernel(so,{x:o},{dtype:"float32"})}),[],{}),s}runKernel(e,s,r){if(null==Yu(e,this.backendName))throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:s,attrs:r})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,s,r){const i=this.backend.numDataIds();let a=0;r.forEach(u=>{a+="complex64"===u.dtype?3:1});const l=i-s-a-this.state.numDataMovesStack[this.state.numDataMovesStack.length-1];if(l>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${l} data ids) after running '${e}'`)}runKernelFunc(e){let s,r=[];const i=this.isTapeOn(),a=this.state.numBytes,o=this.state.numTensors;let l,u;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);const c=rp(e)?e.kernelName:null!=this.state.activeScope?this.state.activeScope.name:"";if(rp(e)){const{kernelName:g,inputs:m,attrs:x}=e,y=Yu(g,this.backendName);T(null!=y,()=>`Cannot find registered kernel '${g}' for backend '${this.backendName}'`),l=()=>{const b=this.backend.numDataIds();u=y.kernelFunc({inputs:m,attrs:x,backend:this.backend});const v=Array.isArray(u)?u:[u];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(g,b,v);const w=v.map(S=>null!=S.rank?S:this.makeTensorFromTensorInfo(S));if(i){const S=this.getTensorsForGradient(g,m,w);r=this.saveTensorsForBackwardMode(S)}return w}}else{const{forwardFunc:g}=e,m=x=>{i&&(r=x.map(y=>this.keep(this.clone(y))))};l=()=>{const x=this.backend.numDataIds();u=this.tidy(()=>g(this.backend,m));const y=Array.isArray(u)?u:[u];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(c,x,y),y}}const{inputs:h,attrs:d}=e,p=rp(e)?null:e.backwardsFunc;let f;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{this.ENV.getBool("DEBUG")||this.state.profiling?(f=this.profiler.profileKernel(c,h,()=>l()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(f),s=f.outputs):s=l()}),i&&this.addTapeNode(c,h,s,p,r,d),this.state.profiling&&this.state.activeProfile.kernels.push({name:c,bytesAdded:this.state.numBytes-a,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-o,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(h).map(g=>null!=h[g]?h[g].shape:null),outputShapes:s.map(g=>g.shape),kernelTimeMs:f.timeMs,extraInfo:f.extraInfo}),Array.isArray(u)?s:s[0]}saveTensorsForBackwardMode(e){return e.map(r=>this.keep(this.clone(r)))}getTensorsForGradient(e,s,r){const i=qg(e);if(null!=i){const a=i.inputsToSave||[],o=i.outputsToSave||[];let l;i.saveAllInputs?(T(Array.isArray(s),()=>"saveAllInputs is true, expected inputs to be an array."),l=Object.keys(s).map(c=>s[c])):l=a.map(c=>s[c]);const u=r.filter((c,h)=>o[h]);return l.concat(u)}return[]}makeTensor(e,s,r,i){if(null==e)throw new Error("Values passed to engine.makeTensor() are null");i=i||this.backend;let a=e;"string"===(r=r||"float32")&&os(e[0])&&(a=e.map(u=>Ur(u)));const o=i.write(a,s,r),l=new Qt(s,r,o,this.nextTensorId());if(this.trackTensor(l,i),"string"===r){const u=this.state.tensorInfo.get(o),c=function ce(n){if(null==n)return 0;let t=0;return n.forEach(e=>t+=e.length),t}(a);this.state.numBytes+=c-u.bytes,u.bytes=c}return l}makeTensorFromDataId(e,s,r,i){return this.makeTensorFromTensorInfo({dataId:e,shape:s,dtype:r=r||"float32"},i)}makeTensorFromTensorInfo(e,s){const{dataId:r,shape:i,dtype:a}=e,o=new Qt(i,a,r,this.nextTensorId());return this.trackTensor(o,s),o}makeVariable(e,s=!0,r,i){r=r||this.nextVariableId().toString(),null!=i&&i!==e.dtype&&(e=e.cast(i));const a=new tc(e,s,r,this.nextTensorId());if(null!=this.state.registeredVariables[a.name])throw new Error(`Variable with name ${a.name} was already registered`);return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a}trackTensor(e,s){this.state.numTensors++,"string"===e.dtype&&this.state.numStringTensors++;let r=0;"complex64"!==e.dtype&&"string"!==e.dtype&&(r=e.size*ra(e.dtype)),this.state.numBytes+=r,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:s||this.backend,dtype:e.dtype,shape:e.shape,bytes:r})),e instanceof tc||this.track(e)}incRef(e,s){this.trackTensor(e,s),this.backend.incRef(e.dataId)}removeDataId(e,s){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===s&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;const s=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,"string"===e.dtype&&(this.state.numStringTensors--,this.state.numBytes-=s.bytes),"complex64"!==e.dtype&&"string"!==e.dtype){const r=e.size*ra(e.dtype);this.state.numBytes-=r}s.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,s.backend)}disposeVariables(){for(const e in this.state.registeredVariables)this.disposeVariable(this.state.registeredVariables[e])}disposeVariable(e){this.disposeTensor(e),null!=this.state.registeredVariables[e.name]&&delete this.state.registeredVariables[e.name]}memory(){const e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,null==e.reasons&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}profile(e){var s=this;return(0,N.A)(function*(){s.state.profiling=!0;const r=s.state.numBytes,i=s.state.numTensors;s.state.activeProfile.kernels=[],s.state.activeProfile.result=yield e(),s.state.profiling=!1,s.state.activeProfile.peakBytes=Math.max(...s.state.activeProfile.kernels.map(a=>a.totalBytesSnapshot)),s.state.activeProfile.newBytes=s.state.numBytes-r,s.state.activeProfile.newTensors=s.state.numTensors-i;for(const a of s.state.activeProfile.kernels)a.kernelTimeMs=yield a.kernelTimeMs,a.extraInfo=yield a.extraInfo;return s.state.activeProfile})()}isTapeOn(){return this.state.gradientDepth>0&&0===this.state.kernelDepth}addTapeNode(e,s,r,i,a,o){const l={id:this.state.nextTapeNodeId++,kernelName:e,inputs:s,outputs:r,saved:a},u=qg(e);null!=u&&(i=u.gradFunc),null!=i&&(l.gradient=c=>(c=c.map((h,d)=>{if(null==h){const p=r[d],f=yn(p.size,p.dtype);return this.makeTensor(f,p.shape,p.dtype)}return h}),i(c.length>1?c:c[0],a,o))),this.state.activeTape.push(l)}keep(e){return e.kept=!0,e}startTape(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){const s={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(s.name=e),this.state.scopeStack.push(s),this.state.activeScope=s}endScope(e){const s=Gr(e),r=new Set(s.map(a=>a.id));for(let a=0;a{!a.kept&&a.scopeId===i.id&&this.track(a)})}gradients(e,s,r,i=!1){if(T(s.length>0,()=>"gradients() received an empty list of xs."),null!=r&&"float32"!==r.dtype)throw new Error(`dy must have 'float32' dtype, but has '${r.dtype}'`);const a=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));T(a instanceof Qt,()=>"The result y returned by f() must be a tensor.");const o=function eS(n,t,e){const s={},r={};for(let l=0;ls[g.id]=!0),p=!0,r[u.id]=!0;break}if(p)break}}const i={};i[e.id]=!0;const a={};for(let l=n.length-1;l>=0;l--){const u=n[l],c=u.inputs;for(let h=0;h0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{const l={};l[a.id]=r??function hS(n){const t=Vr(K(n),"float32");return V.makeTensor(t,n,"float32")}(a.shape),function tS(n,t,e,s){for(let r=t.length-1;r>=0;r--){const i=t[r],a=[];if(i.outputs.forEach(l=>{const u=n[l.id];a.push(null!=u?u:null)}),null==i.gradient)throw new Error(`Cannot compute gradient: gradient function not found for ${i.kernelName}.`);const o=i.gradient(a);for(const l in i.inputs){if(!(l in o))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(o)}.`);const u=e(()=>o[l]());if("float32"!==u.dtype)throw new Error(`Error in gradient for op ${i.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${u.dtype}'`);const c=i.inputs[l];if(!rt(u.shape,c.shape))throw new Error(`Error in gradient for op ${i.kernelName}. The gradient of input '${l}' has shape '${u.shape}', which does not match the shape of the input '${c.shape}'`);if(null==n[c.id])n[c.id]=u;else{const h=n[c.id];n[c.id]=s(h,u),h.dispose()}}}}(l,o,c=>this.tidy(c),dS);const u=s.map(c=>l[c.id]);return 0===this.state.gradientDepth&&(this.state.activeTape.forEach(c=>{for(const h of c.saved)h.dispose()}),this.state.activeTape=null),{value:a,grads:u}})}customGrad(e){return T(Cs(e),()=>"The f passed in customGrad(f) must be a function."),(...s)=>{let r;T(s.every(l=>l instanceof Qt),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");const i={};return s.forEach((l,u)=>{i[u]=l}),this.runKernelFunc({forwardFunc:(l,u)=>(r=e(...s,u),T(r.value instanceof Qt,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),T(Cs(r.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),r.value),backwardsFunc:(l,u)=>{const c=r.gradFunc(l,u),h=Array.isArray(c)?c:[c];T(h.length===s.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),T(h.every(p=>p instanceof Qt),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");const d={};return h.forEach((p,f)=>{d[f]=()=>p}),d},inputs:i})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}readToGPU(e,s){return this.state.tensorInfo.get(e).backend.readToGPU(e,s)}time(e){var s=this;return(0,N.A)(function*(){const r=Vn(),i=yield s.backend.time(e);return i.wallMs=Vn()-r,i})()}track(e){return null!=this.state.activeScope&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new hx;for(const e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}}return n.nextTensorId=0,n.nextVariableId=0,n})();function dx(){const n=zt();if(null==n._tfengine){const t=new Oe(n);n._tfengine=new cS(t)}return function Je(n){ye=n}(n._tfengine.ENV),function rS(n){Bs=n}(()=>n._tfengine),n._tfengine}const V=dx();function dS(n,t){return V.runKernel(oa,{a:n,b:t})}function px(n){if(n||function pS(){return typeof navigator<"u"&&null!=navigator}()){if(n||(n=navigator),"ReactNative"===n.product)return!0;const t=n.userAgent||n.vendor||(typeof window<"u"?window.opera:"");return t?/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)):n.userAgentData&&n.userAgentData.mobile}return!1}function fx(){return typeof window<"u"&&null!=window.document||typeof WorkerGlobalScope<"u"}const ns=E();function Yo(n,t){let e=n;if(ms(n))return"string"===t?[]:[n.length];if(lx(n))return[n.height,n.width*(n.channels||"RGBA").length];if(ux(n))return[n.buffer.size/(null==t?4:ra(t))];if(!Array.isArray(n))return[];const s=[];for(;Array.isArray(e)||ms(e)&&"string"!==t;)s.push(e.length),e=e[0];return Array.isArray(n)&&E().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&mx(n,s,[]),s}function mx(n,t,e){if(e=e||[],!Array.isArray(n)&&!ms(n))return void T(0===t.length,()=>`Element arr[${e.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);T(t.length>0,()=>`Element arr[${e.join("][")}] should be a primitive, but is an array of ${n.length} elements`),T(n.length===t[0],()=>`Element arr[${e.join("][")}] should have ${t[0]} elements, but has ${n.length} elements`);const s=t.slice(1);for(let r=0;r=0&&(r=s),gx(s,r,t,e),null==n||!ms(n)&&!Array.isArray(n)&&"number"!=typeof n&&"boolean"!=typeof n&&"string"!=typeof n)throw new Error(`Argument '${t}' passed to '${e}' must be a Tensor or TensorLike, but got '${null==n?"null":n.constructor.name}'`);const i=Yo(n,r);!ms(n)&&!Array.isArray(n)&&(n=[n]);const o="string"!==r?Ti(n,r):Si(n,[],!0);return V.makeTensor(o,i,r)}function xx(n,t,e,s="numeric"){if(!Array.isArray(n))throw new Error(`Argument ${t} passed to ${e} must be a \`Tensor[]\` or \`TensorLike[]\``);return n.map((i,a)=>$(i,`${t}[${a}]`,e,s))}function U(n){const t=Object.keys(n);if(1!==t.length)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let e=t[0];const s=n[e];e.endsWith("_")&&(e=e.substring(0,e.length-1)),e+="__op";const r=(...i)=>{V.startScope(e);try{const a=s(...i);return aa(a)&&console.error("Cannot return a Promise inside of tidy."),V.endScope(a),a}catch(a){throw V.endScope(null),a}};return Object.defineProperty(r,"name",{value:e,configurable:!0}),r}ns.registerFlag("DEBUG",()=>!1,n=>{n&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")}),ns.registerFlag("IS_BROWSER",()=>fx()),ns.registerFlag("IS_NODE",()=>typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"),ns.registerFlag("IS_CHROME",()=>typeof navigator<"u"&&null!=navigator&&null!=navigator.userAgent&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)),ns.registerFlag("IS_SAFARI",()=>typeof navigator<"u"&&null!=navigator&&null!=navigator.userAgent&&/Safari/.test(navigator.userAgent)&&/Apple/.test(navigator.vendor)),ns.registerFlag("PROD",()=>!1),ns.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>ns.getBool("DEBUG")),ns.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0),ns.registerFlag("IS_TEST",()=>!1),ns.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>ns.getBool("DEBUG")),ns.registerFlag("WRAP_TO_IMAGEBITMAP",()=>!1),ns.registerFlag("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU",()=>!1),ns.registerFlag("USE_SETTIMEOUTCUSTOM",()=>!1);const Ci=U({complex_:function mS(n,t){const e=$(n,"real","complex"),s=$(t,"imag","complex");return Me(e.shape,s.shape,`real and imag shapes, ${e.shape} and ${s.shape}, must match in call to tf.complex().`),V.runKernel(od,{real:e,imag:s})}});function Qo(n,t,e,s){if(null==s)s=vr(n);else if("complex64"===s)throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(ux(n)||lx(n)){if("float32"!==s&&"int32"!==s)throw new Error(`Creating tensor from GPU data only supports 'float32'|'int32' dtype, while the dtype is ${s}.`);return V.backend.createTensorFromGPUData(n,t||e,s)}if(!ms(n)&&!Array.isArray(n)&&"number"!=typeof n&&"boolean"!=typeof n&&"string"!=typeof n)throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(null!=t){Js(t);const r=K(t),i=K(e);T(r===i,()=>`Based on the provided shape, [${t}], the tensor should have ${r} values but has ${i}`);for(let a=0;a`Error creating a new Tensor. Inferred shape (${e}) does not match the provided shape (${t}). `)}}return!ms(n)&&!Array.isArray(n)&&(n=[n]),t=t||e,n="string"!==s?Ti(n,s):Si(n,[],!0),V.makeTensor(n,t,s)}function Ii(n,t,e){return Qo(n,t,Yo(n,e),e)}class er{static join(t){return new er(t).slice()}constructor(t){if(this.shards=[],this.previousShardIndex=0,null==t||(t instanceof Array||(t=[t]),0===(t=t.map(s=>ms(s)?s.buffer:s)).length))return;this.bufferUniformSize=t[0].byteLength;let e=0;for(let s=0;s=this.byteLength)return-1;if(null!=this.bufferUniformSize)return this.previousShardIndex=Math.floor(t/this.bufferUniformSize),this.previousShardIndex;function e(r){return t=r.end?1:0}if(0===e(this.shards[this.previousShardIndex]))return this.previousShardIndex;const s=function gS(n,t){let e=0,s=n.length;for(;e<=s;){const r=Math.floor((s-e)/2)+e,i=t(n[r]);if(0===i)return r;i<0?s=r:e=r+1}return-1}(this.shards,e);return-1===s?-1:(this.previousShardIndex=s,this.previousShardIndex)}}function tr(){return V}function ap(){return V.memory()}function Z(n,t){return V.tidy(n,t)}function xt(n){Gr(n).forEach(e=>e.dispose())}function nr(n){return V.keep(n)}function yx(n,t,e=1){return V.registerBackend(n,t,e)}function vx(n,t){return op.apply(this,arguments)}function op(){return op=(0,N.A)(function*(n,t){const e=[],s=[],r=Array.isArray(n)?n.map(a=>a.name):Object.keys(n);for(let a=0;ax+y.length,0)+4*p.length,g=new Uint8Array(f);let m=0;for(let x=0;x{if(t+=i.byteLength,e.push(i.byteLength===i.buffer.byteLength?i:new i.constructor(i)),!(i instanceof Float32Array||i instanceof Int32Array||i instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${i.constructor.name}`)});const s=new Uint8Array(t);let r=0;return e.forEach(i=>{s.set(new Uint8Array(i.buffer),r),r+=i.byteLength}),s.buffer}!function aS(n){sx=n}(function xS(n){E().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(n+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")});const hp=typeof Buffer<"u"&&(typeof Blob>"u"||typeof atob>"u"||typeof btoa>"u");function Tx(n){return hp?Buffer.byteLength(n,"utf8"):new Blob([n]).size}function Cx(n,t){const e={modelTopology:n.modelTopology,format:n.format,generatedBy:n.generatedBy,convertedBy:n.convertedBy,weightsManifest:t};return null!=n.signature&&(e.signature=n.signature),null!=n.userDefinedMetadata&&(e.userDefinedMetadata=n.userDefinedMetadata),null!=n.modelInitializer&&(e.modelInitializer=n.modelInitializer),null!=n.initializerSignature&&(e.initializerSignature=n.initializerSignature),null!=n.trainingConfig&&(e.trainingConfig=n.trainingConfig),e}function dp(){return(dp=(0,N.A)(function*(n,t){let e,s;return null!=n.weightsManifest&&([e,s]=yield t(n.weightsManifest)),function IS(n,t,e){const s={modelTopology:n.modelTopology,format:n.format,generatedBy:n.generatedBy,convertedBy:n.convertedBy};if(null!=n.trainingConfig&&(s.trainingConfig=n.trainingConfig),null!=n.weightsManifest){if(!t)throw new Error("modelJSON has weightsManifest but weightSpecs is null");if(!e)throw new Error("modelJSON has weightsManifest but weightData is null");s.weightSpecs=t,s.weightData=e}return null!=n.signature&&(s.signature=n.signature),null!=n.userDefinedMetadata&&(s.userDefinedMetadata=n.userDefinedMetadata),null!=n.modelInitializer&&(s.modelInitializer=n.modelInitializer),null!=n.initializerSignature&&(s.initializerSignature=n.initializerSignature),s}(n,e,s)})).apply(this,arguments)}function nc(n){if(n.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:null==n.modelTopology?0:Tx(JSON.stringify(n.modelTopology)),weightSpecsBytes:null==n.weightSpecs?0:Tx(JSON.stringify(n.weightSpecs)),weightDataBytes:null==n.weightData?0:new er(n.weightData).byteLength}}function Ex(n){const t=[];for(const e of n)t.push(...e.weights);return t}class sn{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return null==sn.instance&&(sn.instance=new sn),sn.instance}static registerSaveRouter(t){sn.getInstance().saveRouters.push(t)}static registerLoadRouter(t){sn.getInstance().loadRouters.push(t)}static getSaveHandlers(t){return sn.getHandlers(t,"save")}static getLoadHandlers(t,e){return sn.getHandlers(t,"load",e)}static getHandlers(t,e,s){const r=[];return("load"===e?sn.getInstance().loadRouters:sn.getInstance().saveRouters).forEach(a=>{const o=a(t,s);null!==o&&r.push(o)}),r}}const sc="tensorflowjs",ki="models_store",jr="model_info_store";function mp(){if(!E().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");const n=typeof window>"u"?self:window,t=n.indexedDB||n.mozIndexedDB||n.webkitIndexedDB||n.msIndexedDB||n.shimIndexedDB;if(null==t)throw new Error("The current browser does not appear to support IndexedDB.");return t}function gp(n){const t=n.result;t.createObjectStore(ki,{keyPath:"modelPath"}),t.createObjectStore(jr,{keyPath:"modelPath"})}let ha=(()=>{class n{constructor(e){if(this.indexedDB=mp(),null==e||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}save(e){var s=this;return(0,N.A)(function*(){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return s.databaseAction(s.modelPath,e)})()}load(){var e=this;return(0,N.A)(function*(){return e.databaseAction(e.modelPath)})()}databaseAction(e,s){return new Promise((r,i)=>{const a=this.indexedDB.open(sc,1);a.onupgradeneeded=()=>gp(a),a.onsuccess=()=>{const o=a.result;if(null==s){const l=o.transaction(ki,"readonly"),c=l.objectStore(ki).get(this.modelPath);c.onsuccess=()=>{if(null==c.result)return o.close(),i(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));r(c.result.modelArtifacts)},c.onerror=h=>(o.close(),i(c.error)),l.oncomplete=()=>o.close()}else{s.weightData=er.join(s.weightData);const l=nc(s),u=o.transaction(jr,"readwrite");let h,d,c=u.objectStore(jr);try{h=c.put({modelPath:this.modelPath,modelArtifactsInfo:l})}catch(p){return i(p)}h.onsuccess=()=>{d=o.transaction(ki,"readwrite");const p=d.objectStore(ki);let f;try{f=p.put({modelPath:this.modelPath,modelArtifacts:s,modelArtifactsInfo:l})}catch(g){return i(g)}f.onsuccess=()=>r({modelArtifactsInfo:l}),f.onerror=g=>{c=u.objectStore(jr);const m=c.delete(this.modelPath);m.onsuccess=()=>(o.close(),i(f.error)),m.onerror=x=>(o.close(),i(f.error))}},h.onerror=p=>(o.close(),i(h.error)),u.oncomplete=()=>{null==d?o.close():d.oncomplete=()=>o.close()}}},a.onerror=o=>i(a.error)})}}return n.URL_SCHEME="indexeddb://",n})();const kx=n=>E().getBool("IS_BROWSER")&&!Array.isArray(n)&&n.startsWith(ha.URL_SCHEME)?function $S(n){return new ha(n)}(n.slice(ha.URL_SCHEME.length)):null;sn.registerSaveRouter(kx),sn.registerLoadRouter(kx);class OS{constructor(){this.indexedDB=mp()}listModels(){var t=this;return(0,N.A)(function*(){return new Promise((e,s)=>{const r=t.indexedDB.open(sc,1);r.onupgradeneeded=()=>gp(r),r.onsuccess=()=>{const i=r.result,a=i.transaction(jr,"readonly"),l=a.objectStore(jr).getAll();l.onsuccess=()=>{const u={};for(const c of l.result)u[c.modelPath]=c.modelArtifactsInfo;e(u)},l.onerror=u=>(i.close(),s(l.error)),a.oncomplete=()=>i.close()},r.onerror=i=>s(r.error)})})()}removeModel(t){var e=this;return(0,N.A)(function*(){return t=function DS(n){return n.startsWith(ha.URL_SCHEME)?n.slice(ha.URL_SCHEME.length):n}(t),new Promise((s,r)=>{const i=e.indexedDB.open(sc,1);i.onupgradeneeded=()=>gp(i),i.onsuccess=()=>{const a=i.result,o=a.transaction(jr,"readwrite"),l=o.objectStore(jr),u=l.get(t);let c;u.onsuccess=()=>{if(null==u.result)return a.close(),r(new Error(`Cannot find model with path '${t}' in IndexedDB.`));{const h=l.delete(t),d=()=>{c=a.transaction(ki,"readwrite");const f=c.objectStore(ki).delete(t);f.onsuccess=()=>s(u.result.modelArtifactsInfo),f.onerror=g=>r(u.error)};h.onsuccess=d,h.onerror=p=>(d(),a.close(),r(u.error))}},u.onerror=h=>(a.close(),r(u.error)),o.oncomplete=()=>{null==c?a.close():c.oncomplete=()=>a.close()}},i.onerror=a=>r(i.error)})})()}}const sr="/",Ni="tensorflowjs_models",Nx="info",PS="model_topology",FS="weight_specs",LS="weight_data",MS="model_metadata";function Ax(n){return{info:[Ni,n,Nx].join(sr),topology:[Ni,n,PS].join(sr),weightSpecs:[Ni,n,FS].join(sr),weightData:[Ni,n,LS].join(sr),modelMetadata:[Ni,n,MS].join(sr)}}function Rx(n){for(const t of Object.values(n))window.localStorage.removeItem(t)}function $x(n){const t=n.split(sr);if(t.length<3)throw new Error(`Invalid key format: ${n}`);return t.slice(1,t.length-1).join(sr)}let da=(()=>{class n{constructor(e){if(!E().getBool("IS_BROWSER")||typeof window>"u"||typeof window.localStorage>"u")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,null==e||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=Ax(this.modelPath)}save(e){var s=this;return(0,N.A)(function*(){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{const r=JSON.stringify(e.modelTopology),i=JSON.stringify(e.weightSpecs),a=nc(e),o=er.join(e.weightData);try{return s.LS.setItem(s.keys.info,JSON.stringify(a)),s.LS.setItem(s.keys.topology,r),s.LS.setItem(s.keys.weightSpecs,i),s.LS.setItem(s.keys.weightData,function TS(n){if(hp)return Buffer.from(n).toString("base64");const t=new Uint8Array(n);let e="";for(let s=0,r=t.length;sE().getBool("IS_BROWSER")&&!Array.isArray(n)&&n.startsWith(da.URL_SCHEME)?function zS(n){return new da(n)}(n.slice(da.URL_SCHEME.length)):null;sn.registerSaveRouter(Dx),sn.registerLoadRouter(Dx);class BS{constructor(){T(E().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),T(typeof window>"u"||typeof window.localStorage<"u",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}listModels(){var t=this;return(0,N.A)(function*(){const e={},s=Ni+sr,r=sr+Nx;for(let i=0;i"scheme must not be undefined or null."),t.endsWith("://")&&(t=t.slice(0,t.indexOf("://"))),T(t.length>0,()=>"scheme must not be an empty string.");const s=Kn.getInstance();T(null==s.managers[t],()=>`A model store manager is already registered for scheme '${t}'.`),s.managers[t]=e}static getManager(t){const e=Kn.getInstance().managers[t];if(null==e)throw new Error(`Cannot find model manager for scheme '${t}'`);return e}static getSchemes(){return Object.keys(Kn.getInstance().managers)}}class US{constructor(){this.messageName="setTimeoutCustom",this.functionRefs=[],this.handledMessageCount=0,this.hasEventListener=!1}fetch(t,e){return fetch(t,e)}now(){return performance.now()}encode(t,e){if("utf-8"!==e&&"utf8"!==e)throw new Error(`Browser's encoder only supports utf-8, but got ${e}`);return null==this.textEncoder&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(t)}decode(t,e){return new TextDecoder(e).decode(t)}setTimeoutCustom(t,e){typeof window>"u"||!E().getBool("USE_SETTIMEOUTCUSTOM")?setTimeout(t,e):(this.functionRefs.push(t),setTimeout(()=>{window.postMessage({name:this.messageName,index:this.functionRefs.length-1},"*")},e),this.hasEventListener||(this.hasEventListener=!0,window.addEventListener("message",s=>{s.source===window&&s.data.name===this.messageName&&(s.stopPropagation(),(0,this.functionRefs[s.data.index])(),this.handledMessageCount++,this.handledMessageCount===this.functionRefs.length&&(this.functionRefs=[],this.handledMessageCount=0))},!0)))}isTypedArray(t){return Zg(t)}}if(E().get("IS_BROWSER")){E().setPlatform("browser",new US);try{Kn.registerManager(da.URL_SCHEME,new BS)}catch{}try{Kn.registerManager(ha.URL_SCHEME,new OS)}catch{}}let fa;function vt(n,t="float32",e){return t=t||"float32",Js(n),new On(n,t,e)}E().get("IS_NODE")&&!E().get("IS_BROWSER")&&E().setPlatform("node",new class GS{constructor(){this.util=W(8590),this.textEncoder=new this.util.TextEncoder}fetch(t,e){return null!=E().global.fetch?E().global.fetch(t,e):(null==fa&&(fa=W(5817)),fa(t,e))}now(){const t=process.hrtime();return 1e3*t[0]+t[1]/1e6}encode(t,e){if("utf-8"!==e&&"utf8"!==e)throw new Error(`Node built-in encoder only supports utf-8, but got ${e}`);return this.textEncoder.encode(t)}decode(t,e){return 0===t.length?"":new this.util.TextDecoder(e).decode(t)}isTypedArray(t){return this.util.types.isFloat32Array(t)||this.util.types.isInt32Array(t)||this.util.types.isUint8Array(t)||this.util.types.isUint8ClampedArray(t)}});const ke=U({cast_:function HS(n,t){const e=$(n,"x","cast");if(!function Hl(n){return"bool"===n||"complex64"===n||"float32"===n||"int32"===n||"string"===n}(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if("string"===t&&"string"!==e.dtype||"string"!==t&&"string"===e.dtype)throw new Error("Only strings can be casted to strings");return V.runKernel(so,{x:e},{dtype:t})}}),Ai=U({clone_:function jS(n){const e={x:$(n,"x","clone","string_or_numeric")};return V.runKernel(yo,e)}});dx(),function iS(n){ca=n}({buffer:vt,cast:ke,clone:Ai,print:function XS(n,t=!1){console.log(n.toString(t))}});const me=U({add_:function KS(n,t){let e=$(n,"a","add"),s=$(t,"b","add");return[e,s]=un(e,s),V.runKernel(oa,{a:e,b:s})}}),Px=U({floorDiv_:function qS(n,t){let e=$(n,"a","floorDiv"),s=$(t,"b","floorDiv");return[e,s]=un(e,s),V.runKernel(go,{a:e,b:s})}}),je=U({div_:function ZS(n,t){let e=$(n,"a","div"),s=$(t,"b","div");return[e,s]=un(e,s),"int32"===e.dtype&&"int32"===s.dtype?Px(e,s):V.runKernel(uo,{a:e,b:s},{})}}),L=U({mul_:function YS(n,t){let e=$(n,"a","mul"),s=$(t,"b","mul");return[e,s]=un(e,s),V.runKernel(Eo,{a:e,b:s})}}),zn=U({sqrt_:function QS(n){const e={x:$(n,"x","sqrt","float32")};return V.runKernel(zo,e)}}),Kt=U({square_:function JS(n){const t=$(n,"x","square");return V.runKernel("Square",{x:t},{})}}),Et=U({zerosLike_:function eC(n){const e={x:$(n,"x","zerosLike")};return V.runKernel(Xu,e)}});function _r(n){return V.customGrad(n)}function ut(n,t){if((ms(n)&&"string"!==t||Array.isArray(n))&&"complex64"!==t)throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if("string"===t&&ms(n)&&!(n instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return Qo(n,[],[],t)}const nC=new Map,_p=new Map;class ma{getClassName(){return this.constructor.className}static fromConfig(t,e){return new t(e)}}class Es{constructor(){this.classNameMap={}}static getMap(){return null==Es.instance&&(Es.instance=new Es),Es.instance}static register(t){Es.getMap().classNameMap[t.className]=[t,t.fromConfig]}}function pe(n,t,e){T(null!=n.className,()=>"Class being registered does not have the static className property defined."),T("string"==typeof n.className,()=>"className is required to be a string, but got type "+typeof n.className),T(n.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),typeof t>"u"&&(t="Custom"),typeof e>"u"&&(e=n.className);const r=t+">"+e;return Es.register(n),nC.set(r,n),_p.set(n,r),n}class Xr extends ma{minimize(t,e=!1,s){const{value:r,grads:i}=this.computeGradients(t,s);if(null!=s){const a=s.map(o=>({name:o.name,tensor:i[o.name]}));this.applyGradients(a)}else this.applyGradients(i);return xt(i),e?r:(r.dispose(),null)}get iterations(){return null==this.iterations_&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(t,e){return function tC(n,t){T(Cs(n),()=>"The f passed in variableGrads(f) must be a function"),T(null==t||Array.isArray(t)&&t.every(u=>u instanceof tc),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");const e=null!=t;if(!e){t=[];for(const u in V.registeredVariables)t.push(V.registeredVariables[u])}const s=e?t.filter(u=>!u.trainable):null,r=t.length;T((t=t.filter(u=>u.trainable)).length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${r} variables is trainable.`);const{value:a,grads:o}=V.gradients(n,t,null,!0);T(o.some(u=>null!=u),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),T(0===a.rank,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${a.rank} tensor`);const l={};return t.forEach((u,c)=>{null!=o[c]&&(l[u.name]=o[c])}),s?.forEach(u=>l[u.name]=null),{value:a,grads:l}}(t,e)}dispose(){null!=this.iterations_&&xt(this.iterations_)}saveIterations(){var t=this;return(0,N.A)(function*(){return null==t.iterations_&&(t.iterations_=0),{name:"iter",tensor:ut(t.iterations_,"int32")}})()}getWeights(){return(0,N.A)(function*(){throw new Error("getWeights() is not implemented for this optimizer yet.")})()}setWeights(t){var e=this;return(0,N.A)(function*(){throw new Error(`setWeights() is not implemented for this optimizer class ${e.getClassName()}`)})()}extractIterations(t){var e=this;return(0,N.A)(function*(){return e.iterations_=(yield t[0].tensor.data())[0],t.slice(1)})()}}Object.defineProperty(Xr,Symbol.hasInstance,{value:n=>null!=n.minimize&&null!=n.computeGradients&&null!=n.applyGradients});class Fx extends Xr{static get className(){return"Adadelta"}constructor(t,e,s=null){super(),this.learningRate=t,this.rho=e,this.epsilon=s,this.accumulatedGrads=[],this.accumulatedUpdates=[],null==s&&(this.epsilon=V.backend.epsilon())}applyGradients(t){(Array.isArray(t)?t.map(s=>s.name):Object.keys(t)).forEach((s,r)=>{const i=V.registeredVariables[s],a=!1;null==this.accumulatedGrads[r]&&(this.accumulatedGrads[r]={originalName:`${s}/accum_grad`,variable:Z(()=>Et(i).variable(a))}),null==this.accumulatedUpdates[r]&&(this.accumulatedUpdates[r]={originalName:`${s}/accum_var`,variable:Z(()=>Et(i).variable(a))});const o=Array.isArray(t)?t[r].tensor:t[s];if(null==o)return;const l=this.accumulatedGrads[r].variable,u=this.accumulatedUpdates[r].variable;Z(()=>{const c=me(L(l,this.rho),L(Kt(o),1-this.rho)),h=L(je(zn(me(u,this.epsilon)),zn(me(l,this.epsilon))),o),d=me(L(u,this.rho),L(Kt(h),1-this.rho));l.assign(c),u.assign(d);const p=me(L(h,-this.learningRate),i);i.assign(p)})}),this.incrementIterations()}dispose(){null!=this.accumulatedUpdates&&(xt(this.accumulatedGrads.map(t=>t.variable)),xt(this.accumulatedUpdates.map(t=>t.variable)))}getWeights(){var t=this;return(0,N.A)(function*(){const e=[...t.accumulatedGrads,...t.accumulatedUpdates];return[yield t.saveIterations()].concat(e.map(s=>({name:s.originalName,tensor:s.variable})))})()}setWeights(t){var e=this;return(0,N.A)(function*(){const s=(t=yield e.extractIterations(t)).length/2,r=!1;e.accumulatedGrads=t.slice(0,s).map(i=>({originalName:i.name,variable:i.tensor.variable(r)})),e.accumulatedUpdates=t.slice(s,2*s).map(i=>({originalName:i.name,variable:i.tensor.variable(r)}))})()}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(t,e){return new t(e.learningRate,e.rho,e.epsilon)}}function Jo(n,t,e){return Js(n),e=e||vr(t),V.runKernel(Td,{},{shape:n,value:t,dtype:e})}class Lx extends Xr{static get className(){return"Adagrad"}constructor(t,e=.1){super(),this.learningRate=t,this.initialAccumulatorValue=e,this.accumulatedGrads=[]}applyGradients(t){(Array.isArray(t)?t.map(s=>s.name):Object.keys(t)).forEach((s,r)=>{const i=V.registeredVariables[s];null==this.accumulatedGrads[r]&&(this.accumulatedGrads[r]={originalName:`${s}/accumulator`,variable:Z(()=>Jo(i.shape,this.initialAccumulatorValue).variable(!1))});const a=Array.isArray(t)?t[r].tensor:t[s];if(null==a)return;const o=this.accumulatedGrads[r].variable;Z(()=>{const l=me(o,Kt(a));o.assign(l);const u=me(L(je(a,zn(me(l,V.backend.epsilon()))),-this.learningRate),i);i.assign(u)})}),this.incrementIterations()}dispose(){null!=this.accumulatedGrads&&xt(this.accumulatedGrads.map(t=>t.variable))}getWeights(){var t=this;return(0,N.A)(function*(){return[yield t.saveIterations()].concat(t.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))})()}setWeights(t){var e=this;return(0,N.A)(function*(){t=yield e.extractIterations(t),e.accumulatedGrads=t.map(r=>({originalName:r.name,variable:r.tensor.variable(!1)}))})()}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(t,e){return new t(e.learningRate,e.initialAccumulatorValue)}}const Ri=U({pow_:function sC(n,t){let e=$(n,"base","pow"),s=$(t,"exp","pow");return[e,s]=un(e,s),V.runKernel(ko,{a:e,b:s})}}),ze=U({sub_:function rC(n,t){let e=$(n,"a","sub"),s=$(t,"b","sub");return[e,s]=un(e,s),V.runKernel(Uo,{a:e,b:s})}});class Mx extends Xr{static get className(){return"Adam"}constructor(t,e,s,r=null){super(),this.learningRate=t,this.beta1=e,this.beta2=s,this.epsilon=r,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],Z(()=>{this.accBeta1=ut(e).variable(),this.accBeta2=ut(s).variable()}),null==r&&(this.epsilon=V.backend.epsilon())}applyGradients(t){const e=Array.isArray(t)?t.map(s=>s.name):Object.keys(t);Z(()=>{const s=ze(1,this.accBeta1),r=ze(1,this.accBeta2);e.forEach((i,a)=>{const o=V.registeredVariables[i],l=!1;null==this.accumulatedFirstMoment[a]&&(this.accumulatedFirstMoment[a]={originalName:`${i}/m`,variable:Z(()=>Et(o).variable(l))}),null==this.accumulatedSecondMoment[a]&&(this.accumulatedSecondMoment[a]={originalName:`${i}/v`,variable:Z(()=>Et(o).variable(l))});const u=Array.isArray(t)?t[a].tensor:t[i];if(null==u)return;const c=this.accumulatedFirstMoment[a].variable,h=this.accumulatedSecondMoment[a].variable,d=me(L(c,this.beta1),L(u,1-this.beta1)),p=me(L(h,this.beta2),L(Kt(u),1-this.beta2)),f=je(d,s),g=je(p,r);c.assign(d),h.assign(p);const m=me(L(je(f,me(zn(g),this.epsilon)),-this.learningRate),o);o.assign(m)}),this.accBeta1.assign(L(this.accBeta1,this.beta1)),this.accBeta2.assign(L(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),null!=this.accumulatedFirstMoment&&xt(this.accumulatedFirstMoment.map(t=>t.variable)),null!=this.accumulatedSecondMoment&&xt(this.accumulatedSecondMoment.map(t=>t.variable))}getWeights(){var t=this;return(0,N.A)(function*(){const e=[...t.accumulatedFirstMoment,...t.accumulatedSecondMoment];return[yield t.saveIterations()].concat(e.map(s=>({name:s.originalName,tensor:s.variable})))})()}setWeights(t){var e=this;return(0,N.A)(function*(){t=yield e.extractIterations(t),Z(()=>{e.accBeta1.assign(Ri(e.beta1,e.iterations_+1)),e.accBeta2.assign(Ri(e.beta2,e.iterations_+1))});const s=t.length/2,r=!1;e.accumulatedFirstMoment=t.slice(0,s).map(i=>({originalName:i.name,variable:i.tensor.variable(r)})),e.accumulatedSecondMoment=t.slice(s,2*s).map(i=>({originalName:i.name,variable:i.tensor.variable(r)}))})()}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(t,e){return new t(e.learningRate,e.beta1,e.beta2,e.epsilon)}}const kn=U({abs_:function iC(n){const t=$(n,"x","abs");return V.runKernel("complex64"===t.dtype?eu:In,{x:t})}});function ga(n,t){const e=n.length,s=[];for(let r=0;r1&&1===(n[i]||1)&&s.unshift(i)}return s}function bn(n,t){const e=[];for(let s=0;s1)&&e.unshift(i)}return e}function ht(n,t){const e=Math.max(n.length,t.length),s=new Array(e);for(let r=0;r{this.iteration=ut(0).variable(),this.accBeta1=ut(e).variable()}),null==r&&(this.epsilon=V.backend.epsilon())}applyGradients(t){const e=Array.isArray(t)?t.map(s=>s.name):Object.keys(t);Z(()=>{const s=ze(1,this.accBeta1),r=je(-this.learningRate,me(L(this.iteration,this.decay),1));e.forEach((i,a)=>{const o=V.registeredVariables[i],l=!1;null==this.accumulatedFirstMoment[a]&&(this.accumulatedFirstMoment[a]={originalName:`${i}/m`,variable:Et(o).variable(l)}),null==this.accumulatedWeightedInfNorm[a]&&(this.accumulatedWeightedInfNorm[a]={originalName:`${i}/v`,variable:Et(o).variable(l)});const u=Array.isArray(t)?t[a].tensor:t[i];if(null==u)return;const c=this.accumulatedFirstMoment[a].variable,h=this.accumulatedWeightedInfNorm[a].variable,d=me(L(c,this.beta1),L(u,1-this.beta1)),p=L(h,this.beta2),f=kn(u),g=Kr(p,f);c.assign(d),h.assign(g);const m=me(L(je(r,s),je(d,me(g,this.epsilon))),o);o.assign(m)}),this.iteration.assign(me(this.iteration,1)),this.accBeta1.assign(L(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),null!=this.accumulatedFirstMoment&&xt(this.accumulatedFirstMoment.map(t=>t.variable)),null!=this.accumulatedWeightedInfNorm&&xt(this.accumulatedWeightedInfNorm.map(t=>t.variable))}getWeights(){return(0,N.A)(function*(){throw new Error("getWeights() is not implemented for Adamax yet.")})()}setWeights(t){return(0,N.A)(function*(){throw new Error("setWeights() is not implemented for Adamax yet.")})()}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(t,e){return new t(e.learningRate,e.beta1,e.beta2,e.epsilon,e.decay)}}class Tp extends Xr{static get className(){return"SGD"}constructor(t){super(),this.learningRate=t,this.setLearningRate(t)}applyGradients(t){(Array.isArray(t)?t.map(s=>s.name):Object.keys(t)).forEach((s,r)=>{const i=Array.isArray(t)?t[r].tensor:t[s];if(null==i)return;const a=V.registeredVariables[s];Z(()=>{const o=me(L(this.c,i),a);a.assign(o)})}),this.incrementIterations()}setLearningRate(t){this.learningRate=t,null!=this.c&&this.c.dispose(),this.c=nr(ut(-t))}dispose(){this.c.dispose()}getWeights(){var t=this;return(0,N.A)(function*(){return[yield t.saveIterations()]})()}setWeights(t){var e=this;return(0,N.A)(function*(){if(0!==(t=yield e.extractIterations(t)).length)throw new Error("SGD optimizer does not have settable weights.")})()}getConfig(){return{learningRate:this.learningRate}}static fromConfig(t,e){return new t(e.learningRate)}}class zx extends Tp{static get className(){return"Momentum"}constructor(t,e,s=!1){super(t),this.learningRate=t,this.momentum=e,this.useNesterov=s,this.accumulations=[],this.m=ut(this.momentum)}applyGradients(t){(Array.isArray(t)?t.map(s=>s.name):Object.keys(t)).forEach((s,r)=>{const i=V.registeredVariables[s];null==this.accumulations[r]&&(this.accumulations[r]={originalName:`${s}/momentum`,variable:Z(()=>Et(i).variable(!1))});const a=this.accumulations[r].variable,o=Array.isArray(t)?t[r].tensor:t[s];null!=o&&Z(()=>{let l;const u=me(L(this.m,a),o);l=me(L(this.c,this.useNesterov?me(o,L(u,this.m)):u),i),a.assign(u),i.assign(l)})}),this.incrementIterations()}dispose(){this.m.dispose(),null!=this.accumulations&&xt(this.accumulations.map(t=>t.variable))}setMomentum(t){this.momentum=t}getWeights(){var t=this;return(0,N.A)(function*(){return[yield t.saveIterations()].concat(t.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))})()}setWeights(t){var e=this;return(0,N.A)(function*(){t=yield e.extractIterations(t),e.accumulations=t.map(r=>({originalName:r.name,variable:r.tensor.variable(!1)}))})()}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(t,e){return new t(e.learningRate,e.momentum,e.useNesterov)}}class Bx extends Xr{static get className(){return"RMSProp"}constructor(t,e=.9,s=0,r=null,i=!1){if(super(),this.learningRate=t,this.decay=e,this.momentum=s,this.epsilon=r,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=i,null==r&&(this.epsilon=V.backend.epsilon()),null==t)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(t){(Array.isArray(t)?t.map(s=>s.name):Object.keys(t)).forEach((s,r)=>{const i=V.registeredVariables[s],a=!1;null==this.accumulatedMeanSquares[r]&&(this.accumulatedMeanSquares[r]={originalName:`${s}/rms`,variable:Z(()=>Et(i).variable(a))}),null==this.accumulatedMoments[r]&&(this.accumulatedMoments[r]={originalName:`${s}/momentum`,variable:Z(()=>Et(i).variable(a))}),null==this.accumulatedMeanGrads[r]&&this.centered&&(this.accumulatedMeanGrads[r]={originalName:`${s}/mg`,variable:Z(()=>Et(i).variable(a))});const o=Array.isArray(t)?t[r].tensor:t[s];if(null==o)return;const l=this.accumulatedMeanSquares[r].variable,u=this.accumulatedMoments[r].variable;Z(()=>{const c=me(L(l,this.decay),L(Kt(o),1-this.decay));if(this.centered){const h=this.accumulatedMeanGrads[r].variable,d=me(L(h,this.decay),L(o,1-this.decay)),p=je(L(o,this.learningRate),zn(ze(c,me(Kt(d),this.epsilon)))),f=me(L(u,this.momentum),p);l.assign(c),h.assign(d),u.assign(f);const g=ze(i,f);i.assign(g)}else{const h=me(L(l,this.decay),L(Kt(o),1-this.decay)),d=me(L(u,this.momentum),je(L(o,this.learningRate),zn(me(h,this.epsilon))));l.assign(h),u.assign(d);const p=ze(i,d);i.assign(p)}})}),this.incrementIterations()}dispose(){null!=this.accumulatedMeanSquares&&xt(this.accumulatedMeanSquares.map(t=>t.variable)),null!=this.accumulatedMeanGrads&&this.centered&&xt(this.accumulatedMeanGrads.map(t=>t.variable)),null!=this.accumulatedMoments&&xt(this.accumulatedMoments.map(t=>t.variable))}getWeights(){var t=this;return(0,N.A)(function*(){const e=[...t.accumulatedMeanSquares,...t.accumulatedMoments];return t.centered&&e.push(...t.accumulatedMeanGrads),[yield t.saveIterations()].concat(e.map(s=>({name:s.originalName,tensor:s.variable})))})()}setWeights(t){var e=this;return(0,N.A)(function*(){t=yield e.extractIterations(t);const s=e.centered?t.length/3:t.length/2,r=!1;e.accumulatedMeanSquares=t.slice(0,s).map(i=>({originalName:i.name,variable:i.tensor.variable(r)})),e.accumulatedMoments=t.slice(s,2*s).map(i=>({originalName:i.name,variable:i.tensor.variable(r)})),e.centered&&(e.accumulatedMeanGrads=t.slice(2*s,3*s).map(i=>({originalName:i.name,variable:i.tensor.variable(r)})))})()}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(t,e){return new t(e.learningRate,e.decay,e.momentum,e.epsilon,e.centered)}}const oC=[Fx,Lx,Mx,Vx,zx,Bx,Tp];function Ux(n){return new Promise(t=>setTimeout(t)).then(n)}let Sp=(()=>{class n{constructor(e){if(!E().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(n.URL_SCHEME)&&(e=e.slice(n.URL_SCHEME.length)),(null==e||0===e.length)&&(e="model"),this.modelJsonFileName=e+".json",this.weightDataFileName=e+".weights.bin"}save(e){var s=this;return(0,N.A)(function*(){if(typeof document>"u")throw new Error("Browser downloads are not supported in this environment since `document` is not present");const r=er.join(e.weightData),i=window.URL.createObjectURL(new Blob([r],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{const o=Cx(e,[{paths:["./"+s.weightDataFileName],weights:e.weightSpecs}]),l=window.URL.createObjectURL(new Blob([JSON.stringify(o)],{type:"application/json"})),u=null==s.modelJsonAnchor?document.createElement("a"):s.modelJsonAnchor;if(u.download=s.modelJsonFileName,u.href=l,yield Ux(()=>u.dispatchEvent(new MouseEvent("click"))),null!=e.weightData){const c=null==s.weightDataAnchor?document.createElement("a"):s.weightDataAnchor;c.download=s.weightDataFileName,c.href=i,yield Ux(()=>c.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:nc(e)}}})()}}return n.URL_SCHEME="downloads://",n})();function Wx(n,t,e,s){(function a(l){T(null!=l&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")})(n),function o(l,u){T(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),T(u>=0&&u<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${u}`),T(u>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${u}`)}(e=e??0,s=s??1);let r=0;return Promise.all(n.map(l=>(l.then(u=>{const c=e+ ++r/n.length*(s-e);return t(c),u}),l)))}function Gx(n,t){return Cp.apply(this,arguments)}function Cp(){return(Cp=(0,N.A)(function*(n,t){null==t&&(t={});const e=null==t.fetchFunc?E().platform.fetch:t.fetchFunc,s=n.map(h=>e(h,t.requestInit,{isBinary:!0})),o=(null==t.onProgress?yield Promise.all(s):yield Wx(s,t.onProgress,0,.5)).map(h=>h.arrayBuffer());return null==t.onProgress?yield Promise.all(o):yield Wx(o,t.onProgress,.5,1)})).apply(this,arguments)}sn.registerSaveRouter(n=>E().getBool("IS_BROWSER")&&!Array.isArray(n)&&n.startsWith(Sp.URL_SCHEME)?function fC(n="model"){return new Sp(n)}(n.slice(Sp.URL_SCHEME.length)):null);let Hx=(()=>{class n{constructor(e,s){if(this.DEFAULT_METHOD="POST",null==s&&(s={}),this.weightPathPrefix=s.weightPathPrefix,this.weightUrlConverter=s.weightUrlConverter,null!=s.fetchFunc?(T("function"==typeof s.fetchFunc,()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=s.fetchFunc):this.fetch=E().platform.fetch,T(null!=e&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&T(2===e.length,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,null!=s.requestInit&&null!=s.requestInit.body)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=s.requestInit||{},this.loadOptions=s}save(e){var s=this;return(0,N.A)(function*(){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");const r=Object.assign({method:s.DEFAULT_METHOD},s.requestInit);r.body=new FormData;const a=Cx(e,[{paths:["./model.weights.bin"],weights:e.weightSpecs}]);if(r.body.append("model.json",new Blob([JSON.stringify(a)],{type:"application/json"}),"model.json"),null!=e.weightData){const l=er.join(e.weightData);r.body.append("model.weights.bin",new Blob([l],{type:"application/octet-stream"}),"model.weights.bin")}const o=yield s.fetch(s.path,r);if(o.ok)return{modelArtifactsInfo:nc(e),responses:[o]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${o.status}.`)})()}loadModelJSON(){var e=this;return(0,N.A)(function*(){const s=yield e.fetch(e.path,e.requestInit);if(!s.ok)throw new Error(`Request to ${e.path} failed with status code ${s.status}. Please verify this URL points to the model JSON of the model to load.`);let r;try{r=yield s.json()}catch{let l=`Failed to parse model JSON of response from ${e.path}.`;throw e.path.endsWith(".pb")?l+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":l+=" Please make sure the server is serving valid JSON for this request.",new Error(l)}if(null==r.modelTopology&&null==r.weightsManifest)throw new Error(`The JSON from HTTP path ${e.path} contains neither model topology or manifest for weights.`);return r})()}load(){var e=this;return(0,N.A)(function*(){return e.loadOptions.streamWeights?e.loadStream():function Ix(n,t){return dp.apply(this,arguments)}(yield e.loadModelJSON(),r=>e.loadWeights(r))})()}loadStream(){var e=this;return(0,N.A)(function*(){const s=yield e.loadModelJSON(),r=yield e.getWeightUrls(s.weightsManifest),i=Ex(s.weightsManifest);return Object.assign(Object.assign({},s),{weightSpecs:i,getWeightStream:()=>function mC(n,t){var e;const s=null==t.fetchFunc?E().platform.fetch:t.fetchFunc;let i,r=0;return null===(e=t.onProgress)||void 0===e||e.call(t,0),new ReadableStream({pull:(a=(0,N.A)(function*(o){for(var l;rt?n.substring(e):""]}(r),o=s.weightPathPrefix||i,l=[],u=[];for(const c of e)for(const h of c.paths)null!=s.weightUrlConverter?u.push(s.weightUrlConverter(h)):l.push(o+h+a);return s.weightUrlConverter&&l.push(...yield Promise.all(u)),l})()}loadWeights(e){var s=this;return(0,N.A)(function*(){const r=yield s.getWeightUrls(e);return[Ex(e),yield Gx(r,s.loadOptions)]})()}}return n.URL_SCHEME_REGEX=/^https?:\/\//,n})();function jx(n){return null!=n.match(Hx.URL_SCHEME_REGEX)}const Xx=(n,t)=>{if(typeof fetch>"u"&&(null==t||null==t.fetchFunc))return null;{let e=!0;if(e=Array.isArray(n)?n.every(s=>jx(s)):jx(n),e)return function Kx(n,t){return new Hx(n,t)}(n,t)}return null};sn.registerSaveRouter(Xx),sn.registerLoadRouter(Xx);const Ap=-2,NC=-1;function Rp(n,t,e){const s=n.shape.length;T(s===t.length,()=>`Error in slice${s}D: Length of begin ${t} must match the rank of the array (${s}).`),T(s===e.length,()=>`Error in slice${s}D: Length of size ${e} must match the rank of the array (${s}).`);for(let r=0;r`Error in slice${s}D: begin[${r}] + size[${r}] (${t[r]+e[r]}) would overflow input.shape[${r}] (${n.shape[r]})`)}function AC(n){const t=[];let e=0;for(;n>0;)1&n&&t.push(e),n/=2,e++;return t}function $p(n,t,e){const s=[];for(let r=0;r0){const p=t[0],f=e+1;c=ny(a,p,f,s,n),h=sy(o,p,f,r,n),d=Jx(i,p,f,n)}else for(let p=0;p-1)i[o]=0;else{const l=ey(t,e,o);let u=s[l];n&1<-1)i[o]=Number.MAX_SAFE_INTEGER;else{const l=ey(t,e,o);let u=s[l];n&1<0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);const l=s[r];return a<0&&(a+=l),a=G(0,a,l-1),a}function ay(n,t,e,s,r,i){let a=t[r];const o=e[r]||1;(n&1<0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);const l=s[r];return a<0&&(a+=l),a=o>0?G(0,a,l):G(-1,a,l-1),a}function Dp(n,t,e){let s=e.length;for(let r=0;r1){s=r;break}for(let r=s+1;r0||e[r]!==n[r])return!1;return!0}function Op(n,t){let e=n.length>0?n[n.length-1]:1;for(let s=0;s{T(-1!==a,()=>"slice() does not support negative begin indexing.")}),i=null==e?new Array(r).fill(-1):"number"==typeof e?[e,...new Array(r-1).fill(-1)]:e.lengtha>=0?a:(T(-1===a,()=>`Negative size values should be exactly -1 but got ${a} for the slice() size at index ${o}.`),n.shape[o]-s[o])),[s,i]}function Pp(n,t,e,s,r,i,a,o,l){let u;if(null==s?(u=new Array(t.length),u.fill(1)):u=s,null!=a&&a&a-1)throw new Error("Multiple ellipses in slice is not allowed.");let c=!1;const h={dims:u.length,numAddAxisAfterEllipsis:0,begin:t.slice(),end:e.slice(),strides:u.slice(),beginMask:r,endMask:i,ellipsisMask:a,newAxisMask:o,shrinkAxisMask:l};for(let b=0;b0?0:-1,d.strides[b]>0?w:w-1];if(v&&d.strides[b]<=0)throw Error("only stride 1 allowed on non-range indexing.");g=g&&1===d.strides[b];const k=!!(d.beginMask&1<=w)throw Error(`slice index ${d.begin[b]} of dimension ${b} out of bounds.`)}else d.begin[b]=oy(d.begin[b],0,d.strides[b],w,S,I),d.end[b]=oy(d.end[b],1,d.strides[b],w,S,I);const B=1===d.strides[b]&&0===d.begin[b]&&d.end[b]===w;p=p&&B,f=f&&(0===b&&1===d.strides[b]||B)}else p=p&&1===d.strides[b]&&k,f=f&&(0===b&&1===d.strides[b]||k);let D,P=!1;if(d.beginValid&&d.endValid?(D=d.end[b]-d.begin[b],P=!0):v?(D=1,P=!0):k&&w>=0&&(D=d.strides[b]<0?-w:w,P=!0),P){let B;B=0===D||D<0!=d.strides[b]<0?0:Math.trunc(D/d.strides[b])+(D%d.strides[b]!=0?1:0),m.push(B)}else m.push(-1)}for(let b=0;b=0?x.push(m[v]):v===Ap&&x.push(1)}return{finalShapeSparse:x.filter((b,v)=>d.finalShapeGatherIndices[v]!==Ap),finalShape:x,isIdentity:p,sliceDim0:f,isSimpleSlice:g,begin:d.begin,end:d.end,strides:d.strides}}function oy(n,t,e,s,r,i){if(r[t])return e>0?i[t]:i[t+1&1];{const a=n<0?s+n:n;return ai[1]?i[1]:a}}const ly=U({all_:function OC(n,t=null,e=!1){const r={x:$(n,"x","all","bool")};return V.runKernel("All",r,{axis:t,keepDims:e})}}),Fp=U({any_:function PC(n,t=null,e=!1){const r={x:$(n,"x","any","bool")};return V.runKernel("Any",r,{axis:t,keepDims:e})}}),el=U({argMax_:function FC(n,t=0){const s={x:$(n,"x","argMax")};return V.runKernel(Kl,s,{axis:t})}});function tl(n,t,e,s,r="NHWC",i){return Nn(n,[...t,n[3]],e,i,s,null,null,Sr(r))}function ks(n,t,e,s,r,i,a="channelsLast"){const[o,l]=nl(t);let u;if("channelsLast"===a)u=[o,l,n[3],n[3]];else{if("channelsFirst"!==a)throw new Error(`Unknown dataFormat ${a}`);u=[o,l,n[1],n[1]]}return Nn(n,u,e,s,r,i,!1,a)}function Tr(n,t,e,s,r,i,a="NDHWC"){const[o,l,u]=Mp(t);let c,h;if("NDHWC"===a)h="channelsLast",c=[o,l,u,n[4],n[4]];else{if("NCDHW"!==a)throw new Error(`Unknown dataFormat ${a}`);h="channelsFirst",c=[o,l,u,n[1],n[1]]}return qr(n,c,e,s,r,!1,h,i)}function Nn(n,t,e,s,r,i,a=!1,o="channelsLast"){let[l,u,c,h]=[-1,-1,-1,-1];if("channelsLast"===o)[l,u,c,h]=n;else{if("channelsFirst"!==o)throw new Error(`Unknown dataFormat ${o}`);[l,h,u,c]=n}const[d,p,,f]=t,[g,m]=nl(e),[x,y]=nl(s),b=xa(d,x),v=xa(p,y),{padInfo:w,outHeight:S,outWidth:I}=function VC(n,t,e,s,r,i,a,o,l){let u,c,h;if("number"==typeof n){u={top:n,bottom:n,left:n,right:n,type:0===n?"VALID":"NUMBER"};const p=function LC(n,t,e,s,r){null==s&&(s=Lp(n,t,e));const a=n[1];return[sl((n[0]-t+2*s)/e+1,r),sl((a-t+2*s)/e+1,r)]}([t,e],i,s,n,o);c=p[0],h=p[1]}else if("same"===n){c=Math.ceil(t/s),h=Math.ceil(e/r);const d=Math.max(0,(c-1)*s+i-t),p=Math.max(0,(h-1)*r+a-e),f=Math.floor(d/2),g=d-f,m=Math.floor(p/2);u={top:f,bottom:g,left:m,right:p-m,type:"SAME"}}else if("valid"===n)u={top:0,bottom:0,left:0,right:0,type:"VALID"},c=Math.ceil((t-i+1)/s),h=Math.ceil((e-a+1)/r);else{if("object"!=typeof n)throw Error(`Unknown padding parameter: ${n}`);{const d="channelsLast"===l?n[1][0]:n[2][0],p="channelsLast"===l?n[1][1]:n[2][1],f="channelsLast"===l?n[2][0]:n[3][0],g="channelsLast"===l?n[2][1]:n[3][1];u={top:d,bottom:p,left:f,right:g,type:0===d&&0===p&&0===f&&0===g?"VALID":"EXPLICIT"},c=sl((t-i+d+p)/s+1,o),h=sl((e-a+f+g)/r+1,o)}}return{padInfo:u,outHeight:c,outWidth:h}}(r,u,c,g,m,b,v,i,o),k=a?f*h:f;let D;return"channelsFirst"===o?D=[l,k,S,I]:"channelsLast"===o&&(D=[l,S,I,k]),{batchSize:l,dataFormat:o,inHeight:u,inWidth:c,inChannels:h,outHeight:S,outWidth:I,outChannels:k,padInfo:w,strideHeight:g,strideWidth:m,filterHeight:d,filterWidth:p,effectiveFilterHeight:b,effectiveFilterWidth:v,dilationHeight:x,dilationWidth:y,inShape:n,outShape:D,filterShape:t}}function qr(n,t,e,s,r,i=!1,a="channelsLast",o){let[l,u,c,h,d]=[-1,-1,-1,-1,-1];if("channelsLast"===a)[l,u,c,h,d]=n;else{if("channelsFirst"!==a)throw new Error(`Unknown dataFormat ${a}`);[l,d,u,c,h]=n}const[p,f,g,,m]=t,[x,y,b]=Mp(e),[v,w,S]=Mp(s),I=xa(p,v),k=xa(f,w),D=xa(g,S),{padInfo:P,outDepth:B,outHeight:Y,outWidth:Q}=function zC(n,t,e,s,r,i,a,o,l,u,c){let h,d,p,f;if("valid"===n&&(n=0),"number"==typeof n){h={top:n,bottom:n,left:n,right:n,front:n,back:n,type:0===n?"VALID":"NUMBER"};const m=function MC(n,t,e,s,r,i){null==r&&(r=Lp(n,t[0],s[0]));const a=[0,0,0,e];for(let o=0;o<3;o++)n[o]+2*r>=t[o]&&(a[o]=sl((n[o]-t[o]+2*r)/s[o]+1,i));return a}([t,e,s,1],[o,l,u],1,[r,i,a],n,c);d=m[0],p=m[1],f=m[2]}else{if("same"!==n)throw Error(`Unknown padding parameter: ${n}`);{d=Math.ceil(t/r),p=Math.ceil(e/i),f=Math.ceil(s/a);const g=(d-1)*r+o-t,m=(p-1)*i+l-e,x=(f-1)*a+u-s,y=Math.floor(g/2),b=g-y,v=Math.floor(m/2),w=m-v,S=Math.floor(x/2);h={top:v,bottom:w,left:S,right:x-S,front:y,back:b,type:"SAME"}}}return{padInfo:h,outDepth:d,outHeight:p,outWidth:f}}(r,u,c,h,x,y,b,I,k,D,o),ee=i?m*d:m;let J;return"channelsFirst"===a?J=[l,ee,B,Y,Q]:"channelsLast"===a&&(J=[l,B,Y,Q,ee]),{batchSize:l,dataFormat:a,inDepth:u,inHeight:c,inWidth:h,inChannels:d,outDepth:B,outHeight:Y,outWidth:Q,outChannels:ee,padInfo:P,strideDepth:x,strideHeight:y,strideWidth:b,filterDepth:p,filterHeight:f,filterWidth:g,effectiveFilterDepth:I,effectiveFilterHeight:k,effectiveFilterWidth:D,dilationDepth:v,dilationHeight:w,dilationWidth:S,inShape:n,outShape:J,filterShape:t}}function Lp(n,t,e,s=1){const r=xa(t,s);return Math.floor((n[0]*(e-1)-e+r)/2)}function nl(n){return"number"==typeof n?[n,n,n]:2===n.length?[n[0],n[1],1]:n}function Mp(n){return"number"==typeof n?[n,n,n]:n}function xa(n,t){return t<=1?n:n+(n-1)*(t-1)}function sl(n,t){if(!t)return Math.trunc(n);switch(t){case"round":return Math.round(n);case"ceil":return Math.ceil(n);case"floor":return Math.floor(n);default:throw new Error(`Unknown roundingMode ${t}`)}}function Zr(n){const[t,e,s]=nl(n);return 1===t&&1===e&&1===s}function Pn(n,t){return Zr(n)||Zr(t)}function Di(n){return nl(n).every(t=>t>0)}function Sr(n){if("NHWC"===n)return"channelsLast";if("NCHW"===n)return"channelsFirst";throw new Error(`Unknown dataFormat ${n}`)}function qn(n,t,e){if(null!=e){if("string"==typeof t)throw Error(`Error in ${n}: pad must be an integer when using dimRoundingMode ${e} but got pad ${t}.`);if("number"==typeof t)T(St(t),()=>`Error in ${n}: pad must be an integer when using dimRoundingMode ${e} but got pad ${t}.`);else{if("object"!=typeof t)throw Error(`Error in ${n}: Unknown padding parameter: ${t}`);t.forEach(s=>{s.forEach(r=>{T(St(r),()=>`Error in ${n}: pad must be an integer when using dimRoundingMode ${e} but got pad ${r}.`)})})}}}const j=U({reshape_:function BC(n,t){const s={x:$(n,"x","reshape","string_or_numeric")};return V.runKernel(Ou,s,{shape:t})}}),Vp=U({avgPool_:function UC(n,t,e,s,r){const i=$(n,"x","avgPool","float32");T(Pn(e,1),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${e} and dilations '1'`);let o=i,l=!1;3===i.rank&&(l=!0,o=j(i,[1,i.shape[0],i.shape[1],i.shape[2]])),T(4===o.rank,()=>`Error in avgPool: x must be rank 4 but got rank ${o.rank}.`),qn("avgPool",s,r);let h=V.runKernel(Zl,{x:o},{filterSize:t,strides:e,pad:s,dimRoundingMode:r});return h=ke(h,i.dtype),l?j(h,[h.shape[1],h.shape[2],h.shape[3]]):h}}),GC=U({avgPool3d_:function WC(n,t,e,s,r,i="NDHWC"){const a=$(n,"x","avgPool3d","float32");let o=a,l=!1;4===a.rank&&(l=!0,o=j(a,[1,a.shape[0],a.shape[1],a.shape[2],a.shape[3]])),T(5===o.rank,()=>`Error in avgPool3d: x must be rank 5 but got rank ${o.rank}.`),T("NDHWC"===i,()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${i}`),T("number"==typeof e&&e>0||Array.isArray(e)&&e[0]>0&&e[1]>0&&e[2]>0,()=>`Error in avgPool3d: Stride must be > 0, but got '${e}'`),qn("avgPool3d",s,r);let h=V.runKernel(Yl,{x:o},{filterSize:t,strides:e,pad:s,dimRoundingMode:r,dataFormat:i});return h=ke(h,o.dtype),l?j(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}});function HC(n){let t;return t=0===n.rank||1===n.rank?j(n,[1,1,1,n.size]):2===n.rank?j(n,[1,1,n.shape[0],n.shape[1]]):3===n.rank?j(n,[1,n.shape[0],n.shape[1],n.shape[2]]):n,t}const oc=U({batchNorm_:function jC(n,t,e,s,r,i){null==i&&(i=.001);const a=$(n,"x","batchNorm"),o=$(t,"mean","batchNorm"),l=$(e,"variance","batchNorm");let u,c;null!=r&&(u=$(r,"scale","batchNorm")),null!=s&&(c=$(s,"offset","batchNorm")),T(o.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),T(null==c||o.rank===c.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),T(null==u||o.rank===u.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");const d={x:HC(a),scale:u,offset:c,mean:o,variance:l},f=V.runKernel(cu,d,{varianceEpsilon:i});return j(f,a.shape)}}),KC=U({batchNorm2d_:function XC(n,t,e,s,r,i){const a=$(n,"x","batchNorm"),o=$(t,"mean","batchNorm"),l=$(e,"variance","batchNorm");let u,c;return null!=r&&(u=$(r,"scale","batchNorm")),null!=s&&(c=$(s,"offset","batchNorm")),T(2===a.rank,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${a.rank}.`),T(2===o.rank||1===o.rank,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${o.rank}.`),T(2===l.rank||1===l.rank,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${l.rank}.`),null!=u&&T(2===u.rank||1===u.rank,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${u.rank}.`),null!=c&&T(2===c.rank||1===c.rank,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${c.rank}.`),oc(a,o,l,c,u,i)}}),ZC=U({batchNorm3d_:function qC(n,t,e,s,r,i){const a=$(n,"x","batchNorm"),o=$(t,"mean","batchNorm"),l=$(e,"variance","batchNorm");let u,c;return null!=r&&(u=$(r,"scale","batchNorm")),null!=s&&(c=$(s,"offset","batchNorm")),T(3===a.rank,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${a.rank}.`),T(3===o.rank||1===o.rank,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${o.rank}.`),T(3===l.rank||1===l.rank,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${l.rank}.`),null!=u&&T(3===u.rank||1===u.rank,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${u.rank}.`),null!=c&&T(3===c.rank||1===c.rank,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${c.rank}.`),oc(a,o,l,c,u,i)}}),QC=U({batchNorm4d_:function YC(n,t,e,s,r,i){const a=$(n,"x","batchNorm"),o=$(t,"mean","batchNorm"),l=$(e,"variance","batchNorm");let u,c;return null!=r&&(u=$(r,"scale","batchNorm")),null!=s&&(c=$(s,"offset","batchNorm")),T(4===a.rank,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${a.rank}.`),T(4===o.rank||1===o.rank,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${o.rank}.`),T(4===l.rank||1===l.rank,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${l.rank}.`),null!=u&&T(4===u.rank||1===u.rank,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${u.rank}.`),null!=c&&T(4===c.rank||1===c.rank,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${c.rank}.`),oc(a,o,l,c,u,i)}}),rl=U({broadcastTo_:function JC(n,t){let e=$(n,"broadcastTo","x");const s=e.shape;if(Js(t),t.lengthe.rank){const u=e.shape.slice();for(;u.length=0;u--)if(r[u]===t[u])i[u]=1;else if(1!==e.shape[u])throw new Error(`broadcastTo(): [${s}] cannot be broadcast to [${t}].`);return 0===i.map((u,c)=>u>1?c:-1).filter(u=>u>=0).length?Ai(e):V.runKernel(Ho,{x:e},{reps:i})}}),gs=U({clipByValue_:function eI(n,t,e){const s=$(n,"x","clipByValue");return T(t<=e,()=>`Error in clip: min (${t}) must be less than or equal to max (${e}).`),t===e?Jo(s.shape,t,s.dtype):V.runKernel(ao,{x:s},{clipValueMin:t,clipValueMax:e})}}),Bn=U({concat_:function tI(n,t=0){T(n.length>=1,()=>"Pass at least one tensor to concat");const e=xx(n,"tensors","concat","string_or_numeric");return"complex64"===e[0].dtype&&e.forEach(i=>{if("complex64"!==i.dtype)throw new Error(`Cannot concatenate complex64 tensors with a tensor\n with dtype ${i.dtype}. `)}),1===e.length?Ai(e[0]):V.runKernel(tu,e,{axis:t})}}),sI=U({concat1d_:function nI(n){return Bn(n,0)}}),iI=U({concat2d_:function rI(n,t){return Bn(n,t)}}),oI=U({concat3d_:function aI(n,t){return Bn(n,t)}}),uI=U({concat4d_:function lI(n,t){return Bn(n,t)}}),Oi=U({conv2d_:function cI(n,t,e,s,r="NHWC",i=[1,1],a){const o=$(n,"x","conv2d","float32"),l=$(t,"filter","conv2d","float32");let u=o,c=!1;3===o.rank&&(c=!0,u=j(o,[1,o.shape[0],o.shape[1],o.shape[2]])),T(4===u.rank,()=>`Error in conv2d: input must be rank 4, but got rank ${u.rank}.`),T(4===l.rank,()=>`Error in conv2d: filter must be rank 4, but got rank ${l.rank}.`),qn("conv2d",s,a);const h="NHWC"===r?u.shape[3]:u.shape[1];T(h===l.shape[2],()=>`Error in conv2d: depth of input (${h}) must match input depth for filter ${l.shape[2]}.`),T(Pn(e,i),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${e} and dilations '${i}'`),T(Di(i),()=>"Error in conv2D: Dilated rates should be larger than 0."),T(Di(e),()=>"Error in conv2D: Strides should be larger than 0.");const f=V.runKernel(nu,{x:u,filter:l},{strides:e,pad:s,dataFormat:r,dilations:i,dimRoundingMode:a});return c?j(f,[f.shape[1],f.shape[2],f.shape[3]]):f}}),uy=U({conv1d_:function hI(n,t,e,s,r="NWC",i=1,a){const o=$(n,"x","conv1d"),l=$(t,"filter","conv1d");let u=o,c=!1;2===o.rank&&(c=!0,u=j(o,[1,o.shape[0],o.shape[1]])),T(3===u.rank,()=>`Error in conv1d: input must be rank 3, but got rank ${u.rank}.`),T(3===l.rank,()=>`Error in conv1d: filter must be rank 3, but got rank ${l.rank}.`),qn("conv1d",s,a),T(u.shape[2]===l.shape[1],()=>`Error in conv1d: depth of input (${u.shape[2]}) must match input depth for filter ${l.shape[1]}.`),T(Pn(e,i),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${e} and dilation '${i}'`),T(Di(i),()=>"Error in conv1D: Dilated rates should be larger than 0."),T(Di(e),()=>"Error in conv1D: Stride should be larger than 0."),T("NWC"===r,()=>`Error in conv1d: got dataFormat of ${r} but only NWC is currently supported.`);const h=j(l,[1,l.shape[0],l.shape[1],l.shape[2]]),d=j(u,[u.shape[0],1,u.shape[1],u.shape[2]]),m=Oi(d,h,[1,e],s,"NHWC",[1,i],a);return j(m,c?[m.shape[2],m.shape[3]]:[m.shape[0],m.shape[2],m.shape[3]])}}),zp=U({conv2DBackpropInput_:function dI(n,t,e,s,r,i="NHWC",a){T(n.length===t.rank,()=>`Length of inShape (${n.length}) and rank of dy (${t.rank}) must match`);let o=n,l=t,u=!1;3===t.rank&&(u=!0,l=j(t,[1,t.shape[0],t.shape[1],t.shape[2]]),o=[1,n[0],n[1],n[2]]),T(4===o.length,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${o.length}.`),T(4===l.rank,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${l.rank}`),T(4===e.rank,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${e.rank}`);const c="NHWC"===i?o[3]:o[1],h="NHWC"===i?l.shape[3]:l.shape[1];T(c===e.shape[2],()=>`Error in conv2dDerInput: depth of input (${c}) must match input depth for filter ${e.shape[2]}.`),T(h===e.shape[3],()=>`Error in conv2dDerInput: depth of output (${h}) must match output depth for filter ${e.shape[3]}.`),qn("conv2dDerInput",r,a);const f=V.runKernel(su,{dy:l,filter:e},{strides:s,pad:r,dataFormat:i,dimRoundingMode:a,inputShape:o});return u?j(f,[f.shape[1],f.shape[2],f.shape[3]]):f}}),cy=U({conv2dTranspose_:function pI(n,t,e,s,r,i){const a=$(n,"x","conv2dTranspose"),o=$(t,"filter","conv2dTranspose");return zp(e,a,o,s,r,"NHWC",i)}}),mI=U({conv3d_:function fI(n,t,e,s,r="NDHWC",i=[1,1,1]){const a=$(n,"x","conv3d"),o=$(t,"filter","conv3d");let l=a,u=!1;4===a.rank&&(u=!0,l=j(a,[1,a.shape[0],a.shape[1],a.shape[2],a.shape[3]])),T(5===l.rank,()=>`Error in conv3d: input must be rank 5, but got rank ${l.rank}.`),T(5===o.rank,()=>`Error in conv3d: filter must be rank 5, but got rank ${o.rank}.`),T(l.shape[4]===o.shape[3],()=>`Error in conv3d: depth of input (${l.shape[4]}) must match input depth for filter ${o.shape[3]}.`),T(Pn(e,i),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${e} and dilations '${i}'`),T("NDHWC"===r,()=>`Error in conv3d: got dataFormat of ${r} but only NDHWC is currently supported.`),T(Di(i),()=>"Error in conv3D: Dilated rates should be larger than 0."),T(Di(e),()=>"Error in conv3D: Strides should be larger than 0.");const d=V.runKernel(ru,{x:l,filter:o},{strides:e,pad:s,dataFormat:r,dilations:i});return u?j(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}}),hy=U({conv3DBackpropInput_:function gI(n,t,e,s,r){T(n.length===t.rank,()=>`Length of inShape (${n.length}) and rank of dy (${t.rank}) must match`);let i=n,a=t,o=!1;4===t.rank&&(o=!0,a=j(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),i=[1,n[0],n[1],n[2],n[3]]);const l=i[4],u=a.shape[4];T(5===i.length,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${i.length}.`),T(5===a.rank,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${a.rank}`),T(5===e.rank,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${e.rank}`),T(l===e.shape[3],()=>`Error in conv3dDerInput: depth of input (${l}) must match input depth for filter ${e.shape[3]}.`),T(u===e.shape[4],()=>`Error in conv3dDerInput: depth of output (${u}) must match output depth for filter ${e.shape[4]}.`);const d=V.runKernel(cd,{dy:a,filter:e},{pad:r,strides:s,inputShape:i});return o?j(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}}),yI=U({conv3dTranspose_:function xI(n,t,e,s,r){const i=$(n,"x","conv3dTranspose"),a=$(t,"filter","conv3dTranspose");return hy(e,i,a,s,r)}}),dy=U({denseBincount_:function bI(n,t,e,s=!1){const r=$(n,"x","denseBincount"),i=$(t,"weights","denseBincount");return T("int32"===r.dtype,()=>`Error in denseBincount: input dtype must be int32, but got ${r.dtype}`),T(r.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${r.rank}.`),T(e>=0,()=>`size must be non-negative, but got ${e}.`),T(i.size===r.size||0===i.size,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${r.shape}, weights shape: ${i.shape}.`),V.runKernel(pd,{x:r,weights:i},{size:e,binaryOutput:s})}}),lc=U({depthwiseConv2d_:function vI(n,t,e,s,r="NHWC",i=[1,1],a){const o=$(n,"x","depthwiseConv2d","float32"),l=$(t,"filter","depthwiseConv2d","float32");let u=o,c=!1;3===o.rank&&(c=!0,u=j(o,[1,o.shape[0],o.shape[1],o.shape[2]])),T(4===u.rank,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${u.rank}.`),T(4===l.rank,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${l.rank}.`);const h="NHWC"===r?u.shape[3]:u.shape[1];T(h===l.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${h}) must match the inChannels dimension in filter ${l.shape[2]}.`),qn("depthwiseConv2d",s,a);const f=V.runKernel(au,{x:u,filter:l},{strides:e,pad:s,dataFormat:r,dilations:i,dimRoundingMode:a});return c?j(f,[f.shape[1],f.shape[2],f.shape[3]]):f}}),uc=U({elu_:function wI(n){const e={x:$(n,"x","elu","float32")};return V.runKernel(co,e)}}),rr=U({equal_:function _I(n,t){let e=$(n,"a","equal","string_or_numeric"),s=$(t,"b","equal","string_or_numeric");return[e,s]=un(e,s),ht(e.shape,s.shape),V.runKernel(lu,{a:e,b:s})}}),py=U({erf_:function TI(n){let t=$(n,"x","erf");return T("int32"===t.dtype||"float32"===t.dtype,()=>"Input dtype must be `int32` or `float32`."),"int32"===t.dtype&&(t=ke(t,"float32")),V.runKernel(ho,{x:t})}}),xs=U({exp_:function SI(n){const e={x:$(n,"x","exp")};return V.runKernel(po,e)}}),Zn=U({expandDims_:function CI(n,t=0){const e=$(n,"x","expandDims","string_or_numeric");return T(t<=e.rank,()=>"Axis must be <= rank of the tensor"),V.runKernel(uu,{input:e},{dim:t})}}),Us=U({tile_:function II(n,t){const e=$(n,"x","tile","string_or_numeric");return T(e.rank===t.length,()=>`Error in transpose: rank of input ${e.rank} must match length of reps ${t}.`),V.runKernel(Ho,{x:e},{reps:t})}}),fy=U({eye_:function EI(n,t,e,s="float32"){null==t&&(t=n);const r=vt([n,t],s),i=n<=t?n:t;for(let o=0;o{const o=Ws(r,t,!0),l=ze(r,o),u=ze(ke(l,"float32"),Ns(Ge(xs(l),t,!0)));return i([u]),{value:u,gradFunc:(h,d)=>{const[p]=d,g=xs(p);return ze(h,L(Ge(h,t,!0),g))}}})(e)}});function Gp(n,t){for(let e=0;en[i])]}function hn(n,t){return gy(n,t.map(s=>1),t)}function Fn(n,t,e){T(Gp(t,e),()=>`${n} supports only inner-most axes for now. Got axes ${t} and rank-${e} input.`)}function rn(n,t){if(Gp(n,t))return null;const e=[];for(let s=0;se.push(s)),e}function Yr(n){return n.map((t,e)=>[e,t]).sort((t,e)=>t[1]-e[1]).map(t=>t[0])}function dn(n,t){const e=[];for(let s=t-n;s`Error in maxPool: input must be rank 4 but got rank ${o.rank}.`),T(Pn(e,1),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${e} and dilations '1'`),qn("maxPool",s,r);const h=V.runKernel(wu,{x:o},{filterSize:t,strides:e,pad:s,dimRoundingMode:r});return l?j(h,[h.shape[1],h.shape[2],h.shape[3]]):h}}),WI=U({maxPool3d_:function UI(n,t=[1,1,1],e,s,r,i="NDHWC"){const a=$(n,"x","maxPool3d");let o=a,l=!1;4===a.rank&&(l=!0,o=j(a,[1,a.shape[0],a.shape[1],a.shape[2],a.shape[3]])),T(5===o.rank,()=>`Error in maxPool3d: x must be rank 5 but got rank ${o.rank}.`),T("NDHWC"===i,()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${i}`),qn("maxPool3d",s,r);const h=V.runKernel(_u,{x:o},{filterSize:t,strides:e,pad:s,dimRoundingMode:r,dataFormat:i});return l?j(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}}),pn=U({mean_:function GI(n,t=null,e=!1){const r={x:$(n,"x","mean")};return V.runKernel(Tu,r,{axis:t,keepDims:e})}}),hc=U({min_:function HI(n,t=null,e=!1){const r={x:$(n,"x","min")};return V.runKernel(Su,r,{axis:t,keepDims:e})}}),ya=U({minimum_:function jI(n,t){let e=$(n,"a","minimum"),s=$(t,"b","minimum");return[e,s]=un(e,s),"bool"===e.dtype&&(e=ke(e,"int32"),s=ke(s,"int32")),ht(e.shape,s.shape),V.runKernel(Co,{a:e,b:s})}}),Xp=U({moments_:function XI(n,t=null,e=!1){const s=pt(t,(n=$(n,"x","moments")).shape),r=pn(n,s,e);let i=r.shape;e||(i=hn(r.shape,s));const a=Kt(ze(ke(n,"float32"),j(r,i)));return{mean:r,variance:pn(a,s,e)}}}),Jt=U({neg_:function KI(n){const e={x:$(n,"x","neg")};return V.runKernel(Iu,e)}}),il=U({notEqual_:function qI(n,t){let e=$(n,"a","notEqual","string_or_numeric"),s=$(t,"b","notEqual","string_or_numeric");return[e,s]=un(e,s),ht(e.shape,s.shape),V.runKernel(Eu,{a:e,b:s})}}),xy=U({oneHot_:function ZI(n,t,e=1,s=0,r="int32"){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);const a={indices:$(n,"indices","oneHot","int32")};return V.runKernel(Nu,a,{dtype:r,depth:t,onValue:e,offValue:s})}});function Rn(n,t="float32"){if(Js(n),"complex64"===t){const s=Rn(n,"float32"),r=Rn(n,"float32");return Ci(s,r)}const e=yn(K(n),t);return V.makeTensor(e,n,t)}function Ir(n,t="float32"){if(Js(n),"complex64"===t){const s=Ir(n,"float32"),r=Rn(n,"float32");return Ci(s,r)}const e=Vr(K(n),t);return V.makeTensor(e,n,t)}const As=U({onesLike_:function YI(n){const e={x:$(n,"x","onesLike")};return V.runKernel(ku,e)}}),Kp=U({pad_:function QI(n,t,e=0){const s=$(n,"x","pad");if(0===s.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");return V.runKernel(Ru,{x:s},{paddings:t,constantValue:e})}}),qp=U({prelu_:function JI(n,t){const e=$(n,"x","prelu"),s=$(t,"alpha","prelu");return V.runKernel($u,{x:e,alpha:s})}});var al=W(8814);class Zp{constructor(t,e,s,r,i){this.mean=t,this.stdDev=e,this.dtype=s,this.nextVal=NaN,this.truncated=r,this.truncated&&(this.upper=this.mean+2*this.stdDev,this.lower=this.mean-2*this.stdDev);const a=i||Math.random();this.random=al.alea(a.toString())}nextValue(){if(!isNaN(this.nextVal)){const r=this.nextVal;return this.nextVal=NaN,r}let t,e,s=!1;for(;!s;){let r,i,a;do{r=2*this.random()-1,i=2*this.random()-1,a=r*r+i*i}while(a>=1||0===a);const o=Math.sqrt(-2*Math.log(a)/a);t=this.mean+this.stdDev*r*o,e=this.mean+this.stdDev*i*o,(!this.truncated||this.isValidTruncated(t))&&(s=!0)}return(!this.truncated||this.isValidTruncated(e))&&(this.nextVal=this.convertValue(e)),this.convertValue(t)}convertValue(t){return null==this.dtype||"float32"===this.dtype?t:Math.round(t)}isValidTruncated(t){return t<=this.upper&&t>=this.lower}}class eE{constructor(t=0,e=1,s,r){if(this.canReturnFloat=()=>null==this.dtype||"float32"===this.dtype,this.min=t,this.range=e-t,this.dtype=s,null==r&&(r=Math.random()),"number"==typeof r&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${t} - ${e} <= 1 and dtype is not float`);this.random=al.alea(r)}convertValue(t){return this.canReturnFloat()?t:Math.round(t)}nextValue(){return this.convertValue(this.min+this.range*this.random())}}const iE=U({randomNormal_:function rE(n,t=0,e=1,s,r){if(Js(n),null!=s&&"bool"===s)throw new Error(`Unsupported data type ${s}`);const i=new Zp(t,e,s,!1,r),a=vt(n,s);for(let o=0;o`Error in separableConv2d: input must be rank 4, but got rank ${c.rank}.`),T(4===l.rank,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${l.rank}.`),T(4===u.rank,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${l.rank}.`),T(1===u.shape[0],()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${u.shape[0]}.`),T(1===u.shape[1],()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${u.shape[1]}.`);const d=l.shape[2],p=l.shape[3];T(u.shape[2]===d*p,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${d*p}, but got ${u.shape[2]}.`);const f=lc(c,l,s,r,a,i),m=Oi(f,u,1,"valid",a);return h?j(m,[m.shape[1],m.shape[2],m.shape[3]]):m}}),ba=U({sigmoid_:function hE(n){const e={x:$(n,"x","sigmoid","float32")};return V.runKernel(Mo,e)}}),Bt=U({slice_:function dE(n,t,e){const s=$(n,"x","slice","string_or_numeric");if(0===s.rank)throw new Error("Slicing scalar is not possible");return V.runKernel(Vu,{x:s},{begin:t,size:e})}}),Qp=U({slice1d_:function pE(n,t,e){const s=$(n,"x","slice1d");return T(1===s.rank,()=>`slice1d expects a rank-1 tensor, but got a rank-${s.rank} tensor`),Bt(s,[t],[e])}}),vy=U({slice2d_:function fE(n,t,e){const s=$(n,"x","slice2d");return T(2===s.rank,()=>`slice2d expects a rank-2 tensor, but got a rank-${s.rank} tensor`),Bt(s,t,e)}}),Jp=U({slice3d_:function mE(n,t,e){const s=$(n,"x","slice3d");return T(3===s.rank,()=>`slice3d expects a rank-3 tensor, but got a rank-${s.rank} tensor`),Bt(s,t,e)}}),dc=U({slice4d_:function gE(n,t,e){const s=$(n,"x","slice4d");return T(4===s.rank,()=>`slice4d expects a rank-4 tensor, but got a rank-${s.rank} tensor`),Bt(s,t,e)}}),ef=U({softmax_:function xE(n,t=-1){const e=$(n,"logits","softmax","float32");if(-1===t&&(t=e.rank-1),t!==e.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${e.rank} and dim was ${t}`);return V.runKernel(Wu,{logits:e},{dim:t})}}),ul=U({softplus_:function yE(n){const e={x:$(n,"x","softplus")};return V.runKernel(Vo,e)}}),bs=U({split_:function bE(n,t,e=0){const r={x:$(n,"x","split")};return V.runKernel(Uu,r,{numOrSizeSplits:t,axis:e})}}),cl=U({squeeze_:function vE(n,t){const e=$(n,"x","squeeze","string_or_numeric");return j(e,Qs(e.shape,t).newShape)}}),ir=U({stack_:function wE(n,t=0){const e=xx(n,"tensors","stack","string_or_numeric");return T(e.length>=1,()=>"Pass at least one tensor to tf.stack"),e.length>0&&T(t<=e[0].rank,()=>"Axis must be <= rank of the tensor"),V.runKernel(Au,e,{axis:t})}}),pc=U({tanh_:function _E(n){const e={x:$(n,"x","tanh","float32")};return V.runKernel(Go,e)}});function Un(n,t){Ye(n);const e=Yo(n,t);if(1!==e.length)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Qo(n,null,e,t)}function Qr(n,t,e){if(Ye(n),null!=t&&2!==t.length)throw new Error("tensor2d() requires shape to have two numbers");const s=Yo(n,e);if(2!==s.length&&1!==s.length)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(1===s.length&&null==t)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Qo(n,t,s,e)}const wy=U({truncatedNormal_:function TE(n,t=0,e=1,s,r){if(Js(n),null!=s&&"bool"===s)throw new Error("Unsupported data type $ { dtype }");const i=new Zp(t,e,s,!0,r),a=vt(n,s);for(let o=0;o=-e.shape.length&&t`Axis = ${t} is not in [-${e.shape.length}, ${e.shape.length})`),V.runKernel(Hu,{value:e},{axis:t})}}),Yn=U({where_:function IE(n,t,e){const s=$(t,"a","where"),r=$(e,"b","where"),i=$(n,"condition","where","bool"),a=ht(ht(i.shape,s.shape),r.shape),o=rl(i,a),l=rl(s,a),u=rl(r,a);return V.runKernel(Mu,{condition:o,t:l,e:u})}}),tf=U({imag_:function EE(n){const e={input:$(n,"input","imag")};return V.runKernel(Id,e)}}),fc=U({real_:function kE(n){const e={input:$(n,"input","real")};return V.runKernel(Od,e)}}),kt=U({transpose_:function NE(n,t,e){const s=$(n,"x","transpose");if(null==t&&(t=s.shape.map((a,o)=>o).reverse()),T(s.rank===t.length,()=>`Error in transpose: rank of input ${s.rank} must match length of perm ${t}.`),t.forEach(a=>{T(a>=0&&a`All entries in 'perm' must be between 0 and ${s.rank-1} but got ${t}`)}),s.rank<=1)return s.clone();const r={x:s},i={perm:t};return"complex64"===s.dtype?Z(()=>{let a=fc(s),o=tf(s);return a=V.runKernel(la,{x:a},i),o=V.runKernel(la,{x:o},i),e&&(o=Jt(o)),Ci(a,o)}):V.runKernel(la,r,i)}}),$E=U({dropout_:function RE(n,t,e,s){const r=$(n,"x","dropout");if(T("float32"===r.dtype,()=>`x has to be a floating point tensor since it's going to be scaled, but got a ${r.dtype} tensor instead.`),T(t>=0&&t<1,()=>`rate must be a float in the range [0, 1), but got ${t}.`),0===t)return n instanceof Qt?r.clone():r;const i=function AE(n,t){if(null==t)return n.shape.slice();if(rt(n.shape,t))return t;if(n.shape.length===t.length){const e=[];for(let s=0;s`The dtype for tf.spectral.fft() must be complex64 but got ${n.dtype}.`),V.runKernel("FFT",{input:n})}}),sf=U({rfft_:function OE(n,t){T("float32"===n.dtype,()=>`The dtype for rfft() must be real value but got ${n.dtype}`);let e=n.shape[n.shape.length-1];const s=n.size/e;let r;if(null!=t&&t0),g=n.shape.map(m=>m);g[n.shape.length-1]=t,r=Bt(n,f,g),e=t}else if(null!=t&&t>e){const f=n.shape.map(g=>g);f[n.shape.length-1]=t-e,r=Bn([n,Rn(f)],n.shape.length-1),e=t}else r=n;const i=Et(r),a=j(Ci(r,i),[s,e]),o=nf(a),l=Math.floor(e/2)+1,u=fc(o),c=tf(o),h=bs(u,[l,e-l],u.shape.length-1),d=bs(c,[l,e-l],c.shape.length-1),p=r.shape.slice();return p[r.shape.length-1]=l,j(Ci(h[0],d[0]),p)}}),mc=U({ifft_:function PE(n){return T("complex64"===n.dtype,()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${n.dtype}.`),V.runKernel(Cd,{input:n})}}),_y=U({irfft_:function FE(n){const t=n.shape[n.shape.length-1],e=n.size/t;let s;if(t<=2){const r=j(n,[e,t]);s=mc(r)}else{const r=[e,2*(t-1)],i=j(fc(n),[e,t]),a=j(tf(n),[e,t]),o=Fi(Bt(i,[0,1],[e,t-2]),1),l=L(Fi(Bt(a,[0,1],[e,t-2]),1),ut(-1)),u=Bn([i,o],1),c=Bn([a,l],1),h=j(Ci(u,c),[r[0],r[1]]);s=mc(h)}if(s=fc(s),3===n.rank&&0!==n.shape[0]){const r=s,i=n.shape[0];s=j(s,[i,s.shape[0]/i,s.shape[1]]),r.dispose()}return s}}),rf=U({conv2DBackpropFilter_:function LE(n,t,e,s,r,i="NHWC",a){let o=n;3===n.rank&&(o=j(n,[1,n.shape[0],n.shape[1],n.shape[2]]));let l=t;3===l.rank&&(l=j(t,[1,t.shape[0],t.shape[1],t.shape[2]])),T(4===o.rank,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${o.shape}.`),T(4===l.rank,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${l.shape}.`),T(4===e.length,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${e}.`);const u="NHWC"===i?o.shape[3]:o.shape[1],c="NHWC"===i?l.shape[3]:l.shape[1];return T(u===e[2],()=>`Error in conv2dDerFilter: depth of input ${u}) must match input depth in filter (${e[2]}.`),T(c===e[3],()=>`Error in conv2dDerFilter: depth of dy (${c}) must match output depth for filter (${e[3]}).`),qn("conv2dDerFilter",r,a),V.runKernel(ld,{x:o,dy:l},{strides:s,pad:r,dataFormat:i,dimRoundingMode:a,filterShape:e})}}),Ty=U({relu6_:function ME(n){const e={x:$(n,"x","relu6")};return V.runKernel(Ro,e)}}),hl=U({step_:function VE(n,t=0){const s={x:$(n,"x","step")};return V.runKernel(jo,s,{alpha:t})}});function gc(n,t,e){if(null==e||"linear"===e)return n;if("relu"===e)return L(n,hl(t));throw new Error(`Cannot compute gradient for fused activation ${e}.`)}function xc(n,t){let e=t;const s=bn(n.shape,t.shape);return s.length>0&&(e=Ge(e,s)),j(e,n.shape)}function yc(n,t,e,s){if("linear"===t)return n;if("relu"===t)return Er(n);if("elu"===t)return uc(n);if("relu6"===t)return Ty(n);if("prelu"===t)return qp(n,e);if("leakyrelu"===t)return Up(n,s);if("sigmoid"===t)return ba(n);throw new Error(`Unknown fused activation ${t}.`)}const bc=(n,t)=>!(n>0)||"linear"===t,BE=U({fusedConv2d_:function zE({x:n,filter:t,strides:e,pad:s,dataFormat:r="NHWC",dilations:i=[1,1],dimRoundingMode:a,bias:o,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(!1===bc(V.state.gradientDepth,l=l||"linear")){T("NHWC"===r,()=>`Error in fused conv2d: got dataFormat of ${r} but only NHWC is currently supported for the case of gradient depth is 0 and the activation is not linear.`);let S=Oi(n,t,e,s,r,i,a);return null!=o&&(S=me(S,o)),yc(S,l,u,c)}const h=$(n,"x","conv2d","float32"),d=$(t,"filter","conv2d","float32");let p=h,f=!1;3===h.rank&&(f=!0,p=j(h,[1,h.shape[0],h.shape[1],h.shape[2]])),T(4===p.rank,()=>`Error in fused conv2d: input must be rank 4, but got rank ${p.rank}.`),T(4===d.rank,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${d.rank}.`),qn("fused conv2d",s,a);const g="NHWC"===r?p.shape[3]:p.shape[1];T(d.shape[2]===g,()=>`Error in conv2d: depth of input (${g}) must match input depth for filter ${d.shape[2]}.`),T(Pn(e,i),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${e} and dilations '${i}'`);const m=Nn(p.shape,d.shape,e,i,s,a);let x,y;if(null!=o&&(x=$(o,"bias","fused conv2d"),[x]=un(x,h),"NHWC"===r?ht(m.outShape,x.shape):(T(x.shape.length<=1,()=>`Error in fused conv2d: only supports scalar or 1-D Tensor bias for NCHW format but got the bias of rank-${x.shape.length}.`),T(0===x.shape.length||x.shape[0]===m.outChannels||1===x.shape[0],()=>`Error in fused conv2d: bias shape (${x.shape}) is not compatible with the number of output channels (${m.outChannels})`))),null!=u){const S=u.shape;if(T(S.length<=1||3===S.length,()=>`Error in fused conv2d: only supports scalar, 1-D Tensor or 3-D Tensor PReLU activation weights but got a tensor of rank-${S.length}.`),1===S.length)T(1===S[0]||S[0]===m.outChannels,()=>`Error in fused conv2d: PReLU activation weights (${S}) is not compatible with the number of output channels (${m.outChannels}).`);else if(3===S.length)try{ht(S,m.outShape)}catch{throw Error(`Error in fused conv2d: PReLU activation weights (${S}) is not compatible with the output shape of the conv2d (${m.outShape}).`)}y=$(u,"prelu weights","fused conv2d")}const b=(S,I)=>{T("NHWC"===r,()=>`Error in gradient of fused conv2D: got dataFormat of ${r} but only NHWC is currently supported.`);const[k,D,P,B]=I,Y=gc(S,P,l);T(Zr(i),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${i}'`);const J=[zp(D.shape,Y,k,e,s),rf(D,Y,k.shape,e,s)];if(null!=B){const se=xc(B,Y);J.push(se)}return J},v={x:p,filter:d,bias:x,preluActivationWeights:y},w={strides:e,pad:s,dataFormat:r,dilations:i,dimRoundingMode:a,activation:l,leakyreluAlpha:c};return null==o?_r((I,k,D)=>{let P=V.runKernel(qu,v,w);return D([k,I,P]),f&&(P=j(P,[P.shape[1],P.shape[2],P.shape[3]])),{value:P,gradFunc:b}})(p,d):_r((I,k,D,P)=>{let B=V.runKernel(qu,v,w);return P([k,I,B,D]),f&&(B=j(B,[B.shape[1],B.shape[2],B.shape[3]])),{value:B,gradFunc:b}})(p,d,x)}}),Sy=U({depthwiseConv2dNativeBackpropFilter_:function UE(n,t,e,s,r,i=[1,1],a){let o=n;3===n.rank&&(o=j(n,[1,n.shape[0],n.shape[1],n.shape[2]]));let l=t;return 3===l.rank&&(l=j(t,[1,t.shape[0],t.shape[1],t.shape[2]])),V.runKernel(md,{x:o,dy:l},{strides:s,pad:r,dimRoundingMode:a,dilations:i,filterShape:e})}}),Cy=U({depthwiseConv2dNativeBackpropInput_:function WE(n,t,e,s,r,i=[1,1],a){let o=t,l=!1;3===t.rank&&(l=!0,o=j(t,[1,t.shape[0],t.shape[1],t.shape[2]]));const h=V.runKernel(gd,{dy:o,filter:e},{strides:s,pad:r,dimRoundingMode:a,dilations:i,inputShape:n});return l?j(h,[h.shape[1],h.shape[2],h.shape[3]]):h}}),Iy=U({fusedMatMul_:function HE({a:n,b:t,transposeA:e=!1,transposeB:s=!1,bias:r,activation:i="linear",preluActivationWeights:a,leakyreluAlpha:o=.2}){if(!1===bc(V.state.gradientDepth,i)){let B=Dt(n,t,e,s);return null!=r&&(B=me(B,r)),yc(B,i,a,o)}let l=$(n,"a","fused matMul"),u=$(t,"b","fused matMul");[l,u]=un(l,u);const c=e?l.shape[l.rank-2]:l.shape[l.rank-1],h=s?u.shape[u.rank-1]:u.shape[u.rank-2],d=e?l.shape[l.rank-1]:l.shape[l.rank-2],p=s?u.shape[u.rank-2]:u.shape[u.rank-1],f=l.shape.slice(0,-2),g=u.shape.slice(0,-2),m=K(f),x=K(g);T(c===h,()=>`Error in fused matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${l.shape} and ${u.shape} and transposeA=${e} and transposeB=${s} must match.`);const b=ht(l.shape.slice(0,-2),u.shape.slice(0,-2)).concat([d,p]),v=j(l,e?[m,c,d]:[m,d,c]),w=j(u,s?[x,p,h]:[x,h,p]);let S,I;null!=r&&(S=$(r,"bias","fused matMul"),[S]=un(S,l),ht(b,S.shape)),null!=a&&(I=$(a,"prelu weights","fused matMul"));const k=(B,Y)=>{const[Q,ee,J,se]=Y,ae=gc(j(B,J.shape),J,i);let te,le;return e||s?!e&&s?(te=Dt(ae,ee,!1,!1),le=Dt(ae,Q,!0,!1)):e&&!s?(te=Dt(ee,ae,!1,!0),le=Dt(Q,ae,!1,!1)):(te=Dt(ee,ae,!0,!0),le=Dt(ae,Q,!0,!0)):(te=Dt(ae,ee,!1,!0),le=Dt(Q,ae,!0,!1)),null!=r?[te,le,xc(se,ae)]:[te,le]},D={a:v,b:w,bias:S,preluActivationWeights:I},P={transposeA:e,transposeB:s,activation:i,leakyreluAlpha:o};return null==r?_r((Y,Q,ee)=>{const J=V.runKernel(Ku,D,P);return ee([Y,Q,J]),{value:j(J,b),gradFunc:k}})(v,w):_r((Y,Q,ee,J)=>{const se=V.runKernel(Ku,D,P);return J([Y,Q,se,ee]),{value:j(se,b),gradFunc:k}})(v,w,S)}}),ek=U({cropAndResize_:function JE(n,t,e,s,r="bilinear",i=0){const a=$(n,"image","cropAndResize"),o=$(t,"boxes","cropAndResize","float32"),l=$(e,"boxInd","cropAndResize","int32"),u=o.shape[0];return T(4===a.rank,()=>`Error in cropAndResize: image must be rank 4,but got rank ${a.rank}.`),T(2===o.rank&&4===o.shape[1],()=>`Error in cropAndResize: boxes must be have size [${u},4] but had shape ${o.shape}.`),T(1===l.rank&&l.shape[0]===u,()=>`Error in cropAndResize: boxInd must be have size [${u}] but had shape ${o.shape}.`),T(2===s.length,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${s.length}.`),T(s[0]>=1&&s[1]>=1,()=>`cropSize must be atleast [1,1], but was ${s}`),T("bilinear"===r||"nearest"===r,()=>`method must be bilinear or nearest, but was ${r}`),V.runKernel(dd,{image:a,boxes:o,boxInd:l},{method:r,extrapolationValue:i,cropSize:s})}}),nk=U({flipLeftRight_:function tk(n){const t=$(n,"image","flipLeftRight","float32");return T(4===t.rank,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`),V.runKernel(Sd,{image:t},{})}}),rk=U({grayscaleToRGB_:function sk(n){const t=$(n,"image","grayscaleToRGB"),e=t.rank-1,s=t.shape[e];T(t.rank>=2,()=>`Error in grayscaleToRGB: images must be at least rank 2, but got rank ${t.rank}.`),T(1===s,()=>`Error in grayscaleToRGB: last dimension of a grayscale image should be size 1, but got size ${s}.`);const r=new Array(t.rank);return r.fill(1,0,e),r[e]=3,Us(t,r)}}),dl=U({einsum_:function ik(n,...t){const e=t.map((r,i)=>$(r,`tensors${i}`,"einsum"));return V.runKernel(vd,e,{equation:n})}}),ok=U({rgbToGrayscale_:function ak(n){const t=$(n,"image","RGBToGrayscale"),s=t.shape[t.rank-1];T(t.rank>=2,()=>`Error in RGBToGrayscale: images must be at least rank 2, but got rank ${t.rank}.`),T(3===s,()=>`Error in RGBToGrayscale: last dimension of an RGB image should be size 3, but got size ${s}.`);const r=t.dtype,i=ke(t,"float32"),a=Un([.2989,.587,.114]);let o;switch(t.rank){case 2:o=dl("ij,j->i",i,a);break;case 3:o=dl("ijk,k->ij",i,a);break;case 4:o=dl("ijkl,l->ijk",i,a);break;case 5:o=dl("ijklm,m->ijkl",i,a);break;case 6:o=dl("ijklmn,n->ijklm",i,a);break;default:throw new Error("Not a valid tensor rank.")}return o=Zn(o,-1),ke(o,r)}}),uk=U({rotateWithOffset_:function lk(n,t,e=0,s=.5){const r=$(n,"image","rotateWithOffset","float32");return T(4===r.rank,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${r.rank}.`),V.runKernel(Zd,{image:r},{radians:t,fillValue:e,center:s})}});function va(n,t,e,s,r,i){null==s&&(s=.5),null==r&&(r=Number.NEGATIVE_INFINITY),null==i&&(i=0);const a=n.shape[0];return e=Math.min(e,a),T(0<=s&&s<=1,()=>`iouThreshold must be in [0, 1], but was '${s}'`),T(2===n.rank,()=>`boxes must be a 2D tensor, but was of rank '${n.rank}'`),T(4===n.shape[1],()=>`boxes must have 4 columns, but 2nd dimension was ${n.shape[1]}`),T(1===t.rank,()=>"scores must be a 1D tensor"),T(t.shape[0]===a,()=>`scores has incompatible shape with boxes. Expected ${a}, but was ${t.shape[0]}`),T(0<=i&&i<=1,()=>`softNmsSigma must be in [0, 1], but was '${i}'`),{maxOutputSize:e,iouThreshold:s,scoreThreshold:r,softNmsSigma:i}}const hk=U({nonMaxSuppression_:function ck(n,t,e,s=.5,r=Number.NEGATIVE_INFINITY){const i=$(n,"boxes","nonMaxSuppression","float32"),a=$(t,"scores","nonMaxSuppression","float32"),o=va(i,a,e,s,r);return V.runKernel(Ad,{boxes:i,scores:a},{maxOutputSize:e=o.maxOutputSize,iouThreshold:s=o.iouThreshold,scoreThreshold:r=o.scoreThreshold})}});function dk(n,t,e){const s=function pk(n,t,e){return function mk(n,t,e){let s=0,r=n.length,i=0,a=!1;for(;s>>1);const o=e(t,n[i]);o>0?s=i+1:(r=i,a=!o)}return a?s:-s-1}(n,t,e||fk)}(n,t,e);n.splice(s<0?-(s+1):s,0,t)}function fk(n,t){return n>t?1:nr&&u.push({score:t[m],boxIndex:m,suppressBeginIndex:0});u.sort(Ay);const c=i>0?-.5/i:0,h=[],d=[];for(;h.length0;){const m=u.pop(),{score:x,boxIndex:y,suppressBeginIndex:b}=m;if(x=b;--w){const S=gk(n,y,h[w]);if(S>=s){v=!0;break}if(m.score=m.score*xk(s,c,S),m.score<=r)break}m.suppressBeginIndex=h.length,v||(m.score===x?(h.push(y),d.push(m.score)):m.score>r&&dk(u,m,Ay))}const p=h.length,f=e-p;o&&f>0&&(h.push(...new Array(f).fill(0)),d.push(...new Array(f).fill(0)));const g={selectedIndices:h};return a&&(g.selectedScores=d),l&&(g.validOutputs=p),g}function gk(n,t,e){const s=n.subarray(4*t,4*t+4),r=n.subarray(4*e,4*e+4),i=Math.min(s[0],s[2]),a=Math.min(s[1],s[3]),o=Math.max(s[0],s[2]),l=Math.max(s[1],s[3]),u=Math.min(r[0],r[2]),c=Math.min(r[1],r[3]),h=Math.max(r[0],r[2]),d=Math.max(r[1],r[3]),p=(o-i)*(l-a),f=(h-u)*(d-c);if(p<=0||f<=0)return 0;const g=Math.max(i,u),m=Math.max(a,c),x=Math.min(o,h),y=Math.min(l,d),b=Math.max(x-g,0)*Math.max(y-m,0);return b/(p+f-b)}function xk(n,t,e){const s=Math.exp(t*e*e);return e<=n?s:0}function Ay(n,t){return n.score-t.score||n.score===t.score&&t.boxIndex-n.boxIndex}function cf(){return(cf=(0,N.A)(function*(n,t,e,s=.5,r=Number.NEGATIVE_INFINITY){const i=$(n,"boxes","nonMaxSuppressionAsync"),a=$(t,"scores","nonMaxSuppressionAsync"),o=va(i,a,e,s,r);e=o.maxOutputSize,s=o.iouThreshold,r=o.scoreThreshold;const l=yield Promise.all([i.data(),a.data()]),u=l[0],c=l[1],{selectedIndices:h}=af(u,c,e,s,r);return i!==n&&i.dispose(),a!==t&&a.dispose(),Un(h,"int32")})).apply(this,arguments)}const wk=U({nonMaxSuppressionWithScore_:function vk(n,t,e,s=.5,r=Number.NEGATIVE_INFINITY,i=0){const a=$(n,"boxes","nonMaxSuppression"),o=$(t,"scores","nonMaxSuppression"),l=va(a,o,e,s,r,i),h=V.runKernel($d,{boxes:a,scores:o},{maxOutputSize:e=l.maxOutputSize,iouThreshold:s=l.iouThreshold,scoreThreshold:r=l.scoreThreshold,softNmsSigma:i=l.softNmsSigma});return{selectedIndices:h[0],selectedScores:h[1]}}});function hf(){return(hf=(0,N.A)(function*(n,t,e,s=.5,r=Number.NEGATIVE_INFINITY,i=0){const a=$(n,"boxes","nonMaxSuppressionAsync"),o=$(t,"scores","nonMaxSuppressionAsync"),l=va(a,o,e,s,r,i);e=l.maxOutputSize,s=l.iouThreshold,r=l.scoreThreshold,i=l.softNmsSigma;const u=yield Promise.all([a.data(),o.data()]),c=u[0],h=u[1],{selectedIndices:d,selectedScores:p}=lf(c,h,e,s,r,i);return a!==n&&a.dispose(),o!==t&&o.dispose(),{selectedIndices:Un(d,"int32"),selectedScores:Un(p)}})).apply(this,arguments)}const Ck=U({nonMaxSuppressionPadded_:function Sk(n,t,e,s=.5,r=Number.NEGATIVE_INFINITY,i=!1){const a=$(n,"boxes","nonMaxSuppression"),o=$(t,"scores","nonMaxSuppression"),l=va(a,o,e,s,r,null),f=V.runKernel(Rd,{boxes:a,scores:o},{maxOutputSize:l.maxOutputSize,iouThreshold:l.iouThreshold,scoreThreshold:l.scoreThreshold,padToMaxOutputSize:i});return{selectedIndices:f[0],validOutputs:f[1]}}});function df(){return(df=(0,N.A)(function*(n,t,e,s=.5,r=Number.NEGATIVE_INFINITY,i=!1){const a=$(n,"boxes","nonMaxSuppressionAsync"),o=$(t,"scores","nonMaxSuppressionAsync"),l=va(a,o,e,s,r,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,[d,p]=yield Promise.all([a.data(),o.data()]),{selectedIndices:f,validOutputs:g}=of(d,p,u,c,h,i);return a!==n&&a.dispose(),o!==t&&o.dispose(),{selectedIndices:Un(f,"int32"),validOutputs:ut(g,"int32")}})).apply(this,arguments)}const Ry=U({resizeBilinear_:function kk(n,t,e=!1,s=!1){const r=$(n,"images","resizeBilinear");T(3===r.rank||4===r.rank,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${r.rank}.`),T(2===t.length,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`),T(!1===s||!1===e,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let i=r,a=!1;3===r.rank&&(a=!0,i=j(r,[1,r.shape[0],r.shape[1],r.shape[2]]));const[]=t,u=V.runKernel(Fu,{images:i},{alignCorners:e,halfPixelCenters:s,size:t});return a?j(u,[u.shape[1],u.shape[2],u.shape[3]]):u}}),$y=U({resizeNearestNeighbor_:function Nk(n,t,e=!1,s=!1){const r=$(n,"images","resizeNearestNeighbor");T(3===r.rank||4===r.rank,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${r.rank}.`),T(2===t.length,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`),T("float32"===r.dtype||"int32"===r.dtype,()=>"`images` must have `int32` or `float32` as dtype"),T(!1===s||!1===e,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let i=r,a=!1;3===r.rank&&(a=!0,i=j(r,[1,r.shape[0],r.shape[1],r.shape[2]]));const[]=t,u=V.runKernel(Pu,{images:i},{alignCorners:e,halfPixelCenters:s,size:t});return a?j(u,[u.shape[1],u.shape[2],u.shape[3]]):u}}),Rk=U({bincount_:function Ak(n,t,e){const s=$(n,"x","bincount"),r=$(t,"weights","bincount");return T("int32"===s.dtype,()=>`Error in bincount: input dtype must be int32, but got ${s.dtype}`),T(e>=0,()=>`size must be non-negative, but got ${e}.`),T(r.size===s.size||0===r.size,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${s.shape}, weights shape: ${r.shape}.`),V.runKernel(id,{x:s,weights:r},{size:e})}}),wa=U({lessEqual_:function $k(n,t){let e=$(n,"a","lessEqual","string_or_numeric"),s=$(t,"b","lessEqual","string_or_numeric");return[e,s]=un(e,s),ht(e.shape,s.shape),V.runKernel(mu,{a:e,b:s})}}),Dy=U({round_:function Dk(n){const e={x:$(n,"x","round")};return V.runKernel($o,e)}}),Fk=U({threshold_:function Ok(n,t="binary",e=!1,s=.5){const r=$(n,"image","threshold"),l=r.shape[0]*r.shape[1];let c,h,d,p,u=L(Un([s]),255);if(T(3===r.rank,()=>`Error in threshold: image must be rank 3,but got rank ${r.rank}.`),T(3===r.shape[2]||1===r.shape[2],()=>`Error in threshold: image color channel must be equal to 3 or 1but got ${r.shape[2]}.`),T("int32"===r.dtype||"float32"===r.dtype,()=>`Error in dtype: image dtype must be int32 or float32,but got dtype ${r.dtype}.`),T("otsu"===t||"binary"===t,()=>`Method must be binary or otsu, but was ${t}`),3===r.shape[2]){[c,h,d]=bs(r,[1,1,1],-1);const m=L(c,.2989),x=L(h,.587),y=L(d,.114);p=me(me(m,x),y)}else p=n;"otsu"===t&&(u=function Pk(n,t){let i,a,o,l,u,c,e=Un([-1]),s=Un([0]),r=Un([0]);for(let h=0;h`Error in transform: image must be rank 4,but got rank ${a.rank}.`),T(2===o.rank&&(o.shape[0]===a.shape[0]||1===o.shape[0])&&8===o.shape[1],()=>"Error in transform: Input transform should be batch x 8 or 1 x 8"),T(null==i||2===i.length,()=>`Error in transform: outputShape must be [height, width] or null, but got ${i}.`),V.runKernel(Xd,{image:a,transforms:o},{interpolation:e,fillMode:s,fillValue:r,outputShape:i})}}),vc=U({less_:function Vk(n,t){let e=$(n,"a","less","string_or_numeric"),s=$(t,"b","less","string_or_numeric");return[e,s]=un(e,s),ht(e.shape,s.shape),V.runKernel(fu,{a:e,b:s})}}),Bk=U({bandPart_:function zk(n,t,e){const s=$(n,"a","bandPart");T(s.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${s.rank}.`);const r=s.shape,[i,a]=s.shape.slice(-2);let o,l;"number"==typeof t?(T(t%1==0,()=>`bandPart(): numLower must be an integer, got ${t}.`),T(t<=i,()=>`bandPart(): numLower (${t}) must not be greater than the number of rows (${i}).`),o=$(t<0?i:t,"numLower","bandPart")):(T("int32"===t.dtype,()=>"bandPart(): numLower's dtype must be an int32."),o=Yn(vc(t,0),i,ya(t,i))),"number"==typeof e?(T(e%1==0,()=>`bandPart(): numUpper must be an integer, got ${e}.`),T(e<=a,()=>`bandPart(): numUpper (${e}) must not be greater than the number of columns (${a}).`),l=$(e<0?a:e,"numUpper","bandPart")):(T("int32"===e.dtype,()=>"bandPart(): numUpper's dtype must be an int32."),l=Yn(vc(e,0),a,ya(e,a)));const u=j(ll(0,i,1,"int32"),[-1,1]),c=ll(0,a,1,"int32"),h=ze(u,c),d=Cr(wa(h,o),Pi(h,Jt(l))),p=Rn([i,a],s.dtype);return j(ir(Li(j(s,[-1,i,a])).map(f=>Yn(d,f,p))),r)}});function Oy(n,t,e=null){if(0===n.rank)return kn(n);if(1!==n.rank&&null===e)return Oy(j(n,[-1]),t,e);if(1===n.rank||"number"==typeof e||Array.isArray(e)&&1===e.length){if(1===t)return Ge(kn(n),e);if(t===1/0)return Ws(kn(n),e);if(t===-1/0)return hc(kn(n),e);if("euclidean"===t||2===t)return zn(Ge(Ri(kn(n),ut(2,"int32")),e));throw new Error(`Error in norm: invalid ord value: ${t}`)}if(Array.isArray(e)&&2===e.length){if(1===t)return Ws(Ge(kn(n),e[0]),e[1]-1);if(t===1/0)return Ws(Ge(kn(n),e[1]),e[0]);if(t===-1/0)return hc(Ge(kn(n),e[1]),e[0]);if("fro"===t||"euclidean"===t)return zn(Ge(Kt(n),e));throw new Error(`Error in norm: invalid ord value: ${t}`)}throw new Error(`Error in norm: invalid axis: ${e}`)}const wc=U({norm_:function Uk(n,t="euclidean",e=null,s=!1){const r=Oy(n=$(n,"x","norm"),t,e);let i=r.shape;if(s){const a=pt(e,n.shape);i=hn(r.shape,a)}return j(r,i)}}),Gk=U({gramSchmidt_:function Wk(n){let t;if(Array.isArray(n)){t=!1,T(null!=n&&n.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");const r=n[0].shape[0];for(let i=1;i`Gram-Schmidt: Non-unique lengths found in the input vectors: (${n[i].shape[0]} vs. ${r})`)}else t=!0,n=bs(n,n.shape[0],0).map(r=>cl(r,[0]));T(n.length<=n[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${n.length}) exceeds number of dimensions (${n[0].shape[0]}).`);const e=[],s=n;for(let r=0;r{let i=s[r];if(r>0)for(let a=0;a{T(2===n.shape.length,()=>`qr2d() requires a 2D Tensor, but got a ${n.shape.length}D Tensor.`);const e=n.shape[0],s=n.shape[1];let r=fy(e),i=Ai(n);const a=Qr([[1]],[1,1]);let o=Ai(a);const l=e>=s?s:e;for(let u=0;u{const p=Bt(i,[u,u],[e-u,1]),f=wc(p),g=Bt(i,[u,u],[1,1]),m=Yn(ys(g,0),Qr([[-1]]),Qr([[1]])),x=ze(g,L(m,f)),y=je(p,x);o=1===y.shape[0]?Ai(a):Bn([a,Bt(y,[1,0],[y.shape[0]-1,y.shape[1]])],0);const b=Jt(je(Dt(m,x),f)),v=Bt(i,[u,0],[e-u,s]),w=L(b,o),S=kt(o);if(0===u)i=ze(v,Dt(w,Dt(S,v)));else{const D=ze(v,Dt(w,Dt(S,v)));i=Bn([Bt(i,[0,0],[u,s]),D],0)}const I=kt(w),k=Bt(r,[0,u],[e,r.shape[1]-u]);if(0===u)r=ze(k,Dt(Dt(k,o),I));else{const D=ze(k,Dt(Dt(k,o),I));r=Bn([Bt(r,[0,0],[e,u]),D],1)}return[o,i,r]}),xt([c,h,d])}return!t&&e>s&&(r=Bt(r,[0,0],[e,s]),i=Bt(i,[0,0],[s,s])),[r,i]})}const jk=U({qr_:function Hk(n,t=!1){if(T(n.rank>=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${n.rank}`),2===n.rank)return Py(n,t);{const e=n.shape.slice(0,n.shape.length-2).reduce((l,u)=>l*u),s=Li(j(n,[e,n.shape[n.shape.length-2],n.shape[n.shape.length-1]]),0),r=[],i=[];return s.forEach(l=>{const[u,c]=Py(l,t);r.push(u),i.push(c)}),[j(ir(r,0),n.shape),j(ir(i,0),n.shape)]}}}),Fy=U({squaredDifference_:function rN(n,t){let e=$(n,"a","squaredDifference"),s=$(t,"b","squaredDifference");return[e,s]=un(e,s),ht(e.shape,s.shape),V.runKernel(Bo,{a:e,b:s},{})}}),ar={flipLeftRight:nk,grayscaleToRGB:rk,resizeNearestNeighbor:$y,resizeBilinear:Ry,rgbToGrayscale:ok,rotateWithOffset:uk,cropAndResize:ek,nonMaxSuppression:hk,nonMaxSuppressionAsync:function yk(n,t,e){return cf.apply(this,arguments)},nonMaxSuppressionWithScore:wk,nonMaxSuppressionWithScoreAsync:function _k(n,t,e){return hf.apply(this,arguments)},nonMaxSuppressionPadded:Ck,nonMaxSuppressionPaddedAsync:function Ik(n,t,e){return df.apply(this,arguments)},threshold:Fk,transform:Mk},NN={bandPart:Bk,gramSchmidt:Gk,qr:jk},_a=class AN{static sgd(t){return new Tp(t)}static momentum(t,e,s=!1){return new zx(t,e,s)}static rmsprop(t,e=.9,s=0,r=null,i=!1){return new Bx(t,e,s,r,i)}static adam(t=.001,e=.9,s=.999,r=null){return new Mx(t,e,s,r)}static adadelta(t=.001,e=.95,s=null){return new Fx(t,e,s)}static adamax(t=.002,e=.9,s=.999,r=null,i=0){return new Vx(t,e,s,r,i)}static adagrad(t,e=.1){return new Lx(t,e)}},RN=typeof requestAnimationFrame<"u"?requestAnimationFrame:typeof setImmediate<"u"?setImmediate:n=>n();function Ly(){return new Promise(n=>RN(()=>n()))}function pf(n,t){const e=n[0].length;n.forEach((r,i)=>{T(r.length===e,()=>`Error in concat${e}D: rank of tensors[${i}] must be the same as the rank of the rest (${e})`)}),T(t>=0&&t`Error in concat${e}D: axis must be between 0 and ${e-1}.`);const s=n[0];n.forEach((r,i)=>{for(let a=0;a`Error in concat${e}D: Shape of tensors[${i}] (${r}) does not match the shape of the rest (${s}) along the non-concatenated axis ${i}.`)})}function or(n,t){const e=n[0].slice();for(let s=1;s=0)if(o>=0){if(o!==i)throw new Error(`rt input.shape and shape=${t} are incompatible: rt input.shape[${r+n}] = ${i} but shape[${r+n}] = ${o}`)}else s[a]=i}return s}function Vy(n){const t={FIRST_DIM_SIZE:lr.FIRST_DIM_SIZE,VALUE_ROWIDS:lr.VALUE_ROWIDS,ROW_LENGTHS:lr.ROW_LENGTHS,ROW_SPLITS:lr.ROW_SPLITS,ROW_LIMITS:lr.ROW_LIMITS,ROW_STARTS:lr.ROW_STARTS},e=[];for(const s of n){if(!(s in t))break;e.push(t[s])}return e}function zy(n){return 0===n.length?0:n[0]===lr.FIRST_DIM_SIZE?n.length-1:n.length}function By(n,t){if(null==n||null==t)return;const e=n.length,s=t.length;if(e>=s)throw new Error(`defaultValue.shape=${n} and ragged tensor flatValues.shape=${t}, are incompatible: defaultValue.rank = ${e} must be less than ragged tensor input flatValues.rank = ${s})`);for(let r=0;r=0&&a>=0&&1!==i&&i!==a)throw new Error(`defaultValue.shape=${n}, and ragged tensor input flatValues.shape=${t} are incompatible: defaultValue.shape[${r-n.length}] = ${i} but ragged tensor input.flatValues.shape[${r-n.length}] = ${a}`)}}const ff=30;function _c(n){return n<=ff?n:vi(n,Math.floor(Math.sqrt(n)))}function mf(n,t,e){return[e*("number"==typeof n?n:n[0]),t*("number"==typeof n?n:n[1])]}function pl(n,t,e,s=!0){let r=[];if(s)r=r.concat(t.slice(0)),r.push(n[0]/e),r=r.concat(n.slice(1));else{r=r.concat(n[0]);const i=t.length;for(let a=0;a=2*t+1||a%2==1?i.push(a):r.push(a);s.push(...r),s.push(0),s.push(...i)}return s}function ml(n,t,e,s=!0){const r=[];r.push(s?n[0]/e:n[0]*e);for(let i=1;ie)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[s-1]} vs. ${e}`);if(0===K(n.shape))throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${n.shape}.`);const r=t.shape,i=r[r.length-1];let a=1;for(let h=0;hh/u),1].slice(0,i);return[l,a,u,c]}function Uy(n,t,e){const s=t.rank>1?t.shape[t.rank-1]:1,r=t.rank>1?t.rank-1:1,i=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${e.shape}, indices.shape: ${t.shape}, shape: ${n}, sliceDim: ${s}, and batchDim: ${r}.`;if(e.rank1?t.shape[s-1]:1,i=e.length;let a=1;for(let h=r;h/g,qy=",",Zy="...";function Ef(n,t){const e=((n=n.replace(/\s/g,"")).length-n.replace(DN,"").length)/If.length;if(e<1)throw new Error("Equations without an arrow are not supported.");if(e>1)throw new Error(`Equation must contain exactly one arrow ("${If}").`);const[s,r]=n.split(If);T(-1===s.indexOf(Zy),()=>`The ellipsis notation ("${Zy}") is not supported yet.`);const i=s.split(qy),a=i.length;if(t!==a)throw new Error(`Expected ${a} input tensors, received ${t}`);if(a>2)throw new Error("Support for more than 2 input tensors is not implemented yet.");const o=[];for(let d=0;d-1!==f.indexOf(p)))throw new Error(`Output subscripts contain the label ${p} not present in the input subscripts.`);-1===o.indexOf(p)&&o.push(p)}for(let d=0;d-1!==r),{permutationIndices:e,expandDims:s}}function Nf(n,t,e){const s=new Array(n);for(let r=0;r`Expected dimension ${s[t[r][a]]} at axis ${a} of input shaped ${JSON.stringify(i)}, but got dimension ${i[a]}`)}}function Af(n,t){const e=n,s=[];let r=0;0===n.length&&e.push(-1),r=n.length+1;for(let a=0;at===e)}function ON(n,t){const e=[];for(let s=0;s"Number of splits must evenly divide the axis."),s=new Array(t).fill(n.shape[e]/t);else{T(t.reduce((a,o)=>(-1===o&&(a+=1),a),0)<=1,()=>"There should be only one negative value in split array.");const i=t.indexOf(-1);if(-1!==i){const a=t.reduce((o,l)=>l>0?o+l:o);t[i]=n.shape[e]-a}T(n.shape[e]===t.reduce((a,o)=>a+o),()=>"The sum of sizes must match the size of the axis dimension."),s=t}return s}function Yy(n){return`Received SparseTensor with denseShape[0] = 0 but\n indices.shape[0] = ${n}`}function Qy(n,t){return`indices(${n}, 0) is invalid: ${t} < 0`}function Jy(n,t,e){return`indices(${n}, 0) is invalid: ${t} >= ${e}`}function eb(n,t){return`only one output dimension may be -1, not both ${n} and ${t}`}function tb(n,t){return`size ${n} must be non-negative, not ${t}`}function nb(){return"reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero"}function sb(n,t){return`Input to reshape is a SparseTensor with ${K(n)}\n dense values, but the requested shape requires a multiple of ${K(t)}. inputShape=${n} outputShape= ${t}`}function rb(n,t){return`Input to reshape is a tensor with ${K(n)} dense values, but the requested shape has ${K(t)}. inputShape=${n} outputShape=${t}`}function Df(){return"segment ids must be >= 0"}function ib(){return"segment ids are not increasing"}function ab(n,t){return`Segment id ${n} out of range [0, ${t}), possibly because segmentIds input is not sorted.`}function ob(n,t,e){return`Bad: indices[${n}] == ${t} out of range [0, ${e})`}function lb(n,t){let s,e=!1;for(n<=ff?(s=n,e=!0):s=vi(n,Math.floor(Math.sqrt(n)));!e;)s>t||s===n?e=!0:s=vi(n,s+1);return s}function ub(n,t,e){const s=[],r=n.length;for(let i=0;ir))throw new Error(`Expect batchDims in the range of [-${r}, ${r}], but got ${s}`);if(s<0&&(s+=r),s>i)throw new Error(`batchDims (${s}) must be less than rank(x) (\n ${i}).`);if(eWr(t))}catch(t){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${t}`)}}function cb(n){return n.map(t=>Ur(t))}function hb(n,t){const e=[];for(let i=0;i{const[e]=t;return{x:()=>L(n,hl(ke(e,"float32"),-1))}}},PN={kernelName:jn,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>{const s=Kt(ke(e,"float32")),r=zn(ze(ut(1),s));return Jt(je(n,r))}}}},FN={kernelName:ps,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>{const s=zn(ze(Kt(ke(e,"float32")),1));return je(n,s)}}}},LN={kernelName:oa,inputsToSave:["a","b"],gradFunc:(n,t)=>{const[e,s]=t,r=ht(e.shape,s.shape);return{a:()=>{let o=n;const l=bn(e.shape,r);return l.length>0&&(o=Ge(o,l)),j(o,e.shape)},b:()=>{let o=n;const l=bn(s.shape,r);return l.length>0&&(o=Ge(o,l)),j(o,s.shape)}}}},MN={kernelName:ed,saveAllInputs:!0,gradFunc:(n,t)=>{const e={};return t.forEach((s,r)=>{e[r]=()=>n.clone()}),e}},VN={kernelName:Kl,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>Et(e)}}},zN={kernelName:ql,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>Et(e)}}},BN={kernelName:Qa,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>je(n,zn(ze(ut(1),Kt(ke(e,"float32")))))}}},UN={kernelName:Ja,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>{const s=zn(me(ut(1),Kt(ke(e,"float32"))));return je(n,s)}}}},WN={kernelName:no,inputsToSave:["a","b"],gradFunc:(n,t)=>{const[e,s]=t,r=ht(e.shape,s.shape);return{a:()=>{const o=me(Kt(e),Kt(s));let l=L(n,je(s,o));const u=bn(e.shape,r);return u.length>0&&(l=Ge(l,u)),j(l,e.shape)},b:()=>{const o=me(Kt(e),Kt(s));let l=Jt(L(n,je(e,o)));const u=bn(s.shape,r);return u.length>0&&(l=Ge(l,u)),j(l,s.shape)}}}},GN={kernelName:eo,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>je(n,me(Kt(ke(e,"float32")),1))}}},HN={kernelName:to,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>je(n,ze(ut(1),Kt(ke(e,"float32"))))}}},XN=U({avgPool3dGrad_:function jN(n,t,e,s,r,i){const a=$(n,"dy","avgPool3dGrad"),o=$(t,"input","avgPool3dGrad");let l=a,u=o,c=!1;4===o.rank&&(c=!0,l=j(a,[1,a.shape[0],a.shape[1],a.shape[2],a.shape[3]]),u=j(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),T(5===l.rank,()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${l.rank}.`),T(5===u.rank,()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${u.rank}.`),qn("avgPool3dGrad",r,i);const p=V.runKernel(rd,{dy:l,input:u},{filterSize:e,strides:s,pad:r,dimRoundingMode:i});return c?j(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}}),KN={kernelName:Yl,inputsToSave:["x"],gradFunc:(n,t,e)=>{const[s]=t,{filterSize:r,strides:i,pad:a,dimRoundingMode:o}=e;return{x:()=>XN(n,s,r,i,a,o)}}},ZN=U({avgPoolGrad_:function qN(n,t,e,s,r){const i=$(n,"dy","avgPoolGrad"),a=$(t,"input","avgPoolGrad");T(a.rank===i.rank,()=>`Rank of input (${a.rank}) does not match rank of dy (${i.rank})`);let o=a,l=i,u=!1;3===a.rank&&(u=!0,o=j(a,[1,a.shape[0],a.shape[1],a.shape[2]]),l=j(i,[1,i.shape[0],i.shape[1],i.shape[2]])),T(4===l.rank,()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${l.rank}.`),T(4===o.rank,()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${o.rank}.`);const d=V.runKernel(sd,{dy:l,input:o},{filterSize:e,strides:s,pad:r});return u?j(d,[d.shape[1],d.shape[2],d.shape[3]]):d}}),YN={kernelName:Zl,inputsToSave:["x"],gradFunc:(n,t,e)=>{const[s]=t,{filterSize:r,strides:i,pad:a}=e;return{x:()=>ZN(n,s,r,i,a)}}},QN={kernelName:Ql,inputsToSave:["a","b"],gradFunc:(n,t,e)=>{const[s,r]=t,{transposeA:i,transposeB:a}=e;return i||a?!i&&a?{a:()=>Dt(n,r,!1,!1),b:()=>Dt(n,s,!0,!1)}:i&&!a?{a:()=>Dt(r,n,!1,!0),b:()=>Dt(s,n,!1,!1)}:{a:()=>Dt(r,n,!0,!0),b:()=>Dt(n,s,!0,!0)}:{a:()=>Dt(n,r,!1,!0),b:()=>Dt(s,n,!0,!1)}}},Pf=U({spaceToBatchND_:function JN(n,t,e){const s=$(n,"x","spaceToBatchND");return T(s.rank>=1+t.length,()=>`input rank ${s.rank} should be > than [blockShape] ${t.length}`),T(e.length===t.length,()=>`paddings.shape[0] ${e.length} must be equal to [blockShape] ${t.length}`),T(s.shape.reduce((a,o,l)=>l>0&&l<=t.length?a&&(o+e[l-1][0]+e[l-1][1])%t[l-1]==0:a,!0),()=>`input spatial dimensions ${s.shape.slice(1)} with paddings ${e.toString()} must be divisible by blockShapes ${t.toString()}`),V.runKernel(Bu,{x:s},{blockShape:t,paddings:e})}}),e2={kernelName:Jl,gradFunc:(n,t,e)=>{const{blockShape:s,crops:r}=e;return{x:()=>Pf(n,s,r)}}},t2={kernelName:"BroadcastTo",gradFunc:(n,t,e)=>{const r=e.inputShape,i=e.shape,a=Array.from(i);for(let l=r.length-1;l>=0;l--)if(r[l]===i[l])a[l]=1;else if(1!==r[l])throw new Error(`broadcastTo(): [${r}] cannot be broadcast to [${i}].`);const o=[];for(let l=0;l1&&o.push(l);return{x:()=>Ge(n,o,!0)}}},n2={kernelName:so,gradFunc:n=>({x:()=>n.clone()})},s2={kernelName:ro,gradFunc:n=>({x:()=>Et(n)})},r2={kernelName:ao,inputsToSave:["x"],gradFunc:(n,t,e)=>{const[s]=t,{clipValueMin:r,clipValueMax:i}=e;return{x:()=>Yn(Cr(Pi(s,r),wa(s,i)),n,Et(n))}}},i2={kernelName:eu,inputsToSave:["x"],gradFunc:db.gradFunc},a2={kernelName:tu,saveAllInputs:!0,gradFunc:(n,t,e)=>{const s=t.map(l=>l.shape),{axis:r}=e,i=pt(r,t[0].shape)[0],a=s.map(l=>l[i]);return bs(n,a,i).map(l=>()=>l)}},o2={kernelName:nu,inputsToSave:["x","filter"],gradFunc:(n,t,e)=>{const[s,r]=t,{dilations:i,strides:a,pad:o,dataFormat:l}=e;return T(Zr(i),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${i}'`),{x:()=>zp(s.shape,n,r,a,o,l),filter:()=>rf(s,n,r.shape,a,o,l)}}},l2={kernelName:su,inputsToSave:["dy","filter"],gradFunc:(n,t,e)=>{const[s,r]=t,{strides:i,pad:a,dataFormat:o,dimRoundingMode:l}=e;return{dy:()=>Oi(n,r,i,a,o,1,l),filter:()=>rf(n,s,r.shape,i,a,o,l)}}},c2=U({conv3DBackpropFilter_:function u2(n,t,e,s,r){let i=n;4===n.rank&&(i=j(n,[1,n.shape[0],n.shape[1],n.shape[2],n.shape[3]]));let a=t;return 4===a.rank&&(a=j(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),T(5===i.rank,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${i.shape}.`),T(5===a.rank,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${a.shape}.`),T(5===e.length,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${e}.`),T(i.shape[4]===e[3],()=>`Error in conv3dDerFilter: depth of input ${i.shape[4]}) must match input depth in filter (${e[3]}.`),T(a.shape[4]===e[4],()=>`Error in conv3dDerFilter: depth of dy (${a.shape[4]}) must match output depth for filter (${e[4]}).`),V.runKernel(ud,{x:i,dy:a},{strides:s,pad:r,filterShape:e})}}),h2={kernelName:ru,inputsToSave:["x","filter"],gradFunc:(n,t,e)=>{const{dilations:s,strides:r,pad:i}=e;T(Zr(s),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);const[a,o]=t;return{x:()=>hy(a.shape,n,o,r,i),filter:()=>c2(a,n,o.shape,r,i)}}},pb=U({sin_:function d2(n){const e={x:$(n,"x","sin","float32")};return V.runKernel(Po,e)}}),p2={kernelName:oo,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>L(Jt(pb(ke(e,"float32"))),n)}}},fb=U({sinh_:function f2(n){const e={x:$(n,"x","sinh")};return V.runKernel(Fo,e)}}),m2={kernelName:lo,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>L(fb(ke(e,"float32")),n)}}},mb=U({cumsum_:function g2(n,t=0,e=!1,s=!1){const i={x:$(n,"x","cumsum")};return V.runKernel(iu,i,{axis:t,exclusive:e,reverse:s})}}),x2={kernelName:iu,inputsToSave:["x"],gradFunc:(n,t,e)=>{const[s]=t,{axis:r,exclusive:i,reverse:a}=e;return{x:()=>{const o=rn([r],s.rank);let l=mb(n,r,i,!a);return null!=o&&(l=kt(l,o)),l}}}},y2={kernelName:au,inputsToSave:["x","filter"],gradFunc:(n,t,e)=>{const{dilations:s,strides:r,pad:i,dimRoundingMode:a}=e,o=s??[1,1];T(Zr(o),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${o}'`);const[l,u]=t;return T(4===l.rank,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${l.rank}.`),T(4===u.rank,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${u.rank}.`),T(l.shape[3]===u.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${l.shape[3]}) must match the inChannels dimension in filter ${u.shape[2]}.`),T(Pn(r,o),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${r} and dilations '${o}'.`),qn("depthwiseConv2d",i,a),{x:()=>Cy(l.shape,n,u,r,i,o,a),filter:()=>Sy(l,n,u.shape,r,i,o,a)}}},b2={kernelName:ou,inputsToSave:["x","filter"],gradFunc:(n,t,e)=>{const[s,r]=t,i={x:s,filter:r,dy:n},a={x:s,filter:r,dy:n};return{x:()=>V.runKernel(xd,i,e),filter:()=>V.runKernel(yd,a,e)}}},v2={kernelName:co,outputsToSave:[!0],gradFunc:(n,t)=>{const[e]=t,s={dy:n,y:e};return{x:()=>V.runKernel(wd,s)}}},w2={kernelName:ho,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t,s=L(xs(Jt(Kt(e))),2/Math.sqrt(Math.PI));return{x:()=>L(n,s)}}},_2={kernelName:po,outputsToSave:[!0],gradFunc:(n,t)=>{const[e]=t;return{x:()=>L(n,e)}}},T2={kernelName:uu,inputsToSave:["input"],gradFunc:(n,t)=>{const[e]=t;return{input:()=>j(n,e.shape)}}},S2={kernelName:fo,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>L(n,xs(e))}}},C2={kernelName:mo,gradFunc:n=>({x:()=>Et(n)})},I2={kernelName:go,inputsToSave:["a","b"],gradFunc:(n,t)=>{const[e,s]=t,r=ht(e.shape,s.shape);return{a:()=>{const o=je(n,ke(s,"float32")),l=bn(e.shape,r);return l.length>0?j(Ge(o,l),e.shape):o},b:()=>{let o=L(n,ke(e,"float32"));const l=bn(s.shape,r);l.length>0&&(o=j(Ge(o,l),s.shape));const u=Kt(s);return Jt(je(o,ke(u,"float32")))}}}},gb=U({rsqrt_:function E2(n){const e={x:$(n,"x","rsqrt","float32")};return V.runKernel(Do,e)}}),k2={kernelName:cu,inputsToSave:["x","mean","variance","scale"],gradFunc:(n,t,e)=>{const{varianceEpsilon:s}=e,[r,i,a,o]=t,l=o??ut(1),u=bn(i.shape,r.shape),c=[];if(1===i.rank){for(let v=0;vj(L(L(n,1===i.rank?Us(j(p,[1,1,1,i.shape[0]]),c):p),l),r.shape),mean:()=>{let v=L(L(p,ut(-1)),d);return 1===i.rank&&(v=Ge(v,u)),j(v,i.shape)},variance:()=>{let v=L(L(f,h),d);return 1===i.rank&&(v=Ge(v,u)),j(v,i.shape)},scale:()=>{const v=L(h,p);let w=L(n,v);return 1===i.rank&&(w=Ge(w,u)),j(w,i.shape)},offset:()=>{let v=n;return 1===i.rank&&(v=Ge(v,u)),j(v,i.shape)}}}},xb=U({unsortedSegmentSum_:function N2(n,t,e){const s=$(n,"x","unsortedSegmentSum"),r=$(t,"segmentIds","unsortedSegmentSum","int32");return T(St(e),()=>"numSegments must be of dtype int"),V.runKernel(ju,{x:s,segmentIds:r},{numSegments:e})}}),A2={kernelName:hu,inputsToSave:["x","indices"],gradFunc:(n,t,e)=>{const[s,r]=t,{axis:i,batchDims:a}=e,o=pt(i,s.shape)[0],l=(u,c,h)=>()=>{const d=u.shape,p=c.size,f=d.slice(0,o),g=f.length,m=d.slice(i,d.length).slice(1),x=m.length,y=yb(0,g),b=yb(g+1,g+1+x),v=bb([f,[p],m]),w=j(h,v),S=j(c,[p]),I=bb([[g],y,b]),k=kt(w,I);let D=xb(k,S,u.shape[o]);const P=Yr(I);return D=kt(D,P),D};if(1===a){const c=s.split(s.shape[0],0);return{x:()=>ir(c.map((p,f)=>l(p,r.slice(f,1),n.slice(f,1))())).reshape(s.shape),indices:()=>r}}return{x:l(s,r,n),indices:()=>r}}};function yb(n,t){const e=[];for(let s=n;s{const[e,s]=t;return{a:()=>Et(e),b:()=>Et(s)}}},$2={kernelName:yo,gradFunc:n=>({x:()=>ke(n,"float32")})},D2={kernelName:bo,gradFunc:n=>({x:()=>Et(n)})},O2={kernelName:vo,gradFunc:n=>({x:()=>Et(n)})},P2={kernelName:wo,gradFunc:n=>({x:()=>Et(n)})},F2={kernelName:pu,inputsToSave:["x"],gradFunc:(n,t,e)=>{const[s]=t,{alpha:r}=e,i=ys(s,0);return{x:()=>Yn(i,n,L(n,r))}}},L2={kernelName:To,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>je(n,me(e,1))}}},M2={kernelName:_o,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>je(n,ke(e,"float32"))}}},V2={kernelName:"LogSoftmax",inputsToSave:[],outputsToSave:[!0],gradFunc:(n,t,e)=>{const[s]=t,{axis:r}=e;return{logits:()=>{const a=xs(s);return ze(n,L(Ge(n,r,!0),a))}}}},B2=U({localResponseNormalizationBackprop_:function z2(n,t,e,s=5,r=1,i=1,a=.5){return V.runKernel(Ed,{x:n,y:t,dy:e},{depthRadius:s,bias:r,alpha:i,beta:a})}}),U2={kernelName:bu,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(n,t,e)=>{const[s,r]=t,{depthRadius:i,bias:a,alpha:o,beta:l}=e;return{x:()=>B2(s,r,n,i,a,o,l)}}};function vb(n,t,e,s){return t.rankL(n,ke(rr(e,t),n.dtype))}}const wb={kernelName:vu,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(n,t,e)=>{const s=e,{reductionIndices:r}=s,i=t[0],l=vb(n,t[1],i,pt(r,i.shape));return{x:()=>l.x()}}},W2={kernelName:So,inputsToSave:["a","b"],gradFunc:(n,t)=>{const[e,s]=t;return{a:()=>L(n,ke(Pi(e,s),"float32")),b:()=>L(n,ke(vc(e,s),"float32"))}}},H2=U({maxPool3dGrad_:function G2(n,t,e,s,r,i,a){const o=$(n,"dy","maxPool3dGrad"),l=$(t,"input","maxPool3dGrad"),u=$(e,"output","maxPool3dGrad");let c=o,h=l,d=u,p=!1;4===l.rank&&(p=!0,c=j(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]]),h=j(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]]),d=j(u,[1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]])),T(5===c.rank,()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${c.rank}.`),T(5===h.rank,()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${h.rank}.`),T(5===d.rank,()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${d.rank}.`),qn("maxPool3dGrad",i,a);const m=V.runKernel(Nd,{dy:c,input:h,output:d},{filterSize:s,strides:r,pad:i,dimRoundingMode:a});return p?j(m,[m.shape[1],m.shape[2],m.shape[3],m.shape[4]]):m}}),j2={kernelName:_u,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(n,t,e)=>{const[s,r]=t,{filterSize:i,strides:a,pad:o,dimRoundingMode:l}=e;return{x:()=>H2(n,s,r,i,a,o,l)}}},K2=U({maxPoolGrad_:function X2(n,t,e,s,r,i,a){const o=$(n,"dy","maxPoolGrad"),l=$(t,"input","maxPoolGrad"),u=$(e,"output","maxPoolGrad");return T(l.rank===o.rank,()=>`Rank of input (${l.rank}) does not match rank of dy (${o.rank})`),T(4===o.rank,()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${o.rank}.`),T(4===l.rank,()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${l.rank}.`),qn("maxPoolGrad",i,a),V.runKernel(kd,{dy:o,input:l,output:u},{filterSize:s,strides:r,pad:i,dimRoundingMode:a})}}),q2={kernelName:wu,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(n,t,e)=>{const[s,r]=t,{filterSize:i,strides:a,pad:o}=e;return{x:()=>K2(n,s,r,i,a,o)}}},Z2={kernelName:Tu,inputsToSave:["x"],gradFunc:(n,t,e)=>{const[s]=t,{axis:r}=e,i=pt(r,s.shape),l=K(An(s.shape,i)[1]);return{x:()=>{const c=s.shape.slice();i.forEach(p=>{c[p]=1});const h=j(n,c);return je(L(h,Ir(s.shape,"float32")),l)}}}},Y2={kernelName:Su,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(n,t,e)=>{const s=e,{axis:r}=s,[i,a]=t,l=vb(n,a,i,pt(r,i.shape));return{x:()=>l.x()}}},Q2={kernelName:Co,inputsToSave:["a","b"],gradFunc:(n,t)=>{const[e,s]=t;return{a:()=>L(n,ke(wa(e,s),"float32")),b:()=>L(n,ke(ys(e,s),"float32"))}}},J2={kernelName:Cu,inputsToSave:["x"],gradFunc:(n,t,e)=>{const s=t[0],{paddings:r}=e,i=r.map(a=>a[0]);return{x:()=>Bt(n,i,s.shape)}}},eA={kernelName:Io,inputsToSave:["a","b"],gradFunc:(n,t)=>{const[e,s]=t,r=ht(e.shape,s.shape);return{a:()=>{const o=bn(e.shape,r);return o.length>0?j(Ge(n,o),e.shape):n},b:()=>{const o=L(n,Jt(cc(je(e,s)))),l=bn(s.shape,r);return l.length>0?j(Ge(o,l),s.shape):o}}}},tA={kernelName:Eo,inputsToSave:["a","b"],gradFunc:(n,t)=>{const[e,s]=t,r=ht(e.shape,s.shape);return{a:()=>{const o=L(n,ke(s,"float32")),l=bn(e.shape,r);return l.length>0?j(Ge(o,l),e.shape):o},b:()=>{const o=L(n,ke(e,"float32")),l=bn(s.shape,r);return l.length>0?j(Ge(o,l),s.shape):o}}}},nA={kernelName:Iu,gradFunc:n=>({x:()=>Jt(n)})},sA={kernelName:Nu,inputsToSave:["indices"],gradFunc:(n,t)=>{const e=t[0];return{indices:()=>Rn(e.shape,"float32")}}},rA={kernelName:ku,gradFunc:n=>({x:()=>Et(n)})},iA={kernelName:Au,saveAllInputs:!0,gradFunc:(n,t,e)=>{const{axis:s}=e;return Li(n,s).map(i=>()=>i)}},_b={kernelName:Ru,inputsToSave:["x"],gradFunc:(n,t,e)=>{const s=t[0],{paddings:r}=e,i=r.map(a=>a[0]);return{x:()=>Bt(n,i,s.shape)}}},aA={kernelName:ko,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(n,t)=>{const[e,s,r]=t,i=e,a=s,o=ht(i.shape,a.shape);return{a:()=>{const c=ke(a,"float32");let h=L(n,L(c,Ri(i,ze(c,ut(1)))));const d=bn(i.shape,o);return d.length>0&&(h=Ge(h,d)),j(h,i.shape)},b:()=>{const c=ys(i,0),h=Yn(c,Ns(i),Et(i));let d=L(n,L(r,h));const p=bn(a.shape,o);return p.length>0&&(d=Ge(d,p)),j(d,a.shape)}}}},oA={kernelName:$u,inputsToSave:["x","alpha"],gradFunc:(n,t)=>{const[e,s]=t,r=ys(e,0);return{x:()=>Yn(r,n,L(n,s)),alpha:()=>{let i=Yn(r,Et(n),L(n,e));const a=bn(s.shape,n.shape);return a.length>0&&(i=Ge(i,a)),j(i,s.shape)}}}},Ff=U({cumprod_:function lA(n,t=0,e=!1,s=!1){const i={x:$(n,"x","cumprod")};return V.runKernel(hd,i,{axis:t,exclusive:e,reverse:s})}});const hA={kernelName:Du,inputsToSave:["x"],gradFunc:(n,t,e)=>{const[s]=t,{axis:r}=e;let i=[];return i=null==r?s.shape.map((a,o)=>o):"number"==typeof r?[r]:r,{x:()=>function cA(n,t,e){const s=n.shape.length,r=s-e.length,i=rn(e,s);let a=n;null!=i&&(a=kt(n,i));const o=a.shape.slice(),u=o.splice(s-e.length,e.length).reduce((d,p)=>d*p,1);o.push(u);let h=function uA(n,t,e){const s=n.shape.slice();s[e]=1;const r=j(t,s),i=Ff(n,e,!0,!1),a=Ff(n,e,!0,!0),o=L(i,a);return L(r,o)}(a.reshape(o),t,r);if(h=h.reshape(a.shape),null!=i){const d=Yr(i);h=kt(h,d)}return h}(s,n,i)}}},dA={kernelName:uo,inputsToSave:["a","b"],gradFunc:(n,t)=>{const[e,s]=t,r=ht(e.shape,s.shape);return{a:()=>{const o=je(n,ke(s,"float32")),l=bn(e.shape,r);return l.length>0?j(Ge(o,l),e.shape):o},b:()=>{let o=L(n,ke(e,"float32"));const l=bn(s.shape,r);l.length>0&&(o=j(Ge(o,l),s.shape));const u=Kt(s);return Jt(je(o,ke(u,"float32")))}}}},pA={kernelName:No,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>je(n,Jt(Kt(e)))}}},fA={kernelName:Ro,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t,s=L(wa(e,6),hl(e));return{x:()=>L(n,ke(s,"float32"))}}},mA={kernelName:Ao,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>L(n,ke(hl(e),"float32"))}}},gA={kernelName:Ou,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>j(n,e.shape)}}},xA={kernelName:Fu,inputsToSave:["images"],gradFunc:(n,t,e)=>{const[s]=t,r={dy:n,images:s};return{images:()=>V.runKernel(Fd,r,e)}}},yA={kernelName:Pu,inputsToSave:["images"],gradFunc:(n,t,e)=>{const[s]=t,r={dy:n,images:s};return{images:()=>V.runKernel(Pd,r,e)}}},bA={kernelName:Lu,gradFunc:(n,t,e)=>{const{dims:s}=e,r=pt(s,n.shape);return{x:()=>Fi(n,r)}}},vA={kernelName:$o,gradFunc:n=>({x:()=>Et(n)})},wA={kernelName:Do,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>Jt(je(n,L(Ri(e,1.5),2)))}}},Lf=U({logicalNot_:function _A(n){const e={x:$(n,"x","logicalNot","bool")};return V.runKernel(xu,e)}}),TA={kernelName:Mu,inputsToSave:["condition"],gradFunc:(n,t)=>{const[e]=t;return{condition:()=>ke(Et(e),"float32"),t:()=>L(n,ke(e,n.dtype)),e:()=>L(n,ke(Lf(e),n.dtype))}}},SA={kernelName:Oo,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>{const s=ys(e,ut(0)),r=ut(Tc),i=ut(Sc),a=L(n,i),o=L(L(n,r),xs(ke(e,"float32")));return Yn(s,a,o)}}}},CA={kernelName:Mo,outputsToSave:[!0],gradFunc:(n,t)=>{const[e]=t;return{x:()=>L(n,L(e,ze(ut(1),e)))}}},IA={kernelName:Lo,gradFunc:n=>({x:()=>Et(n)})},Mf=U({cos_:function EA(n){const e={x:$(n,"x","cos","float32")};return V.runKernel(oo,e)}}),kA={kernelName:Po,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>L(Mf(ke(e,"float32")),n)}}},Tb=U({cosh_:function NA(n){const e={x:$(n,"x","cosh","float32")};return V.runKernel(lo,e)}}),AA={kernelName:Fo,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>L(Tb(ke(e,"float32")),n)}}},RA={kernelName:Vu,inputsToSave:["x"],gradFunc:(n,t,e)=>{const[s]=t,{begin:r,size:i}=e,a=s.shape,[o,l]=ac(s,r,i),u=[];for(let c=0;cKp(n,u)}}},$A={kernelName:Wu,outputsToSave:[!0],gradFunc:(n,t,e)=>{const[s]=t,{dim:r}=e,a=L(n,s);return{logits:()=>ze(a,L(Ge(a,[r],!0),s))}}},DA={kernelName:Vo,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>L(n,ba(e))}}},Vf=U({batchToSpaceND_:function OA(n,t,e){const s=$(n,"x","batchToSpaceND"),r=t.reduce((o,l)=>o*l);return T(s.rank>=1+t.length,()=>`input rank is ${s.rank} but should be > than blockShape.length ${t.length}`),T(e.length===t.length,()=>`crops.length is ${e.length} but should be equal to blockShape.length ${t.length}`),T(s.shape[0]%r==0,()=>`input tensor batch is ${s.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${r}`),V.runKernel(Jl,{x:s},{blockShape:t,crops:e})}}),Sb={kernelName:Bu,gradFunc:(n,t,e)=>{const{blockShape:s,paddings:r}=e;return{x:()=>Vf(n,s,r)}}},Cb={kernelName:Uu,gradFunc:(n,t,e)=>{const{axis:s}=e;return{x:()=>Bn(n,s)}}},qA=[db,PN,FN,LN,MN,VN,zN,BN,UN,WN,GN,HN,KN,YN,QN,e2,t2,n2,s2,r2,i2,a2,l2,o2,h2,p2,m2,x2,y2,b2,dA,v2,w2,_2,T2,S2,I2,C2,k2,A2,R2,$2,D2,O2,P2,F2,L2,M2,V2,U2,wb,wb,W2,j2,q2,Z2,Y2,Q2,J2,eA,tA,nA,sA,rA,iA,_b,_b,aA,oA,hA,pA,fA,mA,gA,xA,yA,bA,vA,wA,TA,SA,CA,IA,kA,AA,RA,$A,DA,Sb,Sb,Cb,Cb,{kernelName:zo,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>je(n,L(zn(ke(e,"float32")),2))}}},{kernelName:Bo,inputsToSave:["a","b"],gradFunc:(n,t)=>{const[e,s]=t,r=ut(2);return{a:()=>L(n,L(r,ze(e,s))),b:()=>L(n,L(r,ze(s,e)))}}},{kernelName:Bd,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>L(n,L(ke(e,"float32"),2))}}},{kernelName:jo,gradFunc:n=>({x:()=>Et(n)})},{kernelName:Uo,inputsToSave:["a","b"],gradFunc:(n,t)=>{const[e,s]=t,r=ht(e.shape,s.shape);return{a:()=>{let o=n;const l=bn(e.shape,r);return l.length>0&&(o=Ge(o,l)),j(o,e.shape)},b:()=>{let o=n;const l=bn(s.shape,r);return l.length>0&&(o=Ge(o,l)),j(Jt(o),s.shape)}}}},{kernelName:zu,inputsToSave:["x"],gradFunc:(n,t,e)=>{const[s]=t,r=s.shape.slice(),{axis:i}=e;pt(i,s.shape).forEach(u=>{r[u]=1});const o=j(n,r),l=L(o,Ir(s.shape,"float32"));return{x:()=>l}}},{kernelName:Wo,inputsToSave:["x"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>je(n,Kt(Mf(e)))}}},{kernelName:Go,outputsToSave:[!0],gradFunc:(n,t)=>{const[e]=t;return{x:()=>L(ze(ut(1),Kt(e)),n)}}},{kernelName:Ho,inputsToSave:["x"],gradFunc:(n,t,e)=>{const[s]=t,{reps:r}=e;return{x:()=>{let a=Et(s);if(1===s.rank)for(let o=0;o{const s=e,{perm:r}=s,i=Yr(r);return{x:()=>kt(n,i)}}},{kernelName:Hu,gradFunc:(n,t,e)=>{const s=e,{axis:r}=s;return{value:()=>ir(n,r)}}},{kernelName:ju,inputsToSave:["segmentIds"],gradFunc:(n,t)=>{const[e]=t;return{x:()=>function XA(n,t){const e=Kr(t,Et(t)),s=Bp(n,e);let r=Pi(t,ut(0,"int32"));const i=s.rank-r.rank;for(let o=0;o({x:()=>Et(n)})}];for(const n of qA)U1(n);ne().prototype.abs=function(){return this.throwIfDisposed(),kn(this)};const YA=U({acos_:function ZA(n){const e={x:$(n,"x","acos")};return V.runKernel(jn,e)}});ne().prototype.acos=function(){return this.throwIfDisposed(),YA(this)};const JA=U({acosh_:function QA(n){const e={x:$(n,"x","acosh")};return V.runKernel(ps,e)}});ne().prototype.acosh=function(){return this.throwIfDisposed(),JA(this)},ne().prototype.add=function(n){return this.throwIfDisposed(),me(this,n)},ne().prototype.all=function(n,t){return this.throwIfDisposed(),ly(this,n,t)},ne().prototype.any=function(n,t){return this.throwIfDisposed(),Fp(this,n,t)},ne().prototype.argMax=function(n){return this.throwIfDisposed(),el(this,n)};const tR=U({argMin_:function eR(n,t=0){const s={x:$(n,"x","argMin")};return V.runKernel(ql,s,{axis:t})}});ne().prototype.argMin=function(n){return this.throwIfDisposed(),tR(this,n)},ne().prototype.asScalar=function(){return this.throwIfDisposed(),T(1===this.size,()=>"The array must have only 1 element."),j(this,[])},ne().prototype.asType=function(n){return this.throwIfDisposed(),ke(this,n)},ne().prototype.as1D=function(){return this.throwIfDisposed(),j(this,[this.size])},ne().prototype.as2D=function(n,t){return this.throwIfDisposed(),j(this,[n,t])},ne().prototype.as3D=function(n,t,e){return this.throwIfDisposed(),j(this,[n,t,e])},ne().prototype.as4D=function(n,t,e,s){return this.throwIfDisposed(),j(this,[n,t,e,s])},ne().prototype.as5D=function(n,t,e,s,r){return this.throwIfDisposed(),j(this,[n,t,e,s,r])};const sR=U({asin_:function nR(n){const e={x:$(n,"x","asin")};return V.runKernel(Qa,e)}});ne().prototype.asin=function(){return this.throwIfDisposed(),sR(this)};const iR=U({asinh_:function rR(n){const e={x:$(n,"x","asinh")};return V.runKernel(Ja,e)}});ne().prototype.asinh=function(){return this.throwIfDisposed(),iR(this)};const oR=U({atan_:function aR(n){const e={x:$(n,"x","atan")};return V.runKernel(eo,e)}});ne().prototype.atan=function(){return this.throwIfDisposed(),oR(this)};const uR=U({atan2_:function lR(n,t){let e=$(n,"a","atan2"),s=$(t,"b","atan2");return[e,s]=un(e,s),V.runKernel(no,{a:e,b:s})}});ne().prototype.atan2=function(n){return this.throwIfDisposed(),uR(this,n)};const hR=U({atanh_:function cR(n){const e={x:$(n,"x","atanh")};return V.runKernel(to,e)}});ne().prototype.atanh=function(){return this.throwIfDisposed(),hR(this)},ne().prototype.avgPool=function(n,t,e,s){return this.throwIfDisposed(),Vp(this,n,t,e,s)},ne().prototype.batchToSpaceND=function(n,t){return this.throwIfDisposed(),Vf(this,n,t)},ne().prototype.batchNorm=function(n,t,e,s,r){return this.throwIfDisposed(),oc(this,n,t,e,s,r)},ne().prototype.broadcastTo=function(n){return this.throwIfDisposed(),rl(this,n)},ne().prototype.cast=function(n){return this.throwIfDisposed(),ke(this,n)};const pR=U({ceil_:function dR(n){const e={x:$(n,"x","ceil","float32")};return V.runKernel(ro,e)}});ne().prototype.ceil=function(){return this.throwIfDisposed(),pR(this)},ne().prototype.clipByValue=function(n,t){return this.throwIfDisposed(),gs(this,n,t)},ne().prototype.concat=function(n,t){return this.throwIfDisposed(),n instanceof Qt&&(n=[n]),Bn([this,...n],t)},ne().prototype.conv1d=function(n,t,e,s,r,i){return this.throwIfDisposed(),uy(this,n,t,e,s,r,i)},ne().prototype.conv2dTranspose=function(n,t,e,s,r){return this.throwIfDisposed(),cy(this,n,t,e,s,r)},ne().prototype.conv2d=function(n,t,e,s,r,i){return this.throwIfDisposed(),Oi(this,n,t,e,s,r,i)},ne().prototype.cos=function(){return this.throwIfDisposed(),Mf(this)},ne().prototype.cosh=function(){return this.throwIfDisposed(),Tb(this)},ne().prototype.cumprod=function(n,t,e){return this.throwIfDisposed(),Ff(this,n,t,e)},ne().prototype.cumsum=function(n,t,e){return this.throwIfDisposed(),mb(this,n,t,e)};const mR=U({depthToSpace_:function fR(n,t,e="NHWC"){const s=$(n,"x","depthToSpace","float32"),r="NHWC"===e?s.shape[1]:s.shape[2],i="NHWC"===e?s.shape[2]:s.shape[3],a="NHWC"===e?s.shape[3]:s.shape[1];return T(t>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${t}`),T(r*t>=0,()=>`Negative dimension size caused by overflow when multiplying\n ${r} and ${t} for depthToSpace with input shape\n ${s.shape}`),T(i*t>=0,()=>`Negative dimension size caused by overflow when multiplying\n ${i} and ${t} for depthToSpace with input shape\n ${s.shape}`),T(a%(t*t)==0,()=>`Dimension size must be evenly divisible by ${t*t} but is ${a} for depthToSpace with input shape ${s.shape}`),V.runKernel(fd,{x:s},{blockSize:t,dataFormat:e})}});ne().prototype.depthToSpace=function(n,t){return this.throwIfDisposed(),mR(this,n,t)},ne().prototype.depthwiseConv2d=function(n,t,e,s,r,i){return this.throwIfDisposed(),lc(this,n,t,e,s,r,i)};const xR=U({dilation2d_:function gR(n,t,e,s,r=[1,1],i="NHWC"){const a=$(n,"x","dilation2d"),o=$(t,"filter","dilation2d");T(3===a.rank||4===a.rank,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${a.rank}.`),T(3===o.rank,()=>`Error in dilation2d: filter must be rank 3, but got rank ${o.rank}.`),T("NHWC"===i,()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${i}`);let l=a,u=!1;3===a.rank&&(l=j(a,[1,a.shape[0],a.shape[1],a.shape[2]]),u=!0),T(l.shape[3]===o.shape[2],()=>`Error in dilation2d: input and filter must have the same depth: ${l.shape[3]} vs ${o.shape[2]}`);const d=V.runKernel(ou,{x:l,filter:o},{strides:e,pad:s,dilations:r});return u?j(d,[d.shape[1],d.shape[2],d.shape[3]]):d}});ne().prototype.dilation2d=function(n,t,e,s,r){return this.throwIfDisposed(),xR(this,n,t,e,s,r)};const bR=U({divNoNan_:function yR(n,t){let e=$(n,"a","div"),s=$(t,"b","div");[e,s]=un(e,s);const r=je(e,s),i=Et(r),a=rr(s,i);return Yn(a,i,r)}});ne().prototype.divNoNan=function(n){return this.throwIfDisposed(),bR(this,n)},ne().prototype.div=function(n){return this.throwIfDisposed(),je(this,n)};const wR=U({dot_:function vR(n,t){const e=$(n,"t1","dot"),s=$(t,"t2","dot");T(!(1!==e.rank&&2!==e.rank||1!==s.rank&&2!==s.rank),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${e.rank} and ${s.rank}.`);const r=1===e.rank?e.size:e.shape[1],i=1===s.rank?s.size:s.shape[0];if(T(r===i,()=>`Error in dot: inner dimensions of inputs must match, but got ${r} and ${i}.`),1===e.rank&&1===s.rank){const a=j(e,[1,-1]),o=j(s,[-1,1]),l=Dt(a,o);return j(l,[])}if(1===e.rank&&2===s.rank){const a=j(e,[1,-1]),o=j(s,[s.shape[0],s.shape[1]]),l=Dt(a,o);return j(l,[l.size])}if(2===e.rank&&1===s.rank){const a=j(s,[-1,1]),o=Dt(e,a);return j(o,[o.size])}{const a=j(s,[s.shape[0],s.shape[1]]);return Dt(e,a)}}});ne().prototype.dot=function(n){return this.throwIfDisposed(),wR(this,n)},ne().prototype.elu=function(){return this.throwIfDisposed(),uc(this)},ne().prototype.equal=function(n){return this.throwIfDisposed(),rr(this,n)},ne().prototype.erf=function(){return this.throwIfDisposed(),py(this)};const TR=U({euclideanNorm_:function _R(n,t=null,e=!1){return wc(n,"euclidean",t,e)}});ne().prototype.euclideanNorm=function(n,t){return this.throwIfDisposed(),TR(this,n,t)},ne().prototype.exp=function(){return this.throwIfDisposed(),xs(this)},ne().prototype.expandDims=function(n){return this.throwIfDisposed(),Zn(this,n)};const CR=U({expm1_:function SR(n){const e={x:$(n,"x","expm1")};return V.runKernel(fo,e)}});ne().prototype.expm1=function(){return this.throwIfDisposed(),CR(this)},ne().prototype.fft=function(){return this.throwIfDisposed(),nf(this)},ne().prototype.flatten=function(){return this.throwIfDisposed(),j(this,[this.size])},ne().prototype.floor=function(){return this.throwIfDisposed(),cc(this)},ne().prototype.floorDiv=function(n){return this.throwIfDisposed(),Px(this,n)},ne().prototype.gather=function(n,t,e){return this.throwIfDisposed(),Bp(this,n,t,e)},ne().prototype.greaterEqual=function(n){return this.throwIfDisposed(),Pi(this,n)},ne().prototype.greater=function(n){return this.throwIfDisposed(),ys(this,n)},ne().prototype.ifft=function(){return this.throwIfDisposed(),mc(this)},ne().prototype.irfft=function(){return this.throwIfDisposed(),_y(this)};const ER=U({isFinite_:function IR(n){const e={x:$(n,"x","isFinite")};return V.runKernel(bo,e)}});ne().prototype.isFinite=function(){return this.throwIfDisposed(),ER(this)};const NR=U({isInf_:function kR(n){const e={x:$(n,"x","isInf")};return V.runKernel(vo,e)}});ne().prototype.isInf=function(){return this.throwIfDisposed(),NR(this)};const RR=U({isNaN_:function AR(n){const e={x:$(n,"x","isNaN")};return V.runKernel(wo,e)}});ne().prototype.isNaN=function(){return this.throwIfDisposed(),RR(this)},ne().prototype.leakyRelu=function(n){return this.throwIfDisposed(),Up(this,n)},ne().prototype.lessEqual=function(n){return this.throwIfDisposed(),wa(this,n)},ne().prototype.less=function(n){return this.throwIfDisposed(),vc(this,n)};const DR=U({localResponseNormalization_:function $R(n,t=5,e=1,s=1,r=.5){const i=$(n,"x","localResponseNormalization");T(4===i.rank||3===i.rank,()=>`Error in localResponseNormalization: x must be rank 3 or 4 but got\n rank ${i.rank}.`),T(St(t),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`);let a=i,o=!1;3===i.rank&&(o=!0,a=j(i,[1,i.shape[0],i.shape[1],i.shape[2]]));const c=V.runKernel(bu,{x:a},{depthRadius:t,bias:e,alpha:s,beta:r});return o?j(c,[c.shape[1],c.shape[2],c.shape[3]]):c}});ne().prototype.localResponseNormalization=function(n,t,e,s){return this.throwIfDisposed(),DR(this,n,t,e,s)};const PR=U({logSigmoid_:function OR(n){const t=$(n,"x","logSigmoid");return _r(s=>({value:Jt(ul(Jt(s))),gradFunc:a=>L(a,ba(Jt(s)))}))(t)}});ne().prototype.logSigmoid=function(){return this.throwIfDisposed(),PR(this)},ne().prototype.logSoftmax=function(n){return this.throwIfDisposed(),my(this,n)},ne().prototype.logSumExp=function(n,t){return this.throwIfDisposed(),Hp(this,n,t)},ne().prototype.log=function(){return this.throwIfDisposed(),Ns(this)},ne().prototype.log1p=function(){return this.throwIfDisposed(),Wp(this)},ne().prototype.logicalAnd=function(n){return this.throwIfDisposed(),Cr(this,n)},ne().prototype.logicalNot=function(){return this.throwIfDisposed(),Lf(this)};const Ib=U({logicalOr_:function FR(n,t){const e=$(n,"a","logicalOr","bool"),s=$(t,"b","logicalOr","bool");return ht(e.shape,s.shape),V.runKernel(yu,{a:e,b:s})}});ne().prototype.logicalOr=function(n){return this.throwIfDisposed(),Ib(this,n)};const MR=U({logicalXor_:function LR(n,t){const e=$(n,"a","logicalXor","bool"),s=$(t,"b","logicalXor","bool");return ht(e.shape,s.shape),Cr(Ib(n,t),Lf(Cr(n,t)))}});ne().prototype.logicalXor=function(n){return this.throwIfDisposed(),MR(this,n)},ne().prototype.matMul=function(n,t,e){return this.throwIfDisposed(),Dt(this,n,t,e)},ne().prototype.maxPool=function(n,t,e,s){return this.throwIfDisposed(),jp(this,n,t,e,s)},ne().prototype.max=function(n,t){return this.throwIfDisposed(),Ws(this,n,t)},ne().prototype.maximum=function(n){return this.throwIfDisposed(),Kr(this,n)},ne().prototype.mean=function(n,t){return this.throwIfDisposed(),pn(this,n,t)},ne().prototype.min=function(n,t){return this.throwIfDisposed(),hc(this,n,t)},ne().prototype.minimum=function(n){return this.throwIfDisposed(),ya(this,n)};const zR=U({mirrorPad_:function VR(n,t,e){T("reflect"===e||"symmetric"===e,()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${e}.`);const s=$(n,"x","mirrorPad");if(0===s.rank)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");T(t.length===s.rank,()=>`Padding doesn't match input. Must be ${s.rank}. Got ${t.length}.`);const r="reflect"===e?1:0;for(let o=0;o"Invalid number of paddings. Must be length of 2 each."),T(t[o][0]>=0&&t[o][0]<=s.shape[o]-r&&t[o][1]>=0&&t[o][1]<=s.shape[o]-r,()=>`Padding in dimension ${o} cannot be greater than or equal to ${s.shape[o]-r} or less than 0 for input of shape ${s.shape}`);return V.runKernel(Cu,{x:s},{paddings:t,mode:e})}});ne().prototype.mirrorPad=function(n,t){return this.throwIfDisposed(),zR(this,n,t)};const UR=U({mod_:function BR(n,t){let e=$(n,"a","mod"),s=$(t,"b","mod");return[e,s]=un(e,s),V.runKernel(Io,{a:e,b:s})}});ne().prototype.mod=function(n){return this.throwIfDisposed(),UR(this,n)},ne().prototype.mul=function(n){return this.throwIfDisposed(),L(this,n)},ne().prototype.neg=function(){return this.throwIfDisposed(),Jt(this)},ne().prototype.norm=function(n,t,e){return this.throwIfDisposed(),wc(this,n,t,e)},ne().prototype.notEqual=function(n){return this.throwIfDisposed(),il(this,n)},ne().prototype.oneHot=function(n,t=1,e=0){return this.throwIfDisposed(),xy(this,n,t,e)},ne().prototype.onesLike=function(){return this.throwIfDisposed(),As(this)},ne().prototype.pad=function(n,t){return this.throwIfDisposed(),Kp(this,n,t)};const jR=U({pool_:function WR(n,t,e,s,r,i,a){null==r&&(r=[1,1]),null==i&&(i=1),0===s&&(s="valid");const o=$(n,"x","maxPool");let l=o,u=!1;3===o.rank&&(u=!0,l=j(o,[1,o.shape[0],o.shape[1],o.shape[2]])),T(Pn(i,r),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${i} and dilations '${r}'`);const c=ks(l.shape,t,i,r,s),h=[c.dilationHeight,c.dilationWidth];let d;d="same"===s?function HR(n,t){const s=n.map((a,o)=>a+(a-1)*(t[o]-1)).map(a=>a-1),r=s.map(a=>Math.floor(a/2)),i=s.map((a,o)=>a-r[o]);return s.map((a,o)=>[r[o],i[o]])}([c.filterHeight,c.filterWidth],h):[[0,0],[0,0]];const p=1===h[0]&&1===h[1],[f,g]=function GR(n,t,e){const s=e.map(c=>c[0]),r=e.map(c=>c[1]),i=n.concat(s,r),a=t.map((c,h)=>(c-i[h]%c)%c),o=r.map((c,h)=>c+a[h]),l=t.map((c,h)=>[s[h],o[h]]),u=t.map((c,h)=>[0,a[h]]);return[l,u]}([c.inHeight,c.inWidth],h,d),m=p?s:"valid",x=p?l:Pf(l,h,f),b=("avg"===e?()=>Vp(x,t,i,m,a):()=>jp(x,t,i,m,a))(),v=p?b:Vf(b,h,g);return u?j(v,[v.shape[1],v.shape[2],v.shape[3]]):v}});ne().prototype.pool=function(n,t,e,s,r,i){return this.throwIfDisposed(),jR(this,n,t,e,s,r,i)},ne().prototype.pow=function(n){return this.throwIfDisposed(),Ri(this,n)},ne().prototype.prelu=function(n){return this.throwIfDisposed(),qp(this,n)};const KR=U({prod_:function XR(n,t=null,e=!1){let s=$(n,"x","prod");return"bool"===s.dtype&&(s=ke(s,"int32")),V.runKernel(Du,{x:s},{axis:t,keepDims:e})}});ne().prototype.prod=function(n,t){return this.throwIfDisposed(),KR(this,n,t)};const ZR=U({reciprocal_:function qR(n){const e={x:$(n,"x","reciprocal")};return V.runKernel(No,e)}});ne().prototype.reciprocal=function(){return this.throwIfDisposed(),ZR(this)},ne().prototype.relu=function(){return this.throwIfDisposed(),Er(this)},ne().prototype.relu6=function(){return this.throwIfDisposed(),Ty(this)},ne().prototype.reshapeAs=function(n){return this.throwIfDisposed(),j(this,n.shape)},ne().prototype.reshape=function(n){return this.throwIfDisposed(),j(this,n)},ne().prototype.resizeBilinear=function(n,t,e){return this.throwIfDisposed(),Ry(this,n,t,e)},ne().prototype.resizeNearestNeighbor=function(n,t,e){return this.throwIfDisposed(),$y(this,n,t,e)},ne().prototype.reverse=function(n){return this.throwIfDisposed(),Fi(this,n)},ne().prototype.rfft=function(){return this.throwIfDisposed(),sf(this)},ne().prototype.round=function(){return this.throwIfDisposed(),Dy(this)},ne().prototype.rsqrt=function(){return this.throwIfDisposed(),gb(this)},ne().prototype.selu=function(){return this.throwIfDisposed(),yy(this)},ne().prototype.separableConv2d=function(n,t,e,s,r,i){return this.throwIfDisposed(),by(this,n,t,e,s,r,i)},ne().prototype.sigmoid=function(){return this.throwIfDisposed(),ba(this)};const QR=U({sign_:function YR(n){const e={x:$(n,"x","sign")};return V.runKernel(Lo,e)}});ne().prototype.sign=function(){return this.throwIfDisposed(),QR(this)},ne().prototype.sin=function(){return this.throwIfDisposed(),pb(this)},ne().prototype.sinh=function(){return this.throwIfDisposed(),fb(this)},ne().prototype.slice=function(n,t){return this.throwIfDisposed(),Bt(this,n,t)},ne().prototype.softmax=function(n){return this.throwIfDisposed(),ef(this,n)},ne().prototype.softplus=function(){return this.throwIfDisposed(),ul(this)},ne().prototype.spaceToBatchND=function(n,t){return this.throwIfDisposed(),Pf(this,n,t)},ne().prototype.split=function(n,t){return this.throwIfDisposed(),bs(this,n,t)},ne().prototype.sqrt=function(){return this.throwIfDisposed(),zn(this)},ne().prototype.square=function(){return this.throwIfDisposed(),Kt(this)},ne().prototype.squaredDifference=function(n){return this.throwIfDisposed(),Fy(this,n)},ne().prototype.squeeze=function(n){return this.throwIfDisposed(),cl(this,n)},ne().prototype.stack=function(n,t){this.throwIfDisposed();const e=n instanceof Qt?[this,n]:[this,...n];return ir(e,t)},ne().prototype.step=function(n){return this.throwIfDisposed(),hl(this,n)};const e$=U({stridedSlice_:function JR(n,t,e,s,r=0,i=0,a=0,o=0,l=0){const c={x:$(n,"x","stridedSlice","string_or_numeric")};return V.runKernel(Ud,c,{begin:t,end:e,strides:s,beginMask:r,endMask:i,ellipsisMask:a,newAxisMask:o,shrinkAxisMask:l})}});ne().prototype.stridedSlice=function(n,t,e,s,r,i,a,o){return this.throwIfDisposed(),e$(this,n,t,e,s,r,i,a,o)},ne().prototype.sub=function(n){return this.throwIfDisposed(),ze(this,n)},ne().prototype.sum=function(n,t){return this.throwIfDisposed(),Ge(this,n,t)};const n$=U({tan_:function t$(n){const e={x:$(n,"x","tan","float32")};return V.runKernel(Wo,e)}});ne().prototype.tan=function(){return this.throwIfDisposed(),n$(this)},ne().prototype.tanh=function(){return this.throwIfDisposed(),pc(this)},ne().prototype.tile=function(n){return this.throwIfDisposed(),Us(this,n)},ne().prototype.toBool=function(){return this.throwIfDisposed(),ke(this,"bool")},ne().prototype.toFloat=function(){return this.throwIfDisposed(),ke(this,"float32")},ne().prototype.toInt=function(){return this.throwIfDisposed(),ke(this,"int32")};const r$=U({topk_:function s$(n,t=1,e=!0){const s=$(n,"x","topk");if(0===s.rank)throw new Error("topk() expects the input to be of rank 1 or higher");const r=s.shape[s.shape.length-1];if(t<0)throw new Error(`'k' passed to topk() must be >= 0 but got ${t}`);if(t>r)throw new Error(`'k' passed to topk() must be <= the last dimension (${r}) but got ${t}`);const i={x:s},a={k:t,sorted:e},[o,l]=V.runKernel(jd,i,a);return{values:o,indices:l}}});ne().prototype.topk=function(n,t){return this.throwIfDisposed(),r$(this,n,t)},ne().prototype.transpose=function(n){return this.throwIfDisposed(),kt(this,n)};const a$=U({unique_:function i$(n,t=0){const e=$(n,"x","unique","string_or_numeric");T(e.rank>0,()=>"The input tensor must be at least 1D");const s={x:e},r={axis:t},[i,a]=V.runKernel(Kd,s,r);return{values:i,indices:a}}});ne().prototype.unique=function(n){return this.throwIfDisposed(),a$(this,n)},ne().prototype.unsortedSegmentSum=function(n,t){return this.throwIfDisposed(),xb(this,n,t)},ne().prototype.unstack=function(n){return this.throwIfDisposed(),Li(this,n)},ne().prototype.where=function(n,t){return this.throwIfDisposed(),Yn(n,this,t)},ne().prototype.zerosLike=function(){return this.throwIfDisposed(),Et(this)};class ur extends Error{constructor(t){super(t),Object.setPrototypeOf(this,ur.prototype)}}class Rs extends Error{constructor(t){super(t),Object.setPrototypeOf(this,Rs.prototype)}}class z extends Error{constructor(t){super(t),Object.setPrototypeOf(this,z.prototype)}}class dt extends Error{constructor(t){super(t),Object.setPrototypeOf(this,dt.prototype)}}class zf extends Error{constructor(t){super(t),Object.setPrototypeOf(this,zf.prototype)}}Error;class kb{constructor(t){this.maxEntries=t||100,this.cache=new Map}get(t){let e;return this.cache.has(t)&&(e=this.cache.get(t),this.cache.delete(t),this.cache.set(t,e)),e}put(t,e){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxEntries){const s=this.cache.keys().next().value;this.cache.delete(s)}this.cache.set(t,e)}getMaxEntries(){return this.maxEntries}setMaxEntries(t){if(t<0)throw new Error(`The maxEntries of LRU caches must be at least 0, but got ${t}.`);if(this.maxEntries>t)for(let e=0;ee.toUpperCase())}let $s={};function Bf(n){if(null==n)return null;const t={};return t.className=n.getClassName(),t.config=n.getConfig(),t}function Uf(n){if(null!=n&&"object"==typeof n)if(Array.isArray(n))n.forEach(t=>Uf(t));else{const t=Object.keys(n);for(const e of t){const s=n[e];null!=s&&"object"==typeof s&&(Array.isArray(s)||"ndarray"!==s.type||"number"!=typeof s.value?Uf(s):n[e]=s.value)}}}function gl(n,t={},e={},s="object",r=!1){if("string"==typeof n){let a;if(n in e)a=e[n];else if(n in $s)a=$s[n];else if(a=t[n],null==a)throw new z(`Unknown ${s}: ${n}. This may be due to one of the following reasons:\n1. The ${s} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code.\n2. The custom ${s} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return a}{const i=n;if(null==i.className||null==i.config)throw new z(`${s}: Improper config format: ${JSON.stringify(i)}.\n'className' and 'config' must set.`);const a=i.className;let o,l;if(a in e?[o,l]=e[a]:a in $s?[o,l]=$s.className:a in t&&([o,l]=t[a]),null==o)throw new z(`Unknown ${s}: ${a}. This may be due to one of the following reasons:\n1. The ${s} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code.\n2. The custom ${s} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(null!=l){const u={};for(const p of Object.keys($s))u[p]=$s[p];for(const p of Object.keys(e))u[p]=e[p];i.config.customObjects=u;const h=Object.assign({},$s);for(const p of Object.keys(e))$s[p]=e[p];Uf(i.config);const d=l(o,i.config,e,r);return $s=Object.assign({},h),d}{const u=Object.assign({},$s);for(const h of Object.keys(e))$s[h]=e[h];const c=new o(i.config);return $s=Object.assign({},u),c}}}function Cc(n,t){return-1*function o$(n,t){return nt?1:0}(n,t)}function Jr(n){if(null==n)return n;const t=[];for(const e of n)-1===t.indexOf(e)&&t.push(e);return t}function l$(n){if(null==n)throw new z(`Invalid value in obj: ${JSON.stringify(n)}`);for(const t in n)if(n.hasOwnProperty(t))return!1;return!0}function Bi(n,t,e){if(null!=e&&n.indexOf(e)<0)throw new z(`${e} is not a valid ${t}. Valid values are ${n} or null/undefined.`)}function Wf(n,t,e=0,s=1/0){return vs(e>=0),vs(s>=e),Array.isArray(n)&&n.length>=e&&n.length<=s&&n.every(r=>typeof r===t)}function $n(n,t){Array.isArray(n)?(T(n.length>0,()=>`${t} is unexpectedly an empty array.`),n.forEach((e,s)=>$n(e,`element ${s+1} of ${t}`))):T(Number.isInteger(n)&&n>0,()=>`Expected ${t} to be a positive integer, but got ${Ab(n)}.`)}function Ab(n){return null===n?"null":Array.isArray(n)?"["+n.map(t=>Ab(t)).join(",")+"]":"string"==typeof n?`"${n}"`:`${n}`}function Rb(n){return"relu"===n?"relu":"linear"===n?"linear":"elu"===n?"elu":null}let c$=0;function $b(){return c$++}const Ic={};function Ec(n=""){return n in Ic||(Ic[n]=0),Ic[n]+=1,n+Ic[n].toString()}const h$=["channelsFirst","channelsLast"],d$=["nearest","bilinear"],p$=["valid","same","causal"],f$=["max","avg"],m$=["sum","mul","concat","ave"],Ta=new Map;function fn(n){Bi(h$,"DataFormat",n)}function ws(n){Bi(p$,"PaddingMode",n)}function Db(n){Bi(f$,"PoolMode",n)}const xl=[];function Ui(n,t){xl.push(n);try{const e=t();return xl.pop(),e}catch(e){throw xl.pop(),e}}function Pb(n){if(!Lb(n))throw new Error("Not a valid tensor name: '"+n+"'");return function x$(){return 0===xl.length?"":xl.join("/")+"/"}()+n}function Fb(n){if(!Lb(n))throw new Error("Not a valid tensor name: '"+n+"'");Ta.has(n)||Ta.set(n,0);const t=Ta.get(n);if(Ta.set(n,Ta.get(n)+1),t>0){const e=`${n}_${t}`;return Ta.set(e,1),e}return n}const y$=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function Lb(n){return!!n.match(y$)}function b$(n){return n===parseInt(n.toString(),10)}function ei(n,t,e){null==t&&(t=0),null==e&&(e=n.length);let s=1;for(let r=t;rt&&(t=s)}return t}function Gs(n,t){if(t{switch(n.rank){case 1:return Qp(n,t,e);case 2:return vy(n,[t,0],[e,n.shape[1]]);case 3:return Jp(n,[t,0,0],[e,n.shape[1],n.shape[2]]);case 4:return dc(n,[t,0,0,0],[e,n.shape[1],n.shape[2],n.shape[3]]);case 5:return Bt(n,[t,0,0,0,0],[e,n.shape[1],n.shape[2],n.shape[3],n.shape[4]]);case 6:return Bt(n,[t,0,0,0,0,0],[e,n.shape[1],n.shape[2],n.shape[3],n.shape[4],n.shape[5]]);default:throw new z(`sliceAlongFirstAxis() received an unsupported tensor rank: ${n.rank}`)}})}function Gf(n,t,e){return Z(()=>{switch(n.rank){case 1:return Qp(n,t,e);case 2:return vy(n,[0,t],[n.shape[0],e]);case 3:return Jp(n,[0,0,t],[n.shape[0],n.shape[1],e]);case 4:return dc(n,[0,0,0,t],[n.shape[0],n.shape[1],n.shape[2],e]);default:throw new z(`sliceAlongLastAxis() received an unsupported tensor rank: ${n.rank}`)}})}function Nc(n,t,e,s){return Z(()=>{switch(n.rank){case 1:return Qp(n,t,e);case 2:switch(s){case 1:return Wi(n,t,e);case 2:return Gf(n,t,e);default:throw new z(`The axis is not within the rank of the tensor ${s}`)}case 3:switch(s){case 1:return Wi(n,t,e);case 2:return Jp(n,[0,t,0],[n.shape[0],e,n.shape[2]]);case 3:return Gf(n,t,e);default:throw new z(`The axis is not within the rank of the tensor ${s}`)}case 4:switch(s){case 1:return Wi(n,t,e);case 2:return dc(n,[0,t,0,0],[n.shape[0],e,n.shape[2],n.shape[3]]);case 3:return dc(n,[0,0,t,0],[n.shape[0],n.shape[1],e,n.shape[3]]);case 4:return Gf(n,t,e);default:throw new z(`The axis is not within the rank of the tensor ${s}`)}default:throw new z(`sliceAlongLastAxis() received an unsupported tensor rank: ${n.rank}`)}})}function Hf(n,t=-1){let e;return t<0&&(e=n[0].rank,t=0!==e?e:0),t===n[0].rank&&(t=-1),Bn(n,t)}function Vb(n,t){switch(n.rank){case 1:return sI([n,t]);case 2:return iI([n,t],0);case 3:return oI([n,t],0);case 4:return uI([n,t],0);default:throw new z(`concatAlongFirstAxis() received an unsupported tensor rank: ${n.rank}`)}}function jf(n,t){if(Array.isArray(t)||(t=[t]),n.rank!==t.length)throw new z(`The length of input n (${t.length}) does not match the number of dimensions in input x (${n.rank})`);return Us(n,t)}function Ac(n,t=0,e=1,s,r){return iE(n,t,e,s,r)}function hr(n,t,e,s){if(n.rank<2||t.rank<2)throw new dt(`dot requires both inputs to be rank >= 2 but got x shape = ${n.shape} and y shape = ${t.shape}`);if(t.rank>=3&&n.shape.slice(-1)[0]!==t.shape.slice(-2)[0])throw new dt(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${n.shape} and y shape = ${t.shape}`);if(2===n.rank&&2===t.rank)return Iy({a:n,b:t,transposeA:!1,transposeB:!1,bias:s?Xf(n.rank,s,"channelsLast"):null,activation:e});{const r=n.shape.slice(),i=r.pop();n=j(n,[-1,i]);const a=t.shape.slice(),o=a.pop(),l=a.pop(),u=[...a,o],c=Array.from({length:t.rank},(f,g)=>0===g?t.rank-2:g<=t.rank-2?g-1:g);t=j(kt(t,c),[l,-1]);const h=[...r,...u];return j(Iy({a:n,b:t,transposeA:!1,transposeB:!1,bias:s?Xf(n.rank,s,"channelsLast"):null,activation:e}),h)}}function zb(n,t,e){return Z(()=>(t=Array.isArray(t)?Un(t,"int32"):ke(t,"int32"),Bp(n,t,e)))}function bl(n){return L(n,n)}function Xf(n,t,e){const s=t.shape;if(1!==t.rank&&t.rank!==n)throw new z(`Unexpected bias dimensions: ${t.rank}; expected it to be 1 or ${n}`);if(5===n){if("channelsFirst"===e)return j(t,1===s.length?[1,s[0],1,1,1]:[1,s[3],s[0],s[1],s[2]]);if("channelsLast"===e)return j(t,1===s.length?[1,1,1,1,s[0]]:[1].concat(s))}else if(4===n){if("channelsFirst"===e)return j(t,1===s.length?[1,s[0],1,1]:[1,s[2],s[0],s[1]]);if("channelsLast"===e)return j(t,1===s.length?[1,1,1,s[0]]:[1].concat(s))}else if(3===n){if("channelsFirst"===e)return j(t,1===s.length?[1,s[0],1]:[1,s[1],s[0]]);if("channelsLast"===e)return j(t,1===s.length?[1,1,s[0]]:[1].concat(s))}else if(n<3)return t;throw new z(`Unsupported input rank by biasAdd: ${t.rank}`)}function js(n,t,e){return Z(()=>(null==e&&(e="channelsLast"),fn(e),me(n,Xf(n.rank,t,e))))}function Bb(n,t,e,s){return Z(()=>$E(n,t,e,s))}function vl(n,t,e=!1){return e?n():t()}const k$=["fanIn","fanOut","fanAvg"],N$=["normal","uniform","truncatedNormal"];class Ds extends ma{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}}pe((()=>{class n extends Ds{apply(e,s){return Rn(e,s)}}return n.className="Zeros",n})());let Ub=(()=>{class n extends Ds{apply(e,s){return Ir(e,s)}}return n.className="Ones",n})();pe(Ub),pe((()=>{class n extends Ds{constructor(e){if(super(),"object"!=typeof e)throw new z(`Expected argument of type ConstantConfig but got ${e}`);if(void 0===e.value)throw new z(`config must have value set but got ${e}`);this.value=e.value}apply(e,s){return Z(()=>L(ut(this.value),Ir(e,s)))}getConfig(){return{value:this.value}}}return n.className="Constant",n})()),pe((()=>{class n extends Ds{constructor(e){super(),this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=e.minval||this.DEFAULT_MINVAL,this.maxval=e.maxval||this.DEFAULT_MAXVAL,this.seed=e.seed}apply(e,s){return ol(e,this.minval,this.maxval,s,this.seed)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}}return n.className="RandomUniform",n})()),pe((()=>{class n extends Ds{constructor(e){super(),this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,s){if("float32"!==(s=s||"float32")&&"int32"!==s)throw new dt(`randomNormal does not support dType ${s}.`);return Ac(e,this.mean,this.stddev,s,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}}return n.className="RandomNormal",n})()),pe((()=>{class n extends Ds{constructor(e){super(),this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,s){if("float32"!==(s=s||"float32")&&"int32"!==s)throw new dt(`truncatedNormal does not support dType ${s}.`);return wy(e,this.mean,this.stddev,s,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}}return n.className="TruncatedNormal",n})()),pe((()=>{class n extends Ds{constructor(e){super(),this.gain=null!=e.gain?e.gain:1}apply(e,s){return Z(()=>{if(2!==e.length||e[0]!==e[1])throw new z("Identity matrix initializer can only be used for 2D square matrices.");return L(this.gain,fy(e[0]))})}getConfig(){return{gain:this.gain}}}return n.className="Identity",n})());let _s=(()=>{class n extends Ds{constructor(e){if(super(),e.scale<0)throw new z(`scale must be a positive float. Got: ${e.scale}`);this.scale=null==e.scale?1:e.scale,this.mode=null==e.mode?"fanIn":e.mode,function A$(n){Bi(k$,"FanMode",n)}(this.mode),this.distribution=null==e.distribution?"normal":e.distribution,function R$(n){Bi(N$,"Distribution",n)}(this.distribution),this.seed=e.seed}apply(e,s){const r=function $$(n,t="channelsLast"){let e,s;if(fn(t),2===n.length)e=n[0],s=n[1];else if(-1!==[3,4,5].indexOf(n.length)){if("channelsFirst"===t){const r=ei(n,2);e=n[1]*r,s=n[0]*r}else if("channelsLast"===t){const r=ei(n,0,n.length-2);e=n[n.length-2]*r,s=n[n.length-1]*r}}else{const r=ei(n);e=Math.sqrt(r),s=Math.sqrt(r)}return[e,s]}(e),i=r[0],a=r[1];let o=this.scale;if(o/="fanIn"===this.mode?Math.max(1,i):"fanOut"===this.mode?Math.max(1,a):Math.max(1,(i+a)/2),"normal"===this.distribution){const l=Math.sqrt(o);if("float32"!==(s=s||"float32")&&"int32"!==s)throw new dt(`${this.getClassName()} does not support dType ${s}.`);return wy(e,0,l,s,this.seed)}{const l=Math.sqrt(3*o);return ol(e,-l,l,s,this.seed)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}}return n.className="VarianceScaling",n})();pe(_s);let Wb=(()=>{class n extends _s{constructor(e){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:null==e?null:e.seed})}getClassName(){return _s.className}}return n.className="GlorotUniform",n})();pe(Wb);let Gb=(()=>{class n extends _s{constructor(e){super({scale:1,mode:"fanAvg",distribution:"normal",seed:null==e?null:e.seed})}getClassName(){return _s.className}}return n.className="GlorotNormal",n})();pe(Gb);let Hb=(()=>{class n extends _s{constructor(e){super({scale:2,mode:"fanIn",distribution:"normal",seed:null==e?null:e.seed})}getClassName(){return _s.className}}return n.className="HeNormal",n})();pe(Hb);let jb=(()=>{class n extends _s{constructor(e){super({scale:2,mode:"fanIn",distribution:"uniform",seed:null==e?null:e.seed})}getClassName(){return _s.className}}return n.className="HeUniform",n})();pe(jb);let Xb=(()=>{class n extends _s{constructor(e){super({scale:1,mode:"fanIn",distribution:"normal",seed:null==e?null:e.seed})}getClassName(){return _s.className}}return n.className="LeCunNormal",n})();pe(Xb);let Kb=(()=>{class n extends _s{constructor(e){super({scale:1,mode:"fanIn",distribution:"uniform",seed:null==e?null:e.seed})}getClassName(){return _s.className}}return n.className="LeCunUniform",n})();pe(Kb),pe((()=>{class n extends Ds{constructor(e){super(),this.DEFAULT_GAIN=1,this.ELEMENTS_WARN_SLOW=2e3,this.gain=null==e.gain?this.DEFAULT_GAIN:e.gain,this.seed=e.seed}apply(e,s){return Z(()=>{if(e.length<2)throw new dt("Shape must be at least 2D.");if("int32"!==s&&"float32"!==s&&void 0!==s)throw new TypeError(`Unsupported data type ${s}.`);const r=K(e.slice(0,-1)),i=e[e.length-1],a=r*i;a>this.ELEMENTS_WARN_SLOW&&console.warn(`Orthogonal initializer is being called on a matrix with more than ${this.ELEMENTS_WARN_SLOW} (${a}) elements: Slowness may result.`);const l=Ac([Math.max(i,r),Math.min(i,r)],0,1,s,this.seed),u=NN.qr(l,!1);let c=u[0];const d=u[1].flatten().stridedSlice([0],[Math.min(i,r)*Math.min(i,r)],[Math.min(i,r)+1]);return c=L(c,d.sign()),rs*r);return t}const Yb="Variable";class dr{constructor(t,e="float32",s=Yb,r=!0,i=null){this.dtype=e??"float32",this.shape=t.shape,this.id=$b(),this.originalName=Pb(s=s??Yb),this.name=Fb(this.originalName),this.trainable_=r,this.constraint=i,this.val=function CE(n,t=!0,e,s){return V.makeVariable(n,t,e,s)}(t,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(t){return this.assertNotDisposed(),function D$(n,t){if(n.shape.toString()!==t.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(n.shape)+" vs. "+JSON.stringify(t.shape))}(this.val,t),this.val.id!==t.id&&(this.val.assign(t),null!=this.constraint&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(t){this.trainable_=t,this.val.trainable=t}}function qf(n){return n.map(t=>t.read())}function Zf(n){n.forEach(t=>{t[0].write(t[1])})}class wn{constructor(t){this.dtype=t.dtype,this.shape=t.shape,this.ndim=null!=t.shape?t.shape.length:t.ndim,this.maxNDim=t.maxNDim,this.minNDim=t.minNDim,this.axes=t.axes||{}}}class pr{constructor(t,e,s,r,i,a,o){this.dtype=t,this.shape=e,this.sourceLayer=s,this.inputs=r,this.callArgs=i,this.outputTensorIndex=o,this.id=$b(),null!=a&&(this.originalName=Pb(a),this.name=Fb(this.originalName)),this.rank=e.length}}let O$=0;class Dc{constructor(t,e){this.callArgs=e,this.id=O$++,this.outboundLayer=t.outboundLayer,this.inboundLayers=t.inboundLayers,this.nodeIndices=t.nodeIndices,this.tensorIndices=t.tensorIndices,this.inputTensors=t.inputTensors,this.outputTensors=t.outputTensors,this.inputMasks=t.inputMasks,this.outputMasks=t.outputMasks,this.inputShapes=t.inputShapes,this.outputShapes=t.outputShapes;for(const s of t.inboundLayers)s?.outboundNodes.push(this);t.outboundLayer.inboundNodes.push(this)}getConfig(){const t=[];for(const e of this.inboundLayers)t.push(null!=e?e.name:null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:t,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}}let P$=0;class wt extends ma{constructor(t={}){super(),this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=P$++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let e=t.name;if(!e){const s=this.getClassName();e=Rr(s)+"_"+Ec(s)}if(this.name=e,this.trainable_=null==t.trainable||t.trainable,null!=t.inputShape||null!=t.batchInputShape){let s;if(null!=t.batchInputShape)s=t.batchInputShape;else if(null!=t.inputShape){let i=null;null!=t.batchSize&&(i=t.batchSize),s=[i].concat(t.inputShape)}this.batchInputShape=s;let r=t.dtype;null==r&&(r=t.inputDType),null==r&&(r="float32"),this.dtype=r}this.initialWeights=null!=t.weights?t.weights:null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(t,e){return t.name+"_ib-"+e.toString()}getNodeAtIndex(t,e){if(0===this.inboundNodes.length)throw new Rs(`The layer has never been called and thus has no defined ${e}.`);if(this.inboundNodes.length<=t)throw new z(`Asked to get ${e} at node ${t}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[t]}getInputAt(t){return ss(this.getNodeAtIndex(t,"input").inputTensors)}getOutputAt(t){return ss(this.getNodeAtIndex(t,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new ur(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(0===this.inboundNodes.length)throw new ur(`Layer ${this.name} is not connected, no input to return.`);return ss(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(0===this.inboundNodes.length)throw new ur(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new ur(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return ss(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(t=>t())}get updates(){return this._updates}get built(){return this._built}set built(t){this._built=t}get trainable(){return this.trainable_}set trainable(t){this._trainableWeights.forEach(e=>e.trainable=t),this.trainable_=t}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(t=>t.trainable):[]}set trainableWeights(t){this._trainableWeights=t}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(t=>!t.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(t){this._nonTrainableWeights=t}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(t){const e=Ft(t);if(null==this.inputSpec||0===this.inputSpec.length)return;const s=Ft(this.inputSpec);if(e.length!==s.length)throw new z(`Layer ${this.name} expects ${s.length} inputs, but it received ${e.length} input tensors. Input received: ${t}`);for(let r=0;ra.maxNDim)throw new z(`Input ${r} is incompatible with layer ${this.name}: expected max_ndim=${a.maxNDim}, found ndim=${o}`);if(null!=a.minNDim&&o=0?l[c]:l[l.length+c]))throw new z(`Input ${r} is incompatible with layer ${this.name}: expected axis ${c} of input shape to have value ${h} but got shape ${l}.`)}}if(null!=a.shape)for(let l=0;l{if(!this.built){this.assertInputCompatibility(t);const a=[];for(const o of Ft(t))a.push(o.shape);this.build(ss(a)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),null===this._refCount&&i&&(this._refCount=1)}if(this.assertInputCompatibility(t),i){let a=this.call(t,e);this.supportsMasking&&this.setMaskMetadata(t,a);const o=Ft(a),l=[];for(let u of o)-1!==s.indexOf(u)&&(u=u.clone()),l.push(u);if(a=ss(l),null!=this.activityRegularizer)throw new dt("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return a}{const a=function F$(n){n=Ft(n);const t=[];for(const e of n)t.push(e.shape);return ss(t)}(t),o=this.computeOutputShape(a);let l;const u="float32";if(this.warnOnIncompatibleInputShape(Array.isArray(t)?a[0]:a),l=null!=o&&o.length>0&&Array.isArray(o[0])?o.map((c,h)=>new pr(u,c,this,Ft(t),e,this.name,h)):new pr(u,o,this,Ft(t),e,this.name),this.addInboundNode(t,l,null,null,a,o,e),this._refCount++,null!=this.activityRegularizer)throw new dt("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return l}})}warnOnIncompatibleInputShape(t){if(null!=this.batchInputShape)if(t.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(t)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let e=!1;this.batchInputShape.forEach((s,r)=>{null!=s&&null!=t[r]&&t[r]!==s&&(e=!0)}),e&&console.warn(`The shape of the input tensor (${JSON.stringify(t)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(null==this.inboundNodes||0===this.inboundNodes.length)throw new ur(`The layer ${this.name} has never been called and thus has no defined output shape.`);const t=[];for(const e of this.inboundNodes){const s=JSON.stringify(e.outputShapes);-1===t.indexOf(s)&&t.push(s)}if(1===t.length){const e=this.inboundNodes[0].outputShapes;return Array.isArray(e)&&Array.isArray(e[0])&&1===e.length?e[0]:e}throw new ur(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new Rs(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return $c(this.weights)}build(t){this.built=!0}getWeights(t=!1){return qf(t?this.trainableWeights:this.weights)}setWeights(t){Z(()=>{const e=this.weights;if(e.length!==t.length)throw new z(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${t.length}, but the layer was expecting ${e.length} weights. Provided weights: ${t}...`);if(0===e.length)return;const s=[],r=qf(e);for(let i=0;ii.apply(c.read())),null==a&&(a=!0),a?this._trainableWeights.push(c):this._nonTrainableWeights.push(c),c}setFastWeightInitDuringBuild(t){this.fastWeightInitDuringBuild=t}addLoss(t){null==t||Array.isArray(t)&&0===t.length||(t=Ft(t),null!=this._losses&&this.losses.push(...t))}computeOutputShape(t){return t}computeMask(t,e){if(!this.supportsMasking){if(null!=e){if(!Array.isArray(e))throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);e.forEach(s=>{if(null!=s)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)})}return null}return e}setMaskMetadata(t,e,s){if(!this.supportsMasking)return;const r=this.computeMask(t,s),i=Ft(e),a=Ft(r);if(i.length!==a.length)throw new Error(`${this.name} outputs ${i.length} tensors but ${i.length} masks for those tensors`);for(let o=0;ot.dispose()),this.weights.length}assertNotDisposed(){if(0===this._refCount)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(null===this._refCount)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let t=0;return 0==--this._refCount&&(t=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:t}}}function Qb(n,t,e){if((null==t||null!=e&&e>0)&&(t=n.sourceLayer,e=n.nodeIndex),0===t.inboundNodes.length)return[n];{const s=t.inboundNodes[e];if(0===s.inboundLayers.length)return s.inputTensors;{const r=[];for(let i=0;i{class n extends wt{constructor(e){if(super({dtype:e.dtype,name:null!=e.name?e.name:Ec("input").toString()}),null==e.batchSize&&(e.batchSize=null),null==e.sparse&&(e.sparse=!1),this.trainable=!1,this.built=!0,this.sparse=e.sparse,null!=e.inputShape&&null!=e.batchInputShape)throw new z("Only provide the inputShape OR batchInputShape argument to inputLayer, not both at the same time.");let s=e.batchInputShape;if(null==s){if(null==e.inputShape)throw new z("An InputLayer should be passed either a `batchInputShape` or an `inputShape`.");s=[e.batchSize].concat(e.inputShape)}else if(null!=e.batchSize)throw new z("Cannot specify batchSize if batchInputShape is specified when creating an InputLayer.");const r=e.dtype||"float32";this.batchInputShape=s,this.dtype=r,this.inputSpec=[{shape:s}];const i=new pr(this.dtype,this.batchInputShape,this,[],{},this.name);i.nodeIndex=0,i.tensorIndex=0,new Dc({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:[i],outputTensors:[i],inputMasks:[null],outputMasks:[null],inputShapes:[s],outputShapes:[s]})}apply(e,s){throw new z(`Cannot pass any input to an InputLayer's apply() method. InputLayer name: ${this.name}`)}dispose(){return{refCountAfterDispose:this._refCount,numDisposedVariables:0}}getConfig(){return{batchInputShape:this.batchInputShape,dtype:this.dtype,sparse:this.sparse,name:this.name}}}return n.className="InputLayer",n})();pe(wl);class ni{constructor(t){if(this.id2Value={},this.id2Mask={},this.name2Id={},t instanceof ni)for(const e in t.id2Value)this.id2Value[e]=t.id2Value[e],e in t.id2Mask&&(this.id2Mask[e]=t.id2Mask[e]);else{if(null==t)return;for(const e of t)this.add(e.key,e.value)}}add(t,e,s){if(null!=this.id2Value[t.id])throw new z(`Duplicate key: name=${t.name}, id=${t.id}`);return this.id2Value[t.id]=function z$(n,t){if(null==n.dtype||n.dtype===t.dtype)return t;try{return ke(t,n.dtype)}catch{throw new z(`The dtype of the feed (${t.dtype}) can not be cast to the dtype of the key '${n.name}' (${n.dtype}).`)}}(t,e),this.name2Id[t.name]=t.id,null!=s&&(this.id2Mask[t.id]=s),this}addFeed(t){this.add(t.key,t.value)}hasKey(t){return null!=this.id2Value[t.id]}names(){return Object.keys(this.name2Id)}getValue(t){if(t instanceof pr){if(null==this.id2Value[t.id])throw new z(`Nonexistent key: ${t.name}`);return this.id2Value[t.id]}{const e=this.name2Id[t];if(null==e)throw new z(`Feed dict has no SymbolicTensor name: ${t}`);return this.id2Value[e]}}getMask(t){if(t instanceof pr){if(null==this.id2Value[t.id])throw new z(`Nonexistent key: ${t.name}`);return this.id2Mask[t.id]}{const e=this.name2Id[t];if(null==e)throw new z(`Feed dict has no SymbolicTensor name: ${t}`);return this.id2Mask[e]}}disposeMasks(){null!=this.id2Mask&&xt(this.id2Mask)}}const Oc=new kb,Pc=new kb;function _l(n,t,e,s){const r=null!=e&&e.training,i=Array.isArray(n),a=i?n:[n],o=a.map(f=>f.name),l=[],u=t.names();for(const f of o)-1!==u.indexOf(f)?l.push(t.getValue(f)):l.push(null);null!=s&&(s.maxNumTensors=-1/0,s.minNumTensors=1/0);const c=o.join(",")+"|"+t.names().sort().join(",");let d,h=Oc.get(c);if(null==h){const f=function U$(n,t){T(null!=n&&n.length>0,()=>"Expected at least one fetch, got none");let e=[],s={};if(1===n.length){const r=e0(n[0],t);e=r.sorted,s=r.recipientMap}else{const r=new Set;for(const i of n){const{sorted:a,recipientMap:o}=e0(i,t);for(const l of a)r.has(l.name)||(e.push(l),r.add(l.name));for(const l in o)null==s[l]&&(s[l]=new Set),o[l].forEach(u=>s[l].add(u))}}return{sorted:e,recipientCounts:W$(s)}}(a,t);h=f.sorted,d=f.recipientCounts,Oc.put(c,h),Pc.put(c,d)}d={},r||Object.assign(d,Pc.get(c));const p=new ni(t);for(let f=0;fs.maxNumTensors&&(s.maxNumTensors=D),D0;){const o=i[i.length-1];if(e.has(o.name)){i.pop();continue}const l=a[a.length-1]===i.length-1;if(0===o.inputs.length||l)i.pop(),s.push(o),e.add(o.name),l&&a.pop();else{a.push(i.length-1);for(const u of o.inputs)null==r[u.name]&&(r[u.name]=new Set),r[u.name].add(o.name),!e.has(u.name)&&i.push(u)}}return{sorted:s,recipientMap:r}}function G$(n){let t;if(1===n.sourceLayer.inboundNodes.length)t=n.sourceLayer.output;else{let e=null;for(let s=0;szn(Ge(L(n,n),t,!0)))}E().registerFlag("TOPOLOGICAL_SORT_CACHE_MAX_ENTRIES",()=>100,function B$(n){Oc?.setMaxEntries(n),Pc?.setMaxEntries(n)});class Tl extends ma{getConfig(){return{}}}pe((()=>{class n extends Tl{constructor(e){super(),this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=null!=e.maxValue?e.maxValue:this.defaultMaxValue,this.axis=null!=e.axis?e.axis:this.defaultAxis}apply(e){return Z(()=>{const s=Yf(e,this.axis),r=gs(s,0,this.maxValue);return L(e,je(r,me(vn(),s)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}}return n.className="MaxNorm",n})()),pe((()=>{class n extends Tl{constructor(e){super(),this.defaultAxis=0,this.axis=null!=e.axis?e.axis:this.defaultAxis}apply(e){return Z(()=>je(e,me(vn(),Yf(e,this.axis))))}getConfig(){return{axis:this.axis}}}return n.className="UnitNorm",n})()),pe((()=>{class n extends Tl{apply(e){return Er(e)}}return n.className="NonNeg",n})()),pe((()=>{class n extends Tl{constructor(e){super(),this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=null!=e.minValue?e.minValue:this.defaultMinValue,this.maxValue=null!=e.maxValue?e.maxValue:this.defaultMaxValue,this.rate=null!=e.rate?e.rate:this.defaultRate,this.axis=null!=e.axis?e.axis:this.defaultAxis}apply(e){return Z(()=>{const s=Yf(e,this.axis),r=me(L(this.rate,gs(s,this.minValue,this.maxValue)),L(1-this.rate,s));return L(e,je(r,me(vn(),s)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}}return n.className="MinMaxNorm",n})());const t0={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function _n(n){return Bf(n)}function n0(n,t={}){return gl(n,Es.getMap().classNameMap,t,"constraint")}function Tn(n){return null==n?null:"string"==typeof n?n0({className:n in t0?t0[n]:n,config:{}}):n instanceof Tl?n:n0(n)}function si(n){return Qf.apply(this,arguments)}function Qf(){return(Qf=(0,N.A)(function*(n){if(null==n)return;const t=[],e=[],s=[];for(const r in n){const i=n[r];if("number"!=typeof i){const a=i;t.push(a.data()),e.push(r),s.push(a)}}if(t.length>0){const r=yield Promise.all(t);for(let i=0;ime(s.totals[i],L(a,r)));s.totals[i]=l,o?.dispose()}}})()}onEpochEnd(t,e){var s=this;return(0,N.A)(function*(){if(null!=e)for(const r of s.params.metrics)null!=s.totals[r]&&("number"==typeof s.totals[r]?e[r]=s.totals[r]/s.seen:Z(()=>{const i=L(je(1,s.seen),s.totals[r]);e[r]=i,s.totals[r].dispose(),nr(e[r])}))})()}}class q$ extends Ca{onTrainBegin(t){var e=this;return(0,N.A)(function*(){e.epoch=[],e.history={}})()}onEpochEnd(t,e){var s=this;return(0,N.A)(function*(){null==e&&(e={}),s.epoch.push(t);for(const r in e)null==s.history[r]&&(s.history[r]=[]),s.history[r].push(e[r])})()}syncData(){var t=this;return(0,N.A)(function*(){const e=[],s=[],r=[];for(const a in t.history){const o=t.history[a];for(let l=0;l{const o=null!=e?e():Vn();return o-snew Z$(s,t))}let Y$=(()=>{class n{constructor(){}static registerCallbackConstructor(e,s){T(e>=0&&Number.isInteger(e),()=>`Verbosity level is expected to be an integer >= 0, but got ${e}`),n.checkForDuplicate(s),null==n.constructors[e]&&(n.constructors[e]=[]),n.constructors[e].push(s)}static checkForDuplicate(e){for(const s in n.constructors)n.constructors[+s].forEach(i=>{if(i===e)throw new z("Duplicate callback constructor.")})}static clear(){n.constructors={}}static createCallbacks(e){const s=[];for(const r in n.constructors){const i=+r;e>=i&&s.push(...n.constructors[i])}return s.map(r=>new r)}}return n.constructors={},n})();function a0(n,t,e,s,r,i,a,o,l){const u=new q$,c=[new K$,...Y$.createCallbacks(t)];null!=n&&c.push(...n),c.push(u);const h=new X$(c);return h.setParams({epochs:e,initialEpoch:s,samples:r,steps:i,batchSize:a,verbose:t,doValidation:o,metrics:l}),{callbackList:h,history:u}}function $r(n,t={},e=!1){return gl(n,Es.getMap().classNameMap,t,"layer",e)}function Fc(n,t){return Z(()=>{"float32"!==n.dtype&&(n=ke(n,"float32"));const e=Ge(bl(n),t,!0),s=Jo(e.shape,vn()),r=zn(Kr(e,s));return je(n,r)})}function Lc(n,t){return Z(()=>pn(bl(ze(t,n)),-1))}function Jf(n,t){return Z(()=>pn(kn(ze(t,n)),-1))}function em(n,t){return Z(()=>{const e=ze(n,t),s=gs(kn(n),vn(),Number.MAX_VALUE),r=kn(je(e,s));return L(100,pn(r,-1))})}function Sl(n,t,e=!1){return Z(()=>{if(e)t=ef(t);else{const s=Ge(t,t.shape.length-1,!0);t=je(t,s)}return t=gs(t,vn(),1-vn()),Jt(Ge(L(ke(n,"float32"),Ns(t)),t.shape.length-1))})}function Mc(n,t,e=!1){return Z(()=>{const s=ke(cc(function T$(n){const t=[ei(n.shape)];return j(n,t)}(n)),"int32"),r=(t=gs(t,vn(),1-vn())).shape;return Sl(j(xy(s,r[r.length-1]),r),t,e)})}function Vc(n,t){return Z(()=>{let e;return e=gs(t,vn(),1-vn()),e=Ns(je(e,ze(1,e))),pn(function sD(n,t){if(!rt(n.shape,t.shape))throw new z(`logits and labels must have the same shape, but got shapes ${JSON.stringify(n.shape)} and ${JSON.stringify(t.shape)}`);return Z(()=>{const e=Er(t),s=Jt(kn(t));return me(ze(e,L(t,n)),Wp(xs(s)))})}(n,e),-1)})}function o0(n,t){return Z(()=>{const e=Fc(n,-1),s=Fc(t,-1),r=L(e,s);return Jt(Ge(r,-1))})}const zc={meanSquaredError:Lc,meanAbsoluteError:Jf,meanAbsolutePercentageError:em,meanSquaredLogarithmicError:function Q$(n,t){return Z(()=>{const e=gs(t,vn(),Number.MAX_VALUE),s=Ns(me(1,e)),r=gs(n,vn(),Number.MAX_VALUE),i=Ns(me(1,r));return pn(bl(ze(s,i)),-1)})},squaredHinge:function J$(n,t){return Z(()=>{const e=Kr(0,ze(1,L(n,t)));return pn(bl(e),-1)})},hinge:function eD(n,t){return Z(()=>{const e=Kr(0,ze(1,L(n,t)));return pn(e,-1)})},categoricalHinge:function tD(n,t){return Z(()=>{const e=Ge(L(n,t),-1),s=Ws(L(ze(1,n),t),-1);return Kr(0,me(1,ze(s,e)))})},logcosh:function nD(n,t){return Z(()=>{const e=Math.log(2),s=ze(t,n),r=ze(me(s,ul(L(-2,s))),e);return pn(r,-1)})},categoricalCrossentropy:Sl,sparseCategoricalCrossentropy:Mc,binaryCrossentropy:Vc,kullbackLeiblerDivergence:function rD(n,t){return Z(()=>{const e=gs(n,vn(),1),s=gs(t,vn(),1);return Ge(L(n,Ns(je(e,s))),-1)})},poisson:function iD(n,t){return Z(()=>{const e=Ns(me(vn(),t));return pn(ze(t,L(n,e)),-1)})},cosineProximity:o0};function tm(n){if("string"==typeof n){if(n in zc)return zc[n];let t=`Unknown loss ${n}`;throw n.toLowerCase().includes("softmaxcrossentropy")&&(t=`Unknown loss ${n}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new z(t)}return n}function l0(n,t){return Z(()=>{const e=L(.5,As(t)),s=cr(ys(t,e),n.dtype);return pn(rr(n,s),-1)})}function u0(n,t){return Z(()=>cr(rr(el(n,-1),el(t,-1)),"float32"))}function uD(n,t){return Vc(n,t)}function cD(n,t){return n.rank===t.rank&&(n=cl(n,[n.rank-1])),(t=el(t,-1)).dtype!==n.dtype&&(t=ke(t,n.dtype)),ke(rr(n,t),"float32")}const h0=Sl,d0=Mc,Bc={binaryAccuracy:l0,categoricalAccuracy:u0,precision:function lD(n,t){return Z(()=>{const e=function c0(n,t){return Z(()=>ke(Ge(Cr(rr(n,1),rr(t,1))),"float32"))}(n,t),s=function oD(n,t){return Z(()=>ke(Ge(Cr(rr(n,0),rr(t,1))),"float32"))}(n,t),r=me(e,s);return ke(Yn(ys(r,0),je(e,r),0),"float32")})},categoricalCrossentropy:h0,sparseCategoricalCrossentropy:d0,mse:Lc,MSE:Lc,mae:Jf,MAE:Jf,mape:em,MAPE:em,cosine:o0};function yD(n){if("string"==typeof n&&n in Bc)return Bc[n];if("string"!=typeof n&&null!=n)return n;throw new z(`Unknown metric ${n}`)}function Uc(n){if(vs(null!==n,`Unknown LossOrMetricFn ${n}`),"string"==typeof n)return n;{let t;for(const e of Object.keys(zc))if(zc[e]===n){t=e;break}if(void 0!==t)return t;for(const e of Object.keys(Bc))if(Bc[e]===n){t=e;break}return void 0!==t?t:n.name}}function f0(n,t,e=!1){if(null==n||"object"!=typeof n||Object.getPrototypeOf(n)!==Object.prototype||!nm(n))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(e){const s=JSON.stringify(n);s.length>1048576&&console.warn(`User-defined metadata of model "${t}" is too large in size (length=${s.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= 1048576.`)}}function nm(n){if(null===n)return!0;if("object"==typeof n){if(Object.getPrototypeOf(n)===Object.prototype){const t=Object.keys(n);for(const e of t)if("string"!=typeof e||!nm(n[e]))return!1;return!0}if(Array.isArray(n)){for(const t of n)if(!nm(t))return!1;return!0}return!1}{const t=typeof n;return"string"===t||"number"===t||"boolean"===t}}function Wc(n,t,e=console.log){let s="";for(let r=0;r0&&(s=s.slice(0,s.length-1)+" "),s+=n[r],s=s.slice(0,t[r]),s+=" ".repeat(t[r]-s.length);e(s)}function TD(n,t,e){let s,r;try{r=n.inboundNodes.map(l=>JSON.stringify(l.inputShapes)).join(",")}catch{r="multiple"}try{s=JSON.stringify(n.outputShape)}catch{s="multiple"}Wc([`${n.name} (${n.getClassName()})`,r,s,n.countParams().toString()],t,e)}function SD(n,t,e,s){let r,i;try{i=n.inboundNodes.map(h=>JSON.stringify(h.inputShapes)).join(",")}catch{i="multiple"}try{r=JSON.stringify(n.outputShape)}catch{r="multiple"}const a=[];for(const h of n.inboundNodes)if(!(null!=e&&e.length>0&&-1===e.indexOf(h)))for(let d=0;dy.name)}`);Jr(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(y=>y.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(const y of this.outputs){const v=y.nodeIndex,w=y.tensorIndex;this.outputLayers.push(y.sourceLayer),this.outputLayersNodeIndices.push(v),this.outputLayersTensorIndices.push(w)}for(const y of this.inputs){const b=y.sourceLayer,v=y.nodeIndex,w=y.tensorIndex;vs(0===v,"input layer has >1 nodes"),vs(0===w,"input layer has >1 tensors"),this.inputLayers.push(b),this.inputLayersNodeIndices.push(v),this.inputLayersTensorIndices.push(w)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let y=0;yy.shape),this.internalOutputShapes=this.outputs.map(y=>y.shape);const e={},s={},r={},i={},a={},o=[],l=(y,b,v,w,S,I)=>{(null==w||null==S||null==I)&&(w=y.sourceLayer,S=y.nodeIndex,I=y.tensorIndex);const k=w.inboundNodes[S];if(-1!==v.indexOf(k))throw new Rs(`The tensor ${y.name} at layer "${w.name}" is part of a cycle.`);if(-1!==b.indexOf(k))return;this.containerNodes.add(Xs.nodeKey(w,S)),w.id in a||(a[w.id]=Object.keys(a).length),-1===v.indexOf(k)&&v.push(k);const D=k.inboundLayers.length;for(let P=0;P=0;)v.splice(v.indexOf(k),1);o.push(k)},u=[],c=[];for(const y of this.outputs)l(y,u,c);const h=o.slice().reverse();for(const y of h){s[y.id]=y,y.id in e||(e[y.id]=0);let b=e[y.id];b=Math.max(b,null==r[y.outboundLayer.id]?0:r[y.outboundLayer.id]),r[y.outboundLayer.id]=b,i[y.outboundLayer.id]=y.outboundLayer,e[y.id]=b;for(let w=0;wparseInt(y,10)).sort(Cc);this.layers=[];for(const y of f){const b=p[y];b.sort((v,w)=>{const S=a[v.id],I=a[w.id];return SI?1:0});for(const v of b)v instanceof Xs&&this.internalContainerRefs.push(v),this.layers.push(v)}this.layersByDepth=p,f=Object.keys(d).map(y=>parseInt(y,10)).sort(Cc);const g=this.inputs.slice(),m=[];for(const y of f)for(const b of d[y]){const v=b.outboundLayer;if(null!=v){for(const w of b.inputTensors)if(-1===g.indexOf(w))throw new Rs(`Graph disconnected: cannot obtain value for tensor ${w} at layer "${v.name}". The following previous layers were accessed without issue: ${m}`);for(const w of b.outputTensors)g.push(w);m.push(v.name)}}this.nodesByDepth=d;const x=this.layers.map(y=>y.name);for(const y of x){const b=x.filter(v=>v===y).length;if(1!==b)throw new Rs(`The name "${y}" is used ${b} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(x))}this.outboundNodes=[],this.inboundNodes=[],new Dc({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(y=>null),outputMasks:this.outputs.map(y=>null),inputShapes:this.inputs.map(y=>y.shape),outputShapes:this.outputs.map(y=>y.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(0===this._refCount)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();const t={refCountAfterDispose:null,numDisposedVariables:0};if(0==--this._refCount){for(const e of this.layers)t.numDisposedVariables+=e.dispose().numDisposedVariables;for(const e of this.internalContainerRefs)t.numDisposedVariables+=e.dispose().numDisposedVariables}return t.refCountAfterDispose=this._refCount,t}get trainable(){return this.trainable_}set trainable(t){this.layers.forEach(e=>{e._trainableWeights.forEach(s=>s.trainable=t)}),this.trainable_=t}get trainableWeights(){if(this._trainableWeights.length>0)throw new z("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let t=[];for(const e of this.layers)t=t.concat(e.trainableWeights);return t}get nonTrainableWeights(){const t=[];for(const e of this.layers)t.push(...e.nonTrainableWeights);if(!this.trainable){const e=[];for(const s of this.layers)e.push(...s.trainableWeights);return e.concat(t)}return t}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(t,e=!0){const s={};let r=0;const i=(n=>{const t=Object.keys(n);if(0===t.length)return!1;const e=t[0].split("/");return!isNaN(parseInt(e[e.length-1],10))})(t);i&&this.parseWeights(t);for(const o of this.layers)for(const[l,u]of o.weights.entries()){const c=i?`${u.name.split("/").slice(0,-1).join("/")+"/"}${l}`:u.originalName;if(null!=s[c])throw new z(`Duplicate weight name: ${c}`);s[c]=u,r++}const a=[];for(const o in t){let l=o;if(null==s[o]){const u=o.split("/");l=u.slice(0,-2).concat([u[u.length-1]]).join("/")}if(null!=s[l])a.push([s[l],t[o]]);else if(e)throw new z(`Provided weight data has no target variable: ${o}`);delete s[l]}if(e){const o=[];for(const l in s)o.push(l);if(o.length>0)throw new z(`${o.length} of ${r} weights are not set: ${o}`)}Zf(a)}parseWeights(t){for(const e in Object.keys(t)){const s=e.split("/"),r=["vars","layer_checkpoint_dependencies"],i=s.map(a=>a.startsWith("_")?a.slice(1):a).filter(a=>!r.includes(a)).join("/");i!==e&&(t[i]=t[e],delete t[e])}}updatedConfig(){const t=this.getConfig(),e={};return e.className=this.getClassName(),e.config=t,e.kerasVersion="tfjs-layers 4.22.0",e.backend="TensorFlow.js",e}toJSON(t,e=!0){const s=rm(this.updatedConfig());return e?JSON.stringify(s):s}call(t,e){return Z(()=>{t=Ft(t);const s=new ni;for(let r=0;r{let s;return t=Ft(t),s=null==e?Vi(null,t.length):Ft(e),this.runInternalGraph(t,s)[1]})}computeOutputShape(t){const e=Rc(t);if(e.length!==this.inputLayers.length)throw new z(`Invalid inputShape argument ${t}: model has ${this.inputLayers.length} tensor inputs.`);const s={};for(let o=0;oparseInt(o,10)).sort(Cc);if(r.length>1)for(const o of r){const l=this.nodesByDepth[o];for(const u of l){const c=u.outboundLayer;if(-1!==this.inputLayers.map(g=>g.id).indexOf(c.id))continue;const h=[];for(let g=0;gparseInt(l,10)).sort(Cc);for(const l of r){const u=this.nodesByDepth[l];for(const c of u){const h=c.outboundLayer,d=c.inputTensors,p=c.outputTensors,f=new Array;for(const g of d)g.id in s&&f.push(s[g.id]);if(f.length===d.length){let m,x,y,b,g={};if(null!=c.callArgs&&(g=c.callArgs),1===f.length){const[v,w]=f[0];null==g.mask&&(g.mask=w),y=Ft(h.call(v,g)),b=Ft(h.computeMask(v,w)),m=[v],x=[w]}else m=f.map(v=>v[0]),x=f.map(v=>v[1]),null==g.mask&&(g.mask=x),y=Ft(h.call(m,g)),b=Ft(h.computeMask(m,x));if(h.activityRegularizer)throw new dt("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let v=0;v{const t=[];for(const e of this.layers)for(let s=0;s0){const g=[];for(let m=0;m0&&m.apply(ss(y),b)}function u(m){const x=m.name,y=$r(m,null!=e.customObjects?e.customObjects:{});y.setFastWeightInitDuringBuild(r),i[x]=y,m.inboundNodes.forEach(v=>{if(!(v instanceof Array))throw new z(`Corrupted configuration, expected array for nodeData: ${v}`);o(y,v)})}const c=e.name,h=e.layers;for(const m of h)u(m);for(;!l$(a);)for(const m of h){const x=i[m.name];if(x.name in a){const y=a[x.name];delete a[x.name];for(const b of y)l(x,b)}}const d=[],p=[],f=e.inputLayers;for(const m of f){const x=m[0],y=m[1],b=m[2];vs(x in i),d.push(i[x].inboundNodes[y].outputTensors[b])}const g=e.outputLayers;for(const m of g){const x=m[0],y=m[1],b=m[2];vs(x in i),p.push(i[x].inboundNodes[y].outputTensors[b])}return new t({inputs:d,outputs:p,name:c})}get stateful(){if(this._stateful)throw new z("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(const t of this.layers)if(t.stateful)return!0;return!1}resetStates(){Z(()=>{this.layers.forEach(t=>{t.stateful&&t.resetStates()})})}}function x0(n,t){return function g0(n,t,e){const s=t.length;if(null==n||Array.isArray(n)&&0===n.length)return t.map(r=>null);if(1===s)return Array.isArray(n)&&1===n.length?n:"object"==typeof n&&t[0]in n?[n[t[0]]]:[n];if(Array.isArray(n)){if(n.length!==s)throw new Error(`Provided ${e} is an array of ${n.length} element(s), but the model has ${s} outputs. Make sure a set of weights is provided for each model output.`);return n}if("object"==typeof n&&Object.keys(n).length>0&&"object"==typeof n[Object.keys(n)[0]]){const r=[];return t.forEach(i=>{r.push(i in n?n[i]:null)}),r}throw new Error(`The model has multiple (${s}) outputs, so ${e} must be either an array with ${s} elements or an object with ${t} keys. Provided ${e} not understood: ${JSON.stringify(n)}`)}(n,t,"classWeight")}function y0(n,t,e,s){return am.apply(this,arguments)}function am(){return(am=(0,N.A)(function*(n,t,e,s){if(null!=t||null!=s)throw new Error("Support sampleWeight is not implemented yet");if(null!=e){const r=Z(()=>{if(1===n.shape.length)return Ai(n);if(2===n.shape.length){if(n.shape[1]>1)return el(n,1);if(1===n.shape[1])return j(n,[n.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${n.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}throw new Error(`Unexpected rank of target (y) tensor (${n.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),i=Array.from(yield r.data());xt(r);const a=[];return i.forEach(o=>{if(null==e[o])throw new Error(`classWeight must contain all classes in the training data. The class ${o} exists in the data but not in classWeight`);a.push(e[o])}),Un(a,"float32")}return null})).apply(this,arguments)}function ID(n,t){return L(n,t)}function b0(n,t){let e,s;e=t.xs,s=t.ys,T(null!=e&&null!=s,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${t}`);const i=v0("input",n.inputNames,e),a=v0("output",n.outputNames,s),o=i[0].shape[0];T(i.length===n.inputs.length,()=>`LayersModel has ${n.inputs.length} inputs, but the dataset provides ${i.length} inputs. (Expected input keys: ${JSON.stringify(n.inputNames)})`),T(a.length===n.outputs.length,()=>`LayersModel has ${n.outputs.length} outputs, but the dataset provides ${a.length} outputs. (Expected output keys: ${JSON.stringify(n.outputNames)})`);for(let l=0;l`Batch size mismatch: input ${n.inputNames[l]} has ${i[l].shape[0]}; expected ${o} based on input ${n.inputNames[0]}.`);for(let l=0;l`Batch size mismatch: output ${n.outputNames[l]} has ${a[l].shape[0]}; expected ${o} based on input ${n.inputNames[0]}.`);return{xs:i,ys:a}}function v0(n,t,e){if(e instanceof Qt)return[e];if(Array.isArray(e))return T(e.length===t.length,()=>`Received an array of ${e.length} Tensors, but expected ${t.length} to match the ${n} keys ${t}.`),e;{const s=[];for(const r of t){if(null==e[r])throw new z(`The feature data generated by the dataset lacks the required ${n} key '${r}'.`);s.push(e[r])}return s}}function om(){return(om=(0,N.A)(function*(n,t,e){const s=null!=e.batchesPerEpoch;if(T(null!=n.optimizer,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),T(null!=e,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),T(null!=e.epochs&&e.epochs>0&&Number.isInteger(e.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${e.epochs}`),T(!s||e.batchesPerEpoch>0&&Number.isInteger(e.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${e.batchesPerEpoch}`),T(null==e.validationSplit,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),n.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");n.isTraining=!0;try{const r=null!=e.validationData;let i,a;if(r)if(w0(e.validationData))T(null==e.validationBatches||e.validationBatches>0&&Number.isInteger(e.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${e.validationBatches}`);else{const m=function kD(n){if(3===n.length)throw new dt("Validation with sample weights is not implemented yet.");return{xs:n[0],ys:n[1]}}(e.validationData);i=m.xs,a=m.ys}const o=n.makeTrainFunction(),l=n.getDedupedMetricsNames();let u;u=r?l.slice().concat(l.map(m=>"val_"+m)):l.slice();const c=r0(e.callbacks,e.yieldEvery),h=null==e.verbose?1:e.verbose,{callbackList:d,history:p}=a0(c,h,e.epochs,null,null,function AD(n,t){let e=null;return null!=t.batchesPerEpoch?e=t.batchesPerEpoch:Number.isFinite(n.size)&&(e=n.size),e}(t,e),null,r,u);d.setModel(n),n.history=p,yield d.onTrainBegin(),n.stopTraining_=!1;let f=null==e.initialEpoch?0:e.initialEpoch,g=yield t.iterator();for(;f=e.batchesPerEpoch:b.done){if(r){let v;v=w0(e.validationData)?Ft(yield n.evaluateDataset(e.validationData,{batches:e.validationBatches})):Ft(n.evaluate(i,a,{batchSize:null==e.validationBatchSize?32:e.validationBatchSize,verbose:0}));for(let w=0;w0)throw new dt("Verbose mode is not implemented yet.");T(!s||e.batches>0&&Number.isInteger(e.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(e.batches)}`);const a=function RD(n){return"function"==typeof n.next}(t)?t:yield t.iterator();let o=0,l=0;for(;!s||l{if(u.value){const{xs:c,ys:h}=b0(n,u.value),d=c.concat(h),p=Z(()=>r(d));if(xt(d),0===l)for(let g=0;gme(i[g],L(f,m))),l>0&&xt(x)}xt(p),o+=f,++l}return i}),u.done){s&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${e.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let u=0;u0&&Number.isInteger(n),()=>`batchSize is required to be a positive integer, but got ${n}`)}function Cl(n,t,e){return null==n?[null]:Array.isArray(n)?n.map(s=>Wi(s,t,e-t)):Wi(n,t,e-t)}function cm(n,t){return Z(()=>null==n?null:Array.isArray(n)?n.map(e=>cm(e,t)):zb(n,"int32"===t.dtype?t:ke(t,"int32")))}function hm(n,t){const e=[];let s=0,r=null;for(;s=n&&(r=n),e.push([s,r]),s=r;return e}function _0(n){const t=[];n instanceof Qt&&(n=[n]);for(let e=0;ee.push(r.id));else if(null!=t)for(const r in t)e.push(t[r].id);const s=[];if(n instanceof Qt)-1===e.indexOf(n.id)&&s.push(n);else if(Array.isArray(n))n.forEach(r=>{-1===e.indexOf(r.id)&&s.push(r)});else if(null!=n)for(const r in n){const i=n[r];-1===e.indexOf(i.id)&&s.push(i)}s.forEach(r=>{r.isDisposed||r.dispose()})}function dm(n){return Array.isArray(n)}function T0(n){return!function DD(n){return n instanceof Qt}(n)&&!dm(n)}function S0(n,t,e,s=!0,r=""){if(null==t||0===t.length){if(null!=n){let a=!1;if(dm(n)&&n.length>0)a=!0;else if(T0(n)){for(const o in n)if(n.hasOwnProperty(o)){a=!0;break}}else a=!0;if(a)throw new z(`Error when checking model ${r} expected no data, but got ${n}`)}return[]}if(null==n)return t.map(a=>null);let i;if(T0(n)){i=[];for(const a of t){if(null==n[a])throw new z(`No data provided for "${a}". Need data for each key in: ${t}`);i.push(n[a])}}else if(dm(n)){if(n.length!==t.length)throw new z(`Error when checking model ${r}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${t.length} Tensor(s), but instead got the following list of Tensor(s): ${n}`);i=n}else{if(t.length>1)throw new z(`The model ${r} expects ${t.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${n.shape}`);i=[n]}if(i=_0(i),null!=e)for(let a=0;a=0&&o.shape[l]!==c)throw new z(`${r} expected a batch of elements where each example has shape [${e[a].slice(1,e[a].length)}] (i.e.,tensor shape [*,${e[a].slice(1,e[a].length)}]) but the ${r} received an input with ${o.shape[0]} examples, each with shape [${o.shape.slice(1,o.shape.length)}] (tensor shape [${o.shape}])`)}}return i}function C0(n,t,e,s=!0,r=""){let i;if(Array.isArray(n)){if(n.length!==t.length)throw new z(`Error when checking model ${r}: the Array of Tensors that you are passing to your model is not the size the the model expected. Expected to see ${t.length} Tensor(s), but instead got ${n.length} Tensors(s).`);i=n}else{if(t.length>1)throw new z(`The model expects ${t.length} ${r} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(n.shape)}.`);i=[n]}if(null!=e)for(let a=0;a{class n extends Xs{constructor(e){super(e),this.isTraining=!1}summary(e,s,r=console.log){if(!this.built)throw new z("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");!function vD(n,t,e,s=console.log){const r=function _D(n){let t=!0;const e=[],s=[];for(const r in n.nodesByDepth)e.push(n.nodesByDepth[r]);for(const r of e){if(r.length>1||1===r.length&&r[0].inboundLayers.length>1){t=!1;break}s.push(...r)}if(t)for(const r of n.layers){let i=!1;for(const a of r.inboundNodes)if(-1!==s.indexOf(a)){if(i){t=!1;break}i=!0}if(!t)break}return t}(n),i=["Layer (type)","Input Shape","Output shape","Param #"];let a;if(r?(t=t||90,e=e||[.32,.61,.89,1]):(t=t||115,e=e||[.24,.48,.7,.8,1]),e[e.length-1]<=1&&(e=e.map(c=>Math.floor(t*c))),!r){i.push("Receives inputs"),a=[];for(const c in n.nodesByDepth)a.push(...n.nodesByDepth[c])}s("_".repeat(t)),Wc(i,e,s),s("=".repeat(t));const o=n.layers;for(let c=0;c_a.adagrad(.01),Adadelta:()=>_a.adadelta(1,.95,vn()),Adam:()=>_a.adam(.001,.9,.999,vn()),Adamax:()=>_a.adamax(.002,.9,.999,vn(),0),RMSProp:()=>_a.rmsprop(.001,.9,0,vn()),SGD:()=>_a.sgd(.01)};if(t.adagrad=t.Adagrad,t.adadelta=t.Adadelta,t.adam=t.Adam,t.adamax=t.Adamax,t.rmsprop=t.RMSProp,t.sgd=t.SGD,n in t)return t[n]();throw new z(`Unknown Optimizer ${n}`)}(e.optimizer),this.isOptimizerOwned=!0;else{if(!(e.optimizer instanceof Xr))throw new z("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=e.optimizer,this.isOptimizerOwned=!1}let s=[];if(Array.isArray(e.loss)||"string"==typeof e.loss||"function"==typeof e.loss)if(Array.isArray(e.loss)){if(e.loss.length!==this.outputs.length)throw new z(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${e.loss}.`);s=e.loss.map(l=>tm(l))}else{const o=tm(e.loss);this.outputs.forEach(l=>{s.push(o)})}else{e.loss=e.loss;for(const o in e.loss)if(-1===this.outputNames.indexOf(o))throw new z(`Unknown entry in loss dictionary: "${o}". Only expected the following keys: ${this.outputNames}`);for(const o of this.outputNames)null==e.loss[o]&&console.warn(`Output "${o}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${o} during training`),s.push(tm(e.loss[o]))}this.lossFunctions=s,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let o=0;o{for(let o=0;o1&&(this.metricsTensors.push([this.lossFunctions[o],o]),this.metricsNames.push(this.outputNames[o]+"_loss"))});const i=function FD(n,t){if(null==n||Array.isArray(n)&&0===n.length)return t.map(s=>[]);let e;if("string"==typeof n||"function"==typeof n)e=[n];else{if(!Array.isArray(n)&&"object"!=typeof n)throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${n}`);e=n}if(Array.isArray(e))return t.map(s=>e);{const s=[];for(const r of t){let i=e.hasOwnProperty(r)?e[r]:[];Array.isArray(i)||(i=[i]),s.push(i)}return s}}(e.metrics,this.outputNames),a=(o,l,u)=>{this.outputNames.length>1&&(l=this.outputNames[o]+"_"+l),this.metricsNames.push(l),this.metricsTensors.push([u,o])};Ui("metric",()=>{for(let o=0;o{let d,p,f;for(const g of c){if("string"==typeof g&&-1!==["accuracy","acc","crossentropy","ce"].indexOf(g)){const x=this.internalOutputShapes[o];let y;1===x[x.length-1]||this.lossFunctions[o]===Vc?-1!==["accuracy","acc"].indexOf(g)?p=l0:-1!==["crossentropy","ce"].indexOf(g)&&(p=uD):this.lossFunctions[o]===Mc?-1!==["accuracy","acc"].indexOf(g)?p=cD:-1!==["crossentropy","ce"].indexOf(g)&&(p=d0):-1!==["accuracy","acc"].indexOf(g)?p=u0:-1!==["crossentropy","ce"].indexOf(g)&&(p=h0),-1!==["accuracy","acc"].indexOf(g)?y="acc":-1!==["crossentropy","ce"].indexOf(g)&&(y="ce"),f=p,d=""+y}else f=yD(g),d=""+Uc(g);let m;Ui(d,()=>{m=f}),a(o,d,m)}})(i[o])}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){null!=this.collectedTrainableWeights&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(e,s,r={}){const i=null==r.batchSize?32:r.batchSize;um(i);const o=this.standardizeUserDataXY(e,s,!0,i);try{const l=o[0].concat(o[1]);return this.makeTestFunction(),ss(this.testLoop(this.testFunction,l,i,r.verbose,r.steps))}finally{Ks(o[0],e),Ks(o[1],s)}}evaluateDataset(e,s){var r=this;return(0,N.A)(function*(){return r.makeTestFunction(),function $D(n,t,e){return lm.apply(this,arguments)}(r,e,s)})()}checkNumSamples(e,s,r,i="steps"){let a;if(null!=r){if(a=null,null!=s)throw new z(`If ${i} is set, batchSize must be null or undefined.Got batchSize = ${s}`)}else{if(null==e)throw new z(`Either the input data should have a defined shape, or ${i} shoud be specified.`);a=Array.isArray(e)?e[0].shape[0]:e.shape[0]}return a}execute(e,s){if(Array.isArray(s)&&0===s.length)throw new z("`outputs` is an empty Array, which is not allowed.");const r=Array.isArray(s),a=this.retrieveSymbolicTensors(r?s:[s]),o=new ni;if(e instanceof Qt&&(e=[e]),Array.isArray(e)){if(e.length!==this.inputs.length)throw new z(`The number of inputs provided (${e.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let u=0;ul.name);for(let l=0;l0){const i=[];throw s.forEach((a,o)=>{null==a&&i.push(e[o])}),new z(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(i)}`)}return s}predictLoop(e,s=32,r=!1){return Z(()=>{const i=this.checkNumSamples(e);if(r)throw new dt("Verbose predictLoop() is not implemented yet.");const a=hm(i,s),o=this.outputs.map(l=>[]);for(let l=0;l{const d=Cl(e,a[l][0],a[l][1]),p=[];if(Array.isArray(d))for(let g=0;go[h].push(c));return ss(o.map(l=>Bn(l,0)))})}predict(e,s={}){const r=_0(e);C0(r,this.inputNames,this.feedInputShapes,!1);try{const i=null==s.batchSize?32:s.batchSize;return um(i),this.predictLoop(r,i)}finally{Ks(r,e)}}predictOnBatch(e){C0(e,this.inputNames,this.feedInputShapes,!0);const s=(Array.isArray(e)?e[0]:e).shape[0];return this.predictLoop(e,s)}standardizeUserDataXY(e,s,r=!0,i){if(null==this.optimizer_)throw new Rs("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");const a=[];for(let o=0;oi.shape[0]));s.sort();const r=Jr(t.map(i=>i.shape[0]));if(r.sort(),s.length>1)throw new z(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(n.map(i=>i.shape))}`);if(r.length>1)throw new z(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(t.map(i=>i.shape))}`);if(s.length>0&&r.length>0&&!rt(s,r))throw new z(`Input Tensors should have the same number of samples as target Tensors. Found ${s[0]} input sample(s) and ${r[0]} target sample(s).`)}(e=S0(e,this.feedInputNames,this.feedInputShapes,!1,"input"),s=S0(s,this.feedOutputNames,a,!1,"target")),function PD(n,t,e){const s=[Lc,Vc,Sl];for(let r=0;r0&&e[0].shape[0]%i!=0)throw new z(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${i}. Found: ${e[0].shape[0]} sample(s).`);return[e,s]}standardizeUserData(e,s,r,i,a=!0,o){var l=this;return(0,N.A)(function*(){const[u,c]=l.standardizeUserDataXY(e,s,a,o);if(null!=r)throw new Error("sample weight is not supported yet.");let h=null;if(null!=i){const d=x0(i,l.outputNames);h=[];for(let p=0;p{const o=this.checkNumSamples(s,r,a,"steps"),l=[];if(i>0)throw new dt("Verbose mode is not implemented yet.");if(null!=a)throw new dt("steps mode in testLoop() is not implemented yet");{const u=hm(o,r),c=Un(Gs(0,o));for(let h=0;h1&&(a+=`_${Nb(e.slice(0,r),i)}`),s.push(a)}return s}makeTrainFunction(){return e=>{const s=[],r=e.slice(0,this.inputs.length),i=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),a=e.slice(this.inputs.length+this.outputs.length,this.inputs.length+2*this.outputs.length),o=[],u=this.collectedTrainableWeights.map(d=>d.read());return[this.optimizer_.minimize(()=>{const d=[];for(let m=0;m1&&m{g=me(g,m)}),g},!0,u)].concat(o)}}makeTestFunction(){this.testFunction=e=>Z(()=>{const s=[];let r;const i=e.slice(0,this.inputs.length),a=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),o=[];for(let c=0;c0){if(y=!0,2!==r.validationData.length)throw 3===r.validationData.length?new dt("validationData including sample weights is not supported yet."):new z(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${r.validationData} is invalid.`);c=r.validationData[0],h=r.validationData[1];const Y=yield i.standardizeUserData(c,h,null,null,!0,g);d=Y[0],p=Y[1],b=d.concat(p)}else if(null!=r.validationSplit&&r.validationSplit>0&&r.validationSplit<1){y=!0;const B=Math.floor(a[0].shape[0]*(1-r.validationSplit)),Y=a[0].shape[0];d=Cl(a,B,Y),l=a,a=Cl(a,0,B),p=Cl(o,B,Y),u=o,o=Cl(o,0,B),b=d.concat(p)}else null!=r.validationSteps&&(y=!0);const v=a.concat(o).concat(f);i.checkTrainableWeightsConsistency();const w=i.makeTrainFunction(),S=i.getDedupedMetricsNames();let I,k;y?(i.makeTestFunction(),I=i.testFunction,k=S.slice().concat(S.map(B=>"val_"+B))):(I=null,b=[],k=S.slice());const D=r0(r.callbacks,r.yieldEvery);return yield i.fitLoop(w,v,S,g,r.epochs,r.verbose,D,I,b,r.shuffle,k,r.initialEpoch,null,null)}finally{i.isTraining=!1,Ks(a,e),Ks(o,s),Ks(l,e),Ks(u,s),Ks(d,c),Ks(p,h),null!=f&&xt(f)}})()}fitLoop(e,s,r,i,a,o,l,u,c,h,d,p,f,g){var m=this;return(0,N.A)(function*(){null==i&&(i=32),null==a&&(a=1),null==h&&(h=!0),null==p&&(p=0);let x=!1;if(null!=u&&null!=c&&(x=!0),null!=g&&(x=!0,null==f))throw new z("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");const y=m.checkNumSamples(s,i,f,"steps_per_epoch");let b;null!=y&&(b=Gs(0,y)),null==o&&(o=1);const{callbackList:v,history:w}=a0(l,o,a,p,y,f,i,x,d);v.setModel(m),m.history=w,yield v.onTrainBegin(),m.stopTraining_=!1;for(let S=p;S{const Y=D[P][0],Q=D[P][1],ee=Wi(k,Y,Q-Y);B.batch=P,B.size=Q-Y;const J=cm(s,ee),se=e(J);for(let ae=0;aeRr(s))}else{const s=Object.keys(this.loss);e={};const r=this.loss;for(const i of s){if("string"!=typeof r[i])throw new Error("Serialization of non-string loss is not supported.");e[i]=Rr(r[i])}}return e}getMetricIdentifiers(){if("string"==typeof this.metrics||"function"==typeof this.metrics)return[Rr(Uc(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(e=>Rr(Uc(e)));{const e={};for(const s in this.metrics)e[s]=Rr(Uc(this.metrics[s]));return e}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(e){if(null!=e.weighted_metrics)throw new Error("Loading weight_metrics is not supported yet.");if(null!=e.loss_weights)throw new Error("Loading loss_weights is not supported yet.");if(null!=e.sample_weight_mode)throw new Error("Loading sample_weight_mode is not supported yet.");const r=$r(sm(e.optimizer_config));let i,a;if("string"==typeof e.loss)i=zi(e.loss);else if(Array.isArray(e.loss))i=e.loss.map(o=>zi(o));else if(null!=e.loss){i={};for(const o in e.loss)i[o]=zi(e.loss[o])}if(Array.isArray(e.metrics))a=e.metrics.map(o=>zi(o));else if(null!=e.metrics){a={};for(const o in e.metrics)a[o]=zi(e.metrics[o])}this.compile({loss:i,metrics:a,optimizer:r})}save(e,s){var r=this;return(0,N.A)(function*(){if("string"==typeof e){const h=(n=>sn.getSaveHandlers(n))(e);if(0===h.length)throw new z(`Cannot find any save handlers for URL '${e}'`);if(h.length>1)throw new z(`Found more than one (${h.length}) save handlers for URL '${e}'`);e=h[0]}if(null==e.save)throw new z("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");const i=yield vx(r.getNamedWeights(s)),u={modelTopology:r.toJSON(null,!1),format:"layers-model",generatedBy:"TensorFlow.js tfjs-layers v4.22.0",convertedBy:null};if(null!=s&&s.includeOptimizer&&null!=r.optimizer){u.trainingConfig=r.getTrainingConfig();const h="optimizer",{data:d,specs:p}=yield vx(yield r.optimizer.getWeights(),h);i.specs.push(...p),i.data=function CS(n){return er.join(n)}([i.data,d])}return null!=r.userDefinedMetadata&&(f0(r.userDefinedMetadata,r.name,!0),u.userDefinedMetadata=r.userDefinedMetadata),u.weightData=i.data,u.weightSpecs=i.specs,e.save(u)})()}setUserDefinedMetadata(e){f0(e,this.name),this.userDefinedMetadata=e}getUserDefinedMetadata(){return this.userDefinedMetadata}}return n.className="Model",n})();pe(Ia),pe((()=>{class n extends Ia{}return n.className="Functional",n})());let I0=(()=>{class n extends Ia{constructor(e){if(super({inputs:[],outputs:[]}),e=e||{},this.trainable=!0,this.built=!1,this.name=null!=e.name?e.name:Ec("sequential_"),null!=e.layers)for(const s of e.layers)this.add(s)}checkShape(e){if(e.inboundNodes[0].outputTensors[0].shape.some(r=>r<0))throw new z(`Negative dimension size caused by adding layer ${e.name} with input shape [${e.inboundNodes[0].inputTensors[0].shape}]`)}add(e){const s=e instanceof n||e instanceof Ia;let r;if(s){if(r=e,1!==r.outputs.length)throw new z("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(1!==r.inputs.length)throw new z("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(0===this.outputs.length){if(0===e.inboundNodes.length){if(null==e.batchInputShape)throw new z("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");const i=function Jb(n){if(null==n.batchShape&&null==n.shape)throw new Error("Please provide to Input either a `shape` or a `batchShape` argument. Note that `shape` does not include the batch dimension.");if(null!=n.batchShape&&null!=n.shape)throw new z("Please provide either a `shape` or `batchShape` argument to Input, but not both.");let t=n.batchShape;null!=n.shape&&null==t&&(t=[null].concat(n.shape));let e=n.dtype;return null==e&&(e="float32"),new wl({batchInputShape:t,name:n.name,dtype:e,sparse:n.sparse}).inboundNodes[0].outputTensors[0]}({batchShape:e.batchInputShape,dtype:e.dtype,name:e.name+"_input"});e.apply(i)}if(s)this.outputs=r.outputs,this.inputs=r.inputs;else{if(1!==e.inboundNodes.length)throw new z(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${e.name} which has ${e.inboundNodes.length} pre-existing inbound connections.`);if(1!==e.inboundNodes[0].outputTensors.length)throw new z("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[e.inboundNodes[0].outputTensors[0]],this.inputs=Qb(this.outputs[0])}this.inboundNodes=[],new Dc({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:Vi(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(i=>i.shape),outputShapes:this.outputs[0].shape})}else{const i=e.apply(this.outputs[0]);if(Array.isArray(i))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[i],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(e),this.built=!1}pop(){if(0===this.layers.length)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),0===this.layers.length)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{const e=this.layers.length-1;this.layers[e].outboundNodes=[],this.outputs=[this.layers[e].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(e,s){return null==this.model&&this.build(),this.model.call(e,s)}build(e){if(At(e),0===this.inputs.length||0===this.outputs.length)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new Ia({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(e,s,r=console.log){this.built||this.build(),super.summary(e,s,r)}setWeights(e){null==this.model&&this.build(),this.model.setWeights(e)}evaluate(e,s,r={}){if(!this.built)throw new Rs("The model needs to be compiled before being used.");return this.model.evaluate(e,s,r)}evaluateDataset(e,s){var r=this;return(0,N.A)(function*(){if(!r.built)throw new Rs("The model needs to be compiled before being used.");return r.model.evaluateDataset(e,s)})()}predict(e,s={}){return null==this.model&&this.build(),this.model.predict(e,s)}predictOnBatch(e){return null==this.model&&this.build(),this.model.predictOnBatch(e)}compile(e){this.build(),this.model.compile(e),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return null==this.model?void 0:this.model.optimizer}set optimizer(e){this.model.optimizer=e}fit(e,s,r={}){var i=this;return(0,N.A)(function*(){if(!i.built)throw new Rs("The model needs to be compiled before being used.");return i.model.fit(e,s,r)})()}fitDataset(e,s){var r=this;return(0,N.A)(function*(){if(!r.built)throw new Rs("The model needs to be compiled before being used.");return r.model.fitDataset(e,s)})()}trainOnBatch(e,s){var r=this;return(0,N.A)(function*(){return r.model.trainOnBatch(e,s)})()}static fromConfig(e,s,r={},i=!1){let a,o={};if(s instanceof Array){if(null==s[0].className||"Merge"===s[0].className)throw new z("Legacy serialization format not supported yet.");a=s}else T(null!=s.layers,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),a=s.layers,delete s.layers,o=s;const l=new e(o);if(!(l instanceof n))throw new dt(`Sequential.fromConfig called on non-Sequential input: ${l}`);for(const u of a){const h=$r(u,void 0,i);i&&h.setFastWeightInitDuringBuild(!0),l.add(h)}return l}set stopTraining(e){if(null==this.model)throw new z("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=e}get stopTraining(){if(null==this.model)throw new z("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){const e=[];for(const s of this.layers){const r={};r.className=s.getClassName(),r.config=s.getConfig(),e.push(r)}return{name:this.name,layers:e}}}return n.className="Sequential",n})();pe(I0);class Wn extends ma{getConfig(){return{}}}pe((()=>{class n extends Wn{apply(e,s=1){return function C$(n,t=1){if(1!==t)throw new dt(`Support for alpha values other than 1 (${t}) is not implemented yet.`);return uc(n)}(e,s)}}return n.className="elu",n})()),pe((()=>{class n extends Wn{apply(e){return yy(e)}}return n.className="selu",n})()),pe((()=>{class n extends Wn{apply(e){return Er(e)}}return n.className="relu",n})()),pe((()=>{class n extends Wn{apply(e){return Z(()=>ya(6,Er(e)))}}return n.className="relu6",n})()),pe((()=>{class n extends Wn{apply(e){return e}}return n.className="linear",n})()),pe((()=>{class n extends Wn{apply(e){return ba(e)}}return n.className="sigmoid",n})()),pe((()=>{class n extends Wn{apply(e){return function E$(n){return Z(()=>{const t=me(.5,L(.2,n));return gs(t,0,1)})}(e)}}return n.className="hardSigmoid",n})()),pe((()=>{class n extends Wn{apply(e){return ul(e)}}return n.className="softplus",n})()),pe((()=>{class n extends Wn{apply(e){return function I$(n){return Z(()=>je(n,me(kn(n),1)))}(e)}}return n.className="softsign",n})()),pe((()=>{class n extends Wn{apply(e){return pc(e)}}return n.className="tanh",n})());let E0=(()=>{class n extends Wn{apply(e,s=-1){return ef(e,s)}}return n.className="softmax",n})();function ri(n){return n.getClassName()}function gm(n,t={}){return gl(n,Es.getMap().classNameMap,t,"activation")}function ii(n){if(null==n){return gm({className:"linear",config:{}})}if("string"==typeof n){const t={};return t.className=n,t.config={},gm(t)}return n instanceof Wn?n:gm(n)}pe(E0),pe((()=>{class n extends Wn{apply(e,s=-1){return my(e,s)}}return n.className="logSoftmax",n})()),pe((()=>{class n extends Wn{apply(e){return Z(()=>Z(()=>{const s=Math.sqrt(2),r=L(.5,me(1,py(je(e,s))));return L(e,r)}))}}return n.className="gelu",n})()),pe((()=>{class n extends Wn{apply(e){return Z(()=>L(.5,L(e,me(1,pc(L(zn(je(2,Math.PI)),me(e,L(.044715,Ri(e,3)))))))))}}return n.className="gelu_new",n})()),pe((()=>{class n extends Wn{apply(e){return Z(()=>L(e,pc(ul(e))))}}return n.className="mish",n})()),pe((()=>{class n extends Wn{apply(e,s=1){return Z(()=>L(ba(L(e,s)),e))}}return n.className="swish",n})());class k0 extends ma{}pe((()=>{class n extends k0{constructor(e){super(),function xm(n){if(null!=n&&"object"!=typeof n)throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${n}`)}(e),this.l1=null==e||null==e.l1?.01:e.l1,this.l2=null==e||null==e.l2?.01:e.l2,this.hasL1=0!==this.l1,this.hasL2=0!==this.l2}apply(e){return Z(()=>{let s=Rn([1]);return this.hasL1&&(s=me(s,Ge(L(this.l1,kn(e))))),this.hasL2&&(s=me(s,Ge(L(this.l2,bl(e))))),j(s,[])})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(e,s){return new e({l1:s.l1,l2:s.l2})}}return n.className="L1L2",n})());const N0={l1l2:"L1L2"};function Gt(n){return Bf(n)}function A0(n,t={}){return gl(n,Es.getMap().classNameMap,t,"regularizer")}function tn(n){return null==n?null:"string"==typeof n?A0({className:n in N0?N0[n]:n,config:{}}):n instanceof k0?n:A0(n)}function Ea(n,t,e){if("number"==typeof n)return Vi(n,t);if(n.length!==t)throw new z(`The ${e} argument must be an integer or tuple of ${t} integers. Received: ${n.length} elements.`);for(let s=0;s(fn(t),"channelsFirst"===t?kt(n,[0,2,3,1]):n))}function L0(n,t){return Z(()=>(fn(t),"channelsFirst"===t?kt(n,[0,2,3,4,1]):n))}function vm(n,t,e,s=[1,1],r="valid",i,a,o=null){return Z(()=>{if(null==i&&(i="channelsLast"),fn(i),3!==n.rank&&4!==n.rank)throw new z(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${n.rank}.`);if(3!==t.rank&&4!==t.rank)throw new z(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${n.rank}.`);let l=bm(n,i);if("causal"===r)throw new dt("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return l=BE({x:l,filter:t,strides:s,pad:"same"===r?"same":"valid",dilations:a,dataFormat:"NHWC",bias:e,activation:o}),"channelsFirst"===i&&(l=kt(l,[0,3,1,2])),l})}pe((()=>{class n extends wt{constructor(e){super(e??{}),this.supportsMasking=!0,null!=e&&(this.maxValue=e.maxValue)}call(e,s){e=ot(e);let r=Er(e);return null!=this.maxValue&&(r=gs(r,0,this.maxValue)),r}computeOutputShape(e){return e}getConfig(){const e={maxValue:this.maxValue},s=super.getConfig();return Object.assign(e,s),e}}return n.className="ReLU",n})()),pe((()=>{class n extends wt{constructor(e){super(e??{}),this.DEFAULT_ALPHA=.3,null==e&&(e={}),this.alpha=null==e.alpha?this.DEFAULT_ALPHA:e.alpha}call(e,s){const r=ot(e);return Up(r,this.alpha)}computeOutputShape(e){return e}getConfig(){const e={alpha:this.alpha},s=super.getConfig();return Object.assign(e,s),e}}return n.className="LeakyReLU",n})()),pe((()=>{class n extends wt{constructor(e){if(super(e??{}),this.DEFAULT_ALPHA_INITIALIZER="zeros",null==e&&(e={}),this.supportsMasking=!0,this.alphaInitializer=en(e.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=tn(e.alphaRegularizer),this.alphaConstraint=Tn(e.alphaConstraint),null==e.sharedAxes)this.sharedAxes=null;else if(Array.isArray(e.sharedAxes))this.sharedAxes=e.sharedAxes;else{if("number"!=typeof e.sharedAxes)throw new z(`Expected sharedAxes to be a number or an array of numbers, but got ${e.sharedAxes}`);this.sharedAxes=[e.sharedAxes]}}build(e){const s=(e=At(e)).slice(1);if(null!=this.sharedAxes)for(const i of this.sharedAxes)s[i-1]=1;this.alpha=this.addWeight("alpha",s,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);const r={};if(null!=this.sharedAxes)for(let i=1;i{class n extends wt{constructor(e){if(super(e??{}),this.DEFAULT_ALPHA=1,null==e&&(e={}),null!=e.alpha&&e.alpha!==this.DEFAULT_ALPHA)throw new dt(`Non-default alpha value (${e.alpha}) is not supported by the ELU layer yet.`);this.alpha=null==e.alpha?this.DEFAULT_ALPHA:e.alpha}call(e,s){const r=ot(e);return uc(r)}computeOutputShape(e){return e}getConfig(){const e={alpha:this.alpha},s=super.getConfig();return Object.assign(e,s),e}}return n.className="ELU",n})()),pe((()=>{class n extends wt{constructor(e){super(e??{}),this.DEFAULT_THETA=1,null==e&&(e={}),this.theta=null==e.theta?this.DEFAULT_THETA:e.theta}call(e,s){const r=ot(e);return L(r,ke(ys(r,this.theta),"float32"))}computeOutputShape(e){return e}getConfig(){const e={theta:this.theta},s=super.getConfig();return Object.assign(e,s),e}}return n.className="ThresholdedReLU",n})()),pe((()=>{class n extends wt{constructor(e){super(e??{}),this.DEFAULT_AXIS=1,null==e&&(e={}),this.softmax=(new E0).apply,this.axis=null==e.axis?this.DEFAULT_AXIS:e.axis}call(e,s){return Z(()=>{let r=ot(e);const i=s.mask;if(null!=i){const a=L(ze(Ir(r.shape),ke(i,r.dtype)),ut(-1e9));r=me(r,a)}return this.axis instanceof Array?this.axis.length>1?xs(ze(r,Hp(r,this.axis,!0))):this.softmax(r,this.axis[0]):this.softmax(r,this.axis)})}computeOutputShape(e){return e}getConfig(){const e={axis:this.axis},s=super.getConfig();return Object.assign(e,s),e}}return n.className="Softmax",n})());class Gc extends wt{constructor(t,e){if(super(e),this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",Gc.verifyArgs(e),this.rank=t,$n(this.rank,"rank"),1!==this.rank&&2!==this.rank&&3!==this.rank)throw new dt(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=Ea(e.kernelSize,t,"kernelSize"),this.strides=Ea(null==e.strides?1:e.strides,t,"strides"),this.padding=null==e.padding?"valid":e.padding,ws(this.padding),this.dataFormat=null==e.dataFormat?"channelsLast":e.dataFormat,fn(this.dataFormat),this.activation=ii(e.activation),this.useBias=null==e.useBias||e.useBias,this.biasInitializer=en(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=Tn(e.biasConstraint),this.biasRegularizer=tn(e.biasRegularizer),this.activityRegularizer=tn(e.activityRegularizer),this.dilationRate=Ea(null==e.dilationRate?1:e.dilationRate,t,"dilationRate"),1===this.rank&&Array.isArray(this.dilationRate)&&1!==this.dilationRate.length)throw new z(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(2===this.rank){if("number"==typeof this.dilationRate)this.dilationRate=[this.dilationRate,this.dilationRate];else if(2!==this.dilationRate.length)throw new z(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(3===this.rank)if("number"==typeof this.dilationRate)this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(3!==this.dilationRate.length)throw new z(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}static verifyArgs(t){if(vs("kernelSize"in t,"required key 'kernelSize' not in config"),"number"!=typeof t.kernelSize&&!Wf(t.kernelSize,"number",1,3))throw new z(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(t.kernelSize)}.`)}getConfig(){const t={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:ri(this.activation),useBias:this.useBias,biasInitializer:an(this.biasInitializer),biasRegularizer:Gt(this.biasRegularizer),activityRegularizer:Gt(this.activityRegularizer),biasConstraint:_n(this.biasConstraint)},e=super.getConfig();return Object.assign(t,e),t}}class ka extends Gc{constructor(t,e){super(t,e),this.kernel=null,ka.verifyArgs(e),this.filters=e.filters,$n(this.filters,"filters"),this.kernelInitializer=en(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=Tn(e.kernelConstraint),this.kernelRegularizer=tn(e.kernelRegularizer)}build(t){t=At(t);const e="channelsFirst"===this.dataFormat?1:t.length-1;if(null==t[e])throw new z(`The channel dimension of the input should be defined. Found ${t[e]}`);const s=t[e],r=this.kernelSize.concat([s,this.filters]);this.kernel=this.addWeight("kernel",r,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[e]:s}}],this.built=!0}call(t,e){return Z(()=>{let s;t=ot(t);const r=null==this.bias?null:this.bias.read(),i=Rb(this.activation.getClassName());if(null!=i&&2===this.rank)s=vm(t,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate,i);else{if(1===this.rank)s=function M0(n,t,e,s=1,r="valid",i,a=1){return Z(()=>{if(null==i&&(i="channelsLast"),fn(i),3!==n.shape.length)throw new z(`The input of a conv1dWithBias operation should be 3, but is ${n.shape.length} instead.`);if(3!==t.shape.length)throw new z(`The kernel for a conv1dWithBias operation should be 3, but is ${t.shape.length} instead`);if(null!=e&&1!==e.shape.length)throw new z(`The bias for a conv1dWithBias operation should be 1, but is ${e.shape.length} instead`);if("channelsFirst"===i&&(n=kt(n,[0,2,1])),"causal"===r)throw new dt("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let o=uy(n,t,s,"same"===r?"same":"valid","NWC",a);return null!=e&&(o=js(o,e)),o})}(t,this.kernel.read(),r,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(2===this.rank)s=vm(t,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate);else{if(3!==this.rank)throw new dt("convolutions greater than 3D are not implemented yet.");s=function V0(n,t,e,s=[1,1,1],r="valid",i,a){return Z(()=>{if(null==i&&(i="channelsLast"),fn(i),4!==n.rank&&5!==n.rank)throw new z(`conv3dWithBias expects input to be of rank 4 or 5, but received ${n.rank}.`);if(4!==t.rank&&5!==t.rank)throw new z(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${n.rank}.`);let o=L0(n,i);if("causal"===r)throw new dt("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return o=mI(o,t,s,"same"===r?"same":"valid","NDHWC",a),null!=e&&(o=js(o,e)),"channelsFirst"===i&&(o=kt(o,[0,4,1,2,3])),o})}(t,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate)}null!=this.activation&&(s=this.activation.apply(s))}return s})}computeOutputShape(t){t=At(t);const e=[],s="channelsLast"===this.dataFormat?t.slice(1,t.length-1):t.slice(2);for(let i=0;i 0 but got ${JSON.stringify(t.filters)}`)}}let wm=(()=>{class n extends ka{constructor(e){super(2,e),n.verifyArgs(e)}getConfig(){const e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if("number"!=typeof e.kernelSize&&!Wf(e.kernelSize,"number",1,2))throw new z(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(e.kernelSize)}.`)}}return n.className="Conv2D",n})();pe(wm);let _m=(()=>{class n extends ka{constructor(e){super(3,e),n.verifyArgs(e)}getConfig(){const e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if("number"!=typeof e.kernelSize&&(!Array.isArray(e.kernelSize)||1!==e.kernelSize.length&&3!==e.kernelSize.length))throw new z(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(e.kernelSize)}.`)}}return n.className="Conv3D",n})();pe(_m),pe((()=>{class n extends wm{constructor(e){if(super(e),this.inputSpec=[new wn({ndim:4})],"same"!==this.padding&&"valid"!==this.padding)throw new z(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(e){if(4!==(e=At(e)).length)throw new z("Input should have rank 4; Received input shape: "+JSON.stringify(e));const s="channelsFirst"===this.dataFormat?1:e.length-1;if(null==e[s])throw new z("The channel dimension of the inputs should be defined. Found `None`.");const r=e[s],i=this.kernelSize.concat([this.filters,r]);this.kernel=this.addWeight("kernel",i,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new wn({ndim:4,axes:{[s]:r}})],this.built=!0}call(e,s){return Z(()=>{let r=ot(e);if(4!==r.shape.length)throw new z(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${r.shape.length}`);const i=r.shape;let o,l;"channelsFirst"===this.dataFormat?(o=2,l=3):(o=1,l=2);const c=i[l],d=this.kernelSize[1],f=this.strides[1],x=[i[0],fr(i[o],this.strides[0],this.kernelSize[0],this.padding),fr(c,f,d,this.padding),this.filters];"channelsLast"!==this.dataFormat&&(r=kt(r,[0,2,3,1]));let y=cy(r,this.kernel.read(),x,this.strides,this.padding);return"channelsLast"!==this.dataFormat&&(y=kt(y,[0,3,1,2])),null!=this.bias&&(y=js(y,this.bias.read(),this.dataFormat)),null!=this.activation&&(y=this.activation.apply(y)),y})}computeOutputShape(e){const s=(e=At(e)).slice();let r,i,a;"channelsFirst"===this.dataFormat?(r=1,i=2,a=3):(r=3,i=1,a=2);const o=this.kernelSize[0],l=this.kernelSize[1],u=this.strides[0],c=this.strides[1];return s[r]=this.filters,s[i]=fr(s[i],u,o,this.padding),s[a]=fr(s[a],c,l,this.padding),s}getConfig(){const e=super.getConfig();return delete e.dilationRate,e}}return n.className="Conv2DTranspose",n})()),pe((()=>{class n extends _m{constructor(e){if(super(e),this.inputSpec=[new wn({ndim:5})],"same"!==this.padding&&"valid"!==this.padding)throw new z(`Conv3DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(e){if(5!==(e=At(e)).length)throw new z("Input should have rank 5; Received input shape: "+JSON.stringify(e));const s="channelsFirst"===this.dataFormat?1:e.length-1;if(null==e[s])throw new z("The channel dimension of the inputs should be defined. Found `None`.");const r=e[s],i=this.kernelSize.concat([this.filters,r]);this.kernel=this.addWeight("kernel",i,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new wn({ndim:5,axes:{[s]:r}})],this.built=!0}call(e,s){return Z(()=>{let r=ot(e);if(5!==r.shape.length)throw new z(`Conv3DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${r.shape.length}`);const i=r.shape;let o,l,u;"channelsFirst"===this.dataFormat?(u=2,o=3,l=4):(u=1,o=2,l=3);const h=i[o],d=i[l],f=this.kernelSize[1],g=this.kernelSize[2],x=this.strides[1],y=this.strides[2],S=[i[0],fr(i[u],this.strides[0],this.kernelSize[0],this.padding),fr(h,x,f,this.padding),fr(d,y,g,this.padding),this.filters];"channelsLast"!==this.dataFormat&&(r=kt(r,[0,2,3,4,1]));let I=yI(r,this.kernel.read(),S,this.strides,this.padding);return"channelsLast"!==this.dataFormat&&(I=kt(I,[0,4,1,2,3])),null!==this.bias&&(I=js(I,this.bias.read(),this.dataFormat)),null!==this.activation&&(I=this.activation.apply(I)),I})}computeOutputShape(e){const s=(e=At(e)).slice();let r,i,a,o;"channelsFirst"===this.dataFormat?(r=1,i=2,a=3,o=4):(r=4,i=1,a=2,o=3);const l=this.kernelSize[0],u=this.kernelSize[1],c=this.kernelSize[2],h=this.strides[0],d=this.strides[1],p=this.strides[2];return s[r]=this.filters,s[i]=fr(s[i],h,l,this.padding),s[a]=fr(s[a],d,u,this.padding),s[o]=fr(s[o],p,c,this.padding),s}getConfig(){const e=super.getConfig();return delete e.dilationRate,e}}return n.className="Conv3DTranspose",n})());let BD=(()=>{class n extends ka{constructor(e,s){if(super(e,s),this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,null==s.filters)throw new z("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(null!=s.kernelInitializer||null!=s.kernelRegularizer||null!=s.kernelConstraint)throw new z("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(null!=s.padding&&"same"!==s.padding&&"valid"!==s.padding)throw new z(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(s.padding)}`);this.depthMultiplier=null==s.depthMultiplier?1:s.depthMultiplier,this.depthwiseInitializer=en(s.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=tn(s.depthwiseRegularizer),this.depthwiseConstraint=Tn(s.depthwiseConstraint),this.pointwiseInitializer=en(s.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=tn(s.pointwiseRegularizer),this.pointwiseConstraint=Tn(s.pointwiseConstraint)}build(e){if((e=At(e)).length{let r;if(e=ot(e),1===this.rank)throw new dt("1D separable convolution is not implemented yet.");return 2===this.rank&&("channelsFirst"===this.dataFormat&&(e=kt(e,[0,2,3,1])),r=by(e,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(r=js(r,this.bias.read(),this.dataFormat)),null!=this.activation&&(r=this.activation.apply(r)),"channelsFirst"===this.dataFormat&&(r=kt(r,[0,3,1,2])),r})}getConfig(){const e=super.getConfig();return delete e.rank,delete e.kernelInitializer,delete e.kernelRegularizer,delete e.kernelConstraint,e.depthwiseInitializer=an(this.depthwiseInitializer),e.pointwiseInitializer=an(this.pointwiseInitializer),e.depthwiseRegularizer=Gt(this.depthwiseRegularizer),e.pointwiseRegularizer=Gt(this.pointwiseRegularizer),e.depthwiseConstraint=_n(this.depthwiseConstraint),e.pointwiseConstraint=_n(this.pointwiseConstraint),e}}return n.className="SeparableConv",n})();function X0(n,t,e,s){if(Array.isArray(n)){if(null!=t||null!=e)throw new z("When inputs is an array, neither initialState or constants should be provided");null!=s&&(e=n.slice(n.length-s,n.length),n=n.slice(0,n.length-s)),n.length>1&&(t=n.slice(1,n.length)),n=n[0]}function r(i){return null==i||Array.isArray(i)?i:[i]}return{inputs:n,initialState:t=r(t),constants:e=r(e)}}function K0(n,t,e,s=!1,r,i,a=!1,o=!1){return Z(()=>{const l=t.shape.length;if(l<3)throw new z(`Input should be at least 3D, but is ${l}D.`);const u=[1,0].concat(Gs(2,l));if(t=kt(t,u),null!=i)throw new dt("The rnn() functoin of the deeplearn.js backend does not support constants yet.");a&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),null!=r&&((r=ke(ke(r,"bool"),"float32")).rank===l-1&&(r=Zn(r,-1)),r=kt(r,u)),s&&(t=Fi(t,0),null!=r&&(r=Fi(r,0)));const c=[];let h,d=e;const p=t.shape[0],f=Li(t);let g,m;null!=r&&(g=Li(r));for(let x=0;xn(y,d));if(null==r)h=b[0],d=b[1];else{const v=Z(()=>{const w=g[x],S=ze(As(w),w);return{output:me(L(b[0],w),L(d[0],S)),newStates:d.map((D,P)=>me(L(b[1][P],w),L(D,S)))}});h=v.output,d=v.newStates}o&&c.push(h)}return o&&(m=ir(c,1)),[h,m,d]})}pe((()=>{class n extends BD{constructor(e){super(2,e)}}return n.className="SeparableConv2D",n})()),pe((()=>{class n extends ka{constructor(e){super(1,e),n.verifyArgs(e),this.inputSpec=[{ndim:3}]}getConfig(){const e=super.getConfig();return delete e.rank,delete e.dataFormat,e}static verifyArgs(e){if("number"!=typeof e.kernelSize&&!Wf(e.kernelSize,"number",1,1))throw new z(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(e.kernelSize)}.`)}}return n.className="Conv1D",n})()),pe((()=>{class n extends wt{constructor(e){super(e),this.cropping="number"==typeof e.cropping?[[e.cropping,e.cropping],[e.cropping,e.cropping]]:"number"==typeof e.cropping[0]?[[e.cropping[0],e.cropping[0]],[e.cropping[1],e.cropping[1]]]:e.cropping,this.dataFormat=void 0===e.dataFormat?"channelsLast":e.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(e){return"channelsFirst"===this.dataFormat?[e[0],e[1],e[2]-this.cropping[0][0]-this.cropping[0][1],e[3]-this.cropping[1][0]-this.cropping[1][1]]:[e[0],e[1]-this.cropping[0][0]-this.cropping[0][1],e[2]-this.cropping[1][0]-this.cropping[1][1],e[3]]}call(e,s){return Z(()=>{if(e=ot(e),"channelsLast"===this.dataFormat){const r=Nc(e,this.cropping[0][0],e.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return Nc(r,this.cropping[1][0],e.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}{const r=Nc(e,this.cropping[0][0],e.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return Nc(r,this.cropping[1][0],e.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){const e={cropping:this.cropping,dataFormat:this.dataFormat},s=super.getConfig();return Object.assign(e,s),e}}return n.className="Cropping2D",n})()),pe((()=>{class n extends wt{constructor(e){super(e),this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=null==e.size?this.DEFAULT_SIZE:e.size,this.dataFormat=null==e.dataFormat?"channelsLast":e.dataFormat,fn(this.dataFormat),this.interpolation=null==e.interpolation?"nearest":e.interpolation,function g$(n){Bi(d$,"InterpolationFormat",n)}(this.interpolation)}computeOutputShape(e){return"channelsFirst"===this.dataFormat?[e[0],e[1],null==e[2]?null:this.size[0]*e[2],null==e[3]?null:this.size[1]*e[3]]:[e[0],null==e[1]?null:this.size[0]*e[1],null==e[2]?null:this.size[1]*e[2],e[3]]}call(e,s){return Z(()=>{let r=ot(e);const i=r.shape;if("channelsFirst"===this.dataFormat){r=kt(r,[0,2,3,1]);const a=this.size[0]*i[2],o=this.size[1]*i[3],l="nearest"===this.interpolation?ar.resizeNearestNeighbor(r,[a,o]):ar.resizeBilinear(r,[a,o]);return kt(l,[0,3,1,2])}{const a=this.size[0]*i[1],o=this.size[1]*i[2];return"nearest"===this.interpolation?ar.resizeNearestNeighbor(r,[a,o]):ar.resizeBilinear(r,[a,o])}})}getConfig(){const e={size:this.size,dataFormat:this.dataFormat,interpolation:this.interpolation},s=super.getConfig();return Object.assign(e,s),e}}return n.className="UpSampling2D",n})()),pe((()=>{class n extends Gc{constructor(e){super(2,e),this.depthwiseKernel=null,this.depthMultiplier=null==e.depthMultiplier?1:e.depthMultiplier,this.depthwiseInitializer=en(e.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=Tn(e.depthwiseConstraint),this.depthwiseRegularizer=tn(e.depthwiseRegularizer)}build(e){if((e=At(e)).length<4)throw new z(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(e)}.`);const s="channelsFirst"===this.dataFormat?1:3;if(null==e[s]||e[s]<0)throw new z(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${e[s]}).`);const r=e[s];this.depthwiseKernel=this.addWeight("depthwise_kernel",[this.kernelSize[0],this.kernelSize[1],r,this.depthMultiplier],null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.bias=this.useBias?this.addWeight("bias",[r*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):null,this.built=!0}call(e,s){return Z(()=>{let r=function UD(n,t,e=[1,1],s="valid",r,i){return Z(()=>{null==r&&(r="channelsLast"),fn(r);let a=bm(n,r);if(4!==n.rank)throw new z(`Input for depthwiseConv2d is required to be 4-D, but is instead ${n.rank}-D`);if(4!==t.rank)throw new z(`depthwiseKernel is required to be 4-D, but is instead ${t.rank}-D`);return a=lc(a,t,e,"same"===s?"same":"valid","NHWC",i),"channelsFirst"===r&&(a=kt(a,[0,3,1,2])),a})}(e=ot(e),this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(r=js(r,this.bias.read(),this.dataFormat)),null!=this.activation&&(r=this.activation.apply(r)),r})}computeOutputShape(e){e=At(e);const r="channelsFirst"===this.dataFormat?e[3]:e[2],i="channelsFirst"===this.dataFormat?e[1]*this.depthMultiplier:e[3]*this.depthMultiplier,a=qs("channelsFirst"===this.dataFormat?e[2]:e[1],this.kernelSize[0],this.padding,this.strides[0]),o=qs(r,this.kernelSize[1],this.padding,this.strides[1]);return"channelsFirst"===this.dataFormat?[e[0],i,a,o]:[e[0],a,o,i]}getConfig(){const e=super.getConfig();return e.depthMultiplier=this.depthMultiplier,e.depthwiseInitializer=an(this.depthwiseInitializer),e.depthwiseRegularizer=Gt(this.depthwiseRegularizer),e.depthwiseConstraint=_n(this.depthwiseRegularizer),e}}return n.className="DepthwiseConv2D",n})());let Na=(()=>{class n extends wt{constructor(e){let s;if(super(e),null==e.cell)throw new z("cell property is missing for the constructor of RNN.");if(s=Array.isArray(e.cell)?new Cm({cells:e.cell}):e.cell,null==s.stateSize)throw new z("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=s,this.returnSequences=null!=e.returnSequences&&e.returnSequences,this.returnState=null!=e.returnState&&e.returnState,this.goBackwards=null!=e.goBackwards&&e.goBackwards,this._stateful=null!=e.stateful&&e.stateful,this.unroll=null!=e.unroll&&e.unroll,this.supportsMasking=!0,this.inputSpec=[new wn({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){return null==this.states_?Gs(0,Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1).map(s=>null):this.states_}setStates(e){this.states_=e}computeOutputShape(e){Kf(e)&&(e=e[0]);let s=this.cell.stateSize;Array.isArray(s)||(s=[s]);const r=s[0];let i;if(i=this.returnSequences?[e[0],e[1],r]:[e[0],r],this.returnState){const a=[];for(const o of s)a.push([e[0],o]);return[i].concat(a)}return i}computeMask(e,s){return Z(()=>{Array.isArray(s)&&(s=s[0]);const r=this.returnSequences?s:null;if(this.returnState){const i=this.states.map(a=>null);return[r].concat(i)}return r})}get states(){if(null==this.states_){const e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,s=[];for(let r=0;rl.shape[l.shape.length-1]),o))throw new z(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=o.map(l=>new wn({shape:[null,l]}));this.stateful&&this.resetStates()}resetStates(e,s=!1){Z(()=>{if(!this.stateful)throw new ur("Cannot call resetStates() on an RNN Layer that is not stateful.");const r=this.inputSpec[0].shape[0];if(null==r)throw new z("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(null==this.states_)this.states_=Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(i=>Rn([r,i])):[Rn([r,this.cell.stateSize])];else if(null==e)xt(this.states_),null!=this.keptStates&&(xt(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(i=>Rn([r,i])):this.states_[0]=Rn([r,this.cell.stateSize]);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new z(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);!0===s?this.keptStates.push(this.states_.slice()):xt(this.states_);for(let i=0;inr(i.clone()))})}apply(e,s){let r=null==s?null:s.initialState,i=null==s?null:s.constants;null==s&&(s={});const a=X0(e,r,i,this.numConstants);e=a.inputs,r=a.initialState,i=a.constants;let o=[],l=[];if(null!=r){s.initialState=r,o=o.concat(r),this.stateSpec=[];for(const c of r)this.stateSpec.push(new wn({shape:c.shape}));l=l.concat(this.stateSpec)}if(null!=i&&(s.constants=i,o=o.concat(i),this.numConstants=i.length),o[0]instanceof pr){const c=[e].concat(o),h=this.inputSpec.concat(l),d=this.inputSpec;this.inputSpec=h;const p=super.apply(c,s);return this.inputSpec=d,p}return super.apply(e,s)}call(e,s){return Z(()=>{const r=null==s?null:s.mask,i=null==s?null:s.training;let a=null==s?null:s.initialState;e=ot(e),null==a&&(a=this.stateful?this.states_:this.getInitialState(e));const o=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(a.length!==o)throw new z(`RNN Layer has ${o} state(s) but was passed ${a.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");const l={training:i},c=K0((g,m)=>{const x=this.cell.call([g].concat(m),l);return[x[0],x.slice(1)]},e,a,this.goBackwards,r,null,this.unroll,this.returnSequences),h=c[0],d=c[1],p=c[2];this.stateful&&this.resetStates(p,i);const f=this.returnSequences?d:h;return this.returnState?[f].concat(p):f})}getInitialState(e){return Z(()=>{let s=Rn(e.shape);return s=Ge(s,[1,2]),s=yl(s),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(r=>r>1?jf(s,[1,r]):s):this.cell.stateSize>1?[jf(s,[1,this.cell.stateSize])]:[s]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),null!=this.cell&&this.cell.setFastWeightInitDuringBuild(e)}getConfig(){const e=super.getConfig(),s={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};null!=this.numConstants&&(s.numConstants=this.numConstants);const r=this.cell.getConfig();return this.getClassName()===n.className&&(s.cell={className:this.cell.getClassName(),config:r}),Object.assign(Object.assign(Object.assign({},r),e),s)}static fromConfig(e,s,r={}){const a=$r(s.cell,r);return new e(Object.assign(s,{cell:a}))}}return n.className="RNN",n})();pe(Na);class Hc extends wt{}let Tm=(()=>{class n extends Hc{constructor(e){super(e),this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,$n(this.units,"units"),this.activation=ii(null==e.activation?this.DEFAULT_ACTIVATION:e.activation),this.useBias=null==e.useBias||e.useBias,this.kernelInitializer=en(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=en(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=en(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=tn(e.kernelRegularizer),this.recurrentRegularizer=tn(e.recurrentRegularizer),this.biasRegularizer=tn(e.biasRegularizer),this.kernelConstraint=Tn(e.kernelConstraint),this.recurrentConstraint=Tn(e.recurrentConstraint),this.biasConstraint=Tn(e.biasConstraint),this.dropout=Sa([1,ti([0,null==e.dropout?0:e.dropout])]),this.recurrentDropout=Sa([1,ti([0,null==e.recurrentDropout?0:e.recurrentDropout])]),this.dropoutFunc=e.dropoutFunc,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=At(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.bias=this.useBias?this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):null,this.built=!0}call(e,s){return Z(()=>{if(2!==e.length)throw new z(`SimpleRNNCell expects 2 input Tensors, got ${e.length}.`);let r=e[1];e=e[0];const i=null!=s.training&&s.training;let a;0As(e),rate:this.dropout,training:i,dropoutFunc:this.dropoutFunc})),0As(r),rate:this.recurrentDropout,training:i,dropoutFunc:this.dropoutFunc}));const o=this.dropoutMask,l=this.recurrentDropoutMask;a=hr(null!=o?L(e,o):e,this.kernel.read()),null!=this.bias&&(a=js(a,this.bias.read())),null!=l&&(r=L(r,l));let u=me(a,hr(r,this.recurrentKernel.read()));return null!=this.activation&&(u=this.activation.apply(u)),[u,u]})}getConfig(){const e=super.getConfig(),s={units:this.units,activation:ri(this.activation),useBias:this.useBias,kernelInitializer:an(this.kernelInitializer),recurrentInitializer:an(this.recurrentInitializer),biasInitializer:an(this.biasInitializer),kernelRegularizer:Gt(this.kernelRegularizer),recurrentRegularizer:Gt(this.recurrentRegularizer),biasRegularizer:Gt(this.biasRegularizer),activityRegularizer:Gt(this.activityRegularizer),kernelConstraint:_n(this.kernelConstraint),recurrentConstraint:_n(this.recurrentConstraint),biasConstraint:_n(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign(Object.assign({},e),s)}}return n.className="SimpleRNNCell",n})();pe(Tm),pe((()=>{class n extends Na{constructor(e){e.cell=new Tm(e),super(e)}call(e,s){return Z(()=>(null!=this.cell.dropoutMask&&(xt(this.cell.dropoutMask),this.cell.dropoutMask=null),null!=this.cell.recurrentDropoutMask&&(xt(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),super.call(e,{mask:null==s?null:s.mask,training:null==s?null:s.training,initialState:null==s?null:s.initialState})))}static fromConfig(e,s){return new e(s)}}return n.className="SimpleRNN",n})());let Sm=(()=>{class n extends Hc{constructor(e){if(super(e),this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.resetAfter)throw new z("GRUCell does not support reset_after parameter set to true.");this.units=e.units,$n(this.units,"units"),this.activation=ii(void 0===e.activation?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=ii(void 0===e.recurrentActivation?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=null==e.useBias||e.useBias,this.kernelInitializer=en(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=en(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=en(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=tn(e.kernelRegularizer),this.recurrentRegularizer=tn(e.recurrentRegularizer),this.biasRegularizer=tn(e.biasRegularizer),this.kernelConstraint=Tn(e.kernelConstraint),this.recurrentConstraint=Tn(e.recurrentConstraint),this.biasConstraint=Tn(e.biasConstraint),this.dropout=Sa([1,ti([0,null==e.dropout?0:e.dropout])]),this.recurrentDropout=Sa([1,ti([0,null==e.recurrentDropout?0:e.recurrentDropout])]),this.dropoutFunc=e.dropoutFunc,this.implementation=e.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=At(e),this.kernel=this.addWeight("kernel",[e[e.length-1],3*this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,3*this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.bias=this.useBias?this.addWeight("bias",[3*this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):null,this.built=!0}call(e,s){return Z(()=>{if(2!==e.length)throw new z(`GRUCell expects 2 input Tensors (inputs, h, c), got ${e.length}.`);const r=null!=s.training&&s.training;let i=e[1];e=e[0],0As(e),rate:this.dropout,training:r,count:3,dropoutFunc:this.dropoutFunc})),0As(i),rate:this.recurrentDropout,training:r,count:3,dropoutFunc:this.dropoutFunc}));const o=this.recurrentDropoutMask;let l,u,c;0{class n extends Na{constructor(e){0===e.implementation&&console.warn("`implementation=0` has been deprecated, and now defaults to `implementation=1`. Please update your layer call."),e.cell=new Sm(e),super(e)}call(e,s){return Z(()=>(null!=this.cell.dropoutMask&&(xt(this.cell.dropoutMask),this.cell.dropoutMask=null),null!=this.cell.recurrentDropoutMask&&(xt(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),super.call(e,{mask:null==s?null:s.mask,training:null==s?null:s.training,initialState:null==s?null:s.initialState})))}static fromConfig(e,s){return 0===s.implmentation&&(s.implementation=1),new e(s)}}return n.className="GRU",n})());let jc=(()=>{class n extends Hc{constructor(e){super(e),this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,$n(this.units,"units"),this.activation=ii(void 0===e.activation?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=ii(void 0===e.recurrentActivation?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=null==e.useBias||e.useBias,this.kernelInitializer=en(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=en(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=en(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=e.unitForgetBias,this.kernelRegularizer=tn(e.kernelRegularizer),this.recurrentRegularizer=tn(e.recurrentRegularizer),this.biasRegularizer=tn(e.biasRegularizer),this.kernelConstraint=Tn(e.kernelConstraint),this.recurrentConstraint=Tn(e.recurrentConstraint),this.biasConstraint=Tn(e.biasConstraint),this.dropout=Sa([1,ti([0,null==e.dropout?0:e.dropout])]),this.recurrentDropout=Sa([1,ti([0,null==e.recurrentDropout?0:e.recurrentDropout])]),this.dropoutFunc=e.dropoutFunc,this.implementation=e.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){var s;let i;if(e=At(e),this.kernel=this.addWeight("kernel",[e[e.length-1],4*this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,4*this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){if(this.unitForgetBias){const a=this.biasInitializer,o=this.units;i=new((s=class extends Ds{apply(u,c){const h=a.apply([o]),d=(new Ub).apply([o]),p=a.apply([2*o]);return Vb(Vb(h,d),p)}}).className="CustomInit",s)}else i=this.biasInitializer;this.bias=this.addWeight("bias",[4*this.units],null,i,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(e,s){return Z(()=>{const r=null!=s.training&&s.training;if(3!==e.length)throw new z(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let i=e[1];const a=e[2];e=e[0],0As(e),rate:this.dropout,training:r,count:4,dropoutFunc:this.dropoutFunc})),0As(i),rate:this.recurrentDropout,training:r,count:4,dropoutFunc:this.dropoutFunc}));const l=this.recurrentDropoutMask;let u,c,h,d;0{class n extends Na{constructor(e){0===e.implementation&&console.warn("`implementation=0` has been deprecated, and now defaults to `implementation=1`. Please update your layer call."),e.cell=new jc(e),super(e)}call(e,s){return Z(()=>(null!=this.cell.dropoutMask&&(xt(this.cell.dropoutMask),this.cell.dropoutMask=null),null!=this.cell.recurrentDropoutMask&&(xt(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),super.call(e,{mask:null==s?null:s.mask,training:null==s?null:s.training,initialState:null==s?null:s.initialState})))}static fromConfig(e,s){return 0===s.implmentation&&(s.implementation=1),new e(s)}}return n.className="LSTM",n})());let Cm=(()=>{class n extends Hc{constructor(e){super(e),this.cells=e.cells}get stateSize(){const e=[];for(const s of this.cells.slice().reverse())Array.isArray(s.stateSize)?e.push(...s.stateSize):e.push(s.stateSize);return e}call(e,s){return Z(()=>{let r=e.slice(1);const i=[];for(const l of this.cells.slice().reverse())Array.isArray(l.stateSize)?i.push(r.splice(0,l.stateSize.length)):i.push(r.splice(0,1));i.reverse();const a=[];let o;for(let l=0;l{Ui(`RNNCell_${i}`,()=>{r.build(e),s=Array.isArray(r.stateSize)?r.stateSize[0]:r.stateSize,e=[e[0],s]})}),this.built=!0}getConfig(){const e=super.getConfig(),i={cells:this.cells.map(a=>({className:a.getClassName(),config:a.getConfig()}))};return Object.assign(Object.assign({},e),i)}static fromConfig(e,s,r={}){const i=[];for(const a of s.cells)i.push($r(a,r));return new e({cells:i})}get trainableWeights(){if(!this.trainable)return[];const e=[];for(const s of this.cells)e.push(...s.trainableWeights);return e}get nonTrainableWeights(){const e=[];for(const s of this.cells)e.push(...s.nonTrainableWeights);if(!this.trainable){const s=[];for(const r of this.cells)s.push(...r.trainableWeights);return s.concat(e)}return e}getWeights(){const e=[];for(const s of this.cells)e.push(...s.weights);return qf(e)}setWeights(e){const s=[];for(const r of this.cells){const a=e.splice(r.weights.length);for(let o=0;onull!=i?i(t(),e):Bb(t(),e),o=()=>vl(a,t,s);return!r||r<=1?nr(o().clone()):Array(r).fill(void 0).map(o).map(u=>nr(u.clone()))}pe(Cm);let GD=(()=>{class n extends Na{constructor(e){if(e.unroll)throw new dt("Unrolling is not possible with convolutional RNNs.");if(Array.isArray(e.cell))throw new dt("It is not possible at the moment to stack convolutional cells.");super(e),this.inputSpec=[new wn({ndim:5})]}call(e,s){return Z(()=>{if(null!=this.cell.dropoutMask&&(xt(this.cell.dropoutMask),this.cell.dropoutMask=null),null!=this.cell.recurrentDropoutMask&&(xt(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),s&&s.constants)throw new z("ConvRNN2D cell does not support constants");return super.call(e,{mask:null==s?null:s.mask,training:null==s?null:s.training,initialState:null==s?null:s.initialState})})}computeOutputShape(e){let s=this.computeSingleOutputShape(e);return this.returnSequences||(s=[s[0],...s.slice(2)]),this.returnState&&(s=[s,...Array(2).fill([e[0],...s.slice(-3)])]),s}getInitialState(e){return Z(()=>{const{stateSize:s}=this.cell,i=this.computeSingleOutputShape(e.shape),o=Rn([i[0],...i.slice(2)]);return Array.isArray(s)?Array(s.length).fill(o):[o]})}resetStates(e,s=!1){Z(()=>{if(!this.stateful)throw new ur("Cannot call resetStates() on an RNN Layer that is not stateful.");const r=this.inputSpec[0].shape,i=this.computeSingleOutputShape(r),a=[i[0],...i.slice(2)];if(null==r[0])throw new z("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(null==this.getStates())this.states_=Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(()=>Rn(a)):[Rn(a)];else if(null==e)xt(this.states_),null!=this.keptStates&&(xt(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>Rn(a)):this.states_[0]=Rn(a);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new z(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);s?this.keptStates.push(this.states_.slice()):xt(this.states_);for(let l=0;lnr(l.clone()))})}computeSingleOutputShape(e){const{dataFormat:s,filters:r,kernelSize:i,padding:a,strides:o,dilationRate:l}=this.cell,u="channelsFirst"===s,h=e[u?4:3],d=qs(e[u?3:2],i[0],a,o[0],l[0]),p=qs(h,i[1],a,o[1],l[1]);return[...e.slice(0,2),...u?[r,d,p]:[d,p,r]]}}return n.className="ConvRNN2D",n})(),Im=(()=>{class n extends jc{constructor(e){const{filters:s,kernelSize:r,strides:i,padding:a,dataFormat:o,dilationRate:l}=e;super(Object.assign(Object.assign({},e),{units:s})),this.filters=s,$n(this.filters,"filters"),this.kernelSize=Ea(r,2,"kernelSize"),this.kernelSize.forEach(u=>$n(u,"kernelSize")),this.strides=Ea(i||1,2,"strides"),this.strides.forEach(u=>$n(u,"strides")),this.padding=a||"valid",ws(this.padding),this.dataFormat=o||"channelsLast",fn(this.dataFormat),this.dilationRate=Ea(l||1,2,"dilationRate"),this.dilationRate.forEach(u=>$n(u,"dilationRate"))}build(e){var s;e=At(e);const r="channelsFirst"===this.dataFormat?1:e.length-1;if(null==e[r])throw new z(`The channel dimension of the input should be defined. Found ${e[r]}`);const o=this.kernelSize.concat([e[r],4*this.filters]);this.kernel=this.addWeight("kernel",o,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);const l=this.kernelSize.concat([this.filters,4*this.filters]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",l,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let u;if(this.unitForgetBias){const c=this.biasInitializer,h=this.filters;u=new((s=class extends Ds{apply(p,f){return Hf([c.apply([h]),Ir([h]),c.apply([2*h])])}}).className="CustomInit",s)}else u=this.biasInitializer;this.bias=this.addWeight("bias",[4*this.filters],null,u,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(e,s){return Z(()=>{if(3!==e.length)throw new z(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);const r=s.training||!1,i=e[0],a=e[1],o=e[2];0As(i),rate:this.dropout,training:r,count:4,dropoutFunc:this.dropoutFunc}));const u=this.dropoutMask,c=(xe,Se,be)=>Se&&Se[be]?L(Se[be],xe):xe;let h=c(i,u,0),d=c(i,u,1),p=c(i,u,2),f=c(i,u,3);0As(a),rate:this.recurrentDropout,training:r,count:4,dropoutFunc:this.dropoutFunc}));const g=this.recurrentDropoutMask;let m=c(a,g,0),x=c(a,g,1),y=c(a,g,2),b=c(a,g,3);const[w,S,I,k]=bs(this.kernel.read(),4,3),[D,P,B,Y]=this.useBias?bs(this.bias.read(),4):[null,null,null,null];h=this.inputConv(h,w,D,this.padding),d=this.inputConv(d,S,P,this.padding),p=this.inputConv(p,I,B,this.padding),f=this.inputConv(f,k,Y,this.padding);const[Q,ee,J,se]=bs(this.recurrentKernel.read(),4,3);m=this.recurrentConv(m,Q),x=this.recurrentConv(x,ee),y=this.recurrentConv(y,J),b=this.recurrentConv(b,se);const ae=this.recurrentActivation.apply(me(h,m)),te=this.recurrentActivation.apply(me(d,x)),le=me(L(te,o),L(ae,this.activation.apply(me(p,y)))),ge=L(this.recurrentActivation.apply(me(f,b)),this.activation.apply(le));return[ge,ge,le]})}getConfig(){const r=function(n,t){var e={};for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&t.indexOf(s)<0&&(e[s]=n[s]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(s=Object.getOwnPropertySymbols(n);r{class n extends GD{constructor(e){const s=new Im(e);super(Object.assign(Object.assign({},e),{cell:s}))}static fromConfig(e,s){return new e(s)}}return n.className="ConvLSTM2D",n})());let Em=(()=>{class n extends wt{constructor(e){super(e),this.rate=Math.max(Math.min(e.rate,1),0),this.noiseShape=e.noiseShape,this.seed=e.seed,this.supportsMasking=!0}getNoiseShape(e){if(null==this.noiseShape)return this.noiseShape;const s=e.shape,r=[];for(let i=0;i{this.invokeCallHook(e,s);const r=ot(e);if(0Bb(r,this.rate,a,this.seed),()=>r,i)}return e})}getConfig(){const e={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},s=super.getConfig();return Object.assign(e,s),e}dispose(){return super.dispose()}}return n.className="Dropout",n})();pe(Em),pe((()=>{class n extends Em{constructor(e){super(e),this.inputSpec=[{ndim:3}]}getNoiseShape(e){const s=e.shape;return[s[0],1,s[2]]}}return n.className="SpatialDropout1D",n})());let ev=(()=>{class n extends wt{constructor(e){if(super(e),this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",null==e.batchInputShape&&null==e.inputShape&&null!=e.inputDim){let s=null;null!=e.batchSize&&(s=e.batchSize),this.batchInputShape=[s,e.inputDim]}this.units=e.units,$n(this.units,"units"),this.activation=ii(e.activation),null!=e.useBias&&(this.useBias=e.useBias),this.kernelInitializer=en(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=en(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=Tn(e.kernelConstraint),this.biasConstraint=Tn(e.biasConstraint),this.kernelRegularizer=tn(e.kernelRegularizer),this.biasRegularizer=tn(e.biasRegularizer),this.activityRegularizer=tn(e.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(e){const s=(e=At(e))[e.length-1];null==this.kernel&&(this.kernel=this.addWeight("kernel",[s,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:s}}],this.built=!0}computeOutputShape(e){const s=(e=At(e)).slice();return s[s.length-1]=this.units,s}call(e,s){return Z(()=>{this.invokeCallHook(e,s);const r=ot(e),i=Rb(this.activation.getClassName());let a;return null!=i?a=hr(r,this.kernel.read(),i,this.bias?this.bias.read():null):(a=hr(r,this.kernel.read()),null!=this.bias&&(a=js(a,this.bias.read())),null!=this.activation&&(a=this.activation.apply(a))),a})}getConfig(){const e={units:this.units,activation:ri(this.activation),useBias:this.useBias,kernelInitializer:an(this.kernelInitializer),biasInitializer:an(this.biasInitializer),kernelRegularizer:Gt(this.kernelRegularizer),biasRegularizer:Gt(this.biasRegularizer),activityRegularizer:Gt(this.activityRegularizer),kernelConstraint:_n(this.kernelConstraint),biasConstraint:_n(this.biasConstraint)},s=super.getConfig();return Object.assign(e,s),e}}return n.className="Dense",n})();pe(ev),pe((()=>{class n extends wt{constructor(e){super(e=e||{}),this.inputSpec=[{minNDim:3}],this.dataFormat=e.dataFormat}computeOutputShape(e){e=At(e);for(const s of e.slice(1))if(null==s)throw new z(`The shape of the input to "Flatten" is not fully defined (got ${e.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[e[0],ei(e,1)]}call(e,s){return Z(()=>{this.invokeCallHook(e,s);let r=ot(e);if("channelsFirst"===this.dataFormat&&r.rank>1){const i=[0];for(let a=2;a{class n extends wt{constructor(e){super(e),this.supportsMasking=!0,this.activation=ii(e.activation)}call(e,s){return Z(()=>{this.invokeCallHook(e,s);const r=ot(e);return this.activation.apply(r)})}getConfig(){const e={activation:ri(this.activation)},s=super.getConfig();return Object.assign(e,s),e}}return n.className="Activation",n})()),pe((()=>{class n extends wt{constructor(e){super(e),this.n=e.n,this.inputSpec=[{ndim:2}]}computeOutputShape(e){return[e[0],this.n,e[1]]}call(e,s){return Z(()=>function _$(n,t){return Z(()=>{if(2!==n.shape.length)throw new z(`repeat() expects a rank-2 tensor, but received a rank-${n.shape.length} tensor.`);return jf(yl(n,1),[1,t,1])})}(e=ot(e),this.n))}getConfig(){const e={n:this.n},s=super.getConfig();return Object.assign(e,s),e}}return n.className="RepeatVector",n})()),pe((()=>{class n extends wt{constructor(e){super(e),this.targetShape=e.targetShape;for(let s=0;s{this.invokeCallHook(e,s);const r=ot(e),i=r.shape,a=i.slice(0,1).concat(this.fixUnknownDimension(i.slice(1),this.targetShape));return j(r,a)})}getConfig(){const e={targetShape:this.targetShape},s=super.getConfig();return Object.assign(e,s),e}}return n.className="Reshape",n})()),pe((()=>{class n extends wt{constructor(e){if(super(e),null==e.dims)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(e.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${e.dims} instead.`);const s=Gs(1,e.dims.length+1);if(!rt(e.dims.slice().sort(),s))throw new Error("Invalid permutation `dims`: "+JSON.stringify(e.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=e.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new wn({ndim:this.dims.length+1})]}computeOutputShape(e){const s=(e=At(e)).slice();return this.dims.forEach((r,i)=>{s[i+1]=e[r]}),s}call(e,s){return kt(ot(e),this.dimsIncludingBatch)}getConfig(){const e={dims:this.dims},s=super.getConfig();return Object.assign(e,s),e}}return n.className="Permute",n})()),pe((()=>{class n extends wt{constructor(e){super(e??{}),this.supportsMasking=!0,this.maskValue=null!=e?null==e.maskValue?0:e.maskValue:0}computeOutputShape(e){return e}getConfig(){const e=super.getConfig(),s={maskValue:this.maskValue};return Object.assign(s,e),s}computeMask(e,s){const r=ot(e);return Fp(il(r,this.maskValue),-1)}call(e,s){return Z(()=>{this.invokeCallHook(e,s);const r=ot(e),o=Fp(il(r,this.maskValue),-1,!0);return L(r,ke(o,r.dtype))})}}return n.className="Masking",n})()),pe((()=>{class n extends wt{constructor(e){if(super(e),this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",null==e.batchInputShape&&null==e.inputShape){let s=null;null!=e.batchSize&&(s=e.batchSize),this.batchInputShape=null==e.inputLength?[s,null]:[s].concat(Ft(e.inputLength))}this.inputDim=e.inputDim,$n(this.inputDim,"inputDim"),this.outputDim=e.outputDim,$n(this.outputDim,"outputDim"),this.embeddingsInitializer=en(e.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=tn(e.embeddingsRegularizer),this.activityRegularizer=tn(e.activityRegularizer),this.embeddingsConstraint=Tn(e.embeddingsConstraint),this.maskZero=e.maskZero,this.supportsMasking=e.maskZero,this.inputLength=e.inputLength}build(e){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(e){}computeMask(e,s){return Z(()=>this.maskZero?(e=ot(e),il(e,Et(e))):null)}computeOutputShape(e){if(e=At(e),null==this.inputLength)return[...e,this.outputDim];const s=Ft(this.inputLength);if(s.length!==e.length-1)throw new z(`"inputLength" is ${this.inputLength}, but received input shape has shape ${e}`);{let r=0;for(let i=0;i{this.invokeCallHook(e,s);let r=ot(e);"int32"!==r.dtype&&(r=cr(r,"int32"));const i=zb(this.embeddings.read(),j(r,[r.size]));return j(i,At(this.computeOutputShape(r.shape)))})}getConfig(){const e={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:an(this.embeddingsInitializer),embeddingsRegularizer:Gt(this.embeddingsRegularizer),activityRegularizer:Gt(this.activityRegularizer),embeddingsConstraint:_n(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},s=super.getConfig();return Object.assign(e,s),e}}return n.className="Embedding",n})());class Gi extends wt{constructor(t){super(t||{}),this.supportsMasking=!0}mergeFunction(t){throw new dt}computeElementwiseOpOutputShape(t,e){if(null==t||null==e)return null;if(t.length1)throw new z(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(t)}.`);let s=null==t[0]?null:t[0].slice(1);for(let i=1;ii.length);this.reshapeRequired=-1!==t.indexOf(null)||1!==Jr(r).length}call(t,e){return Z(()=>{if(this.reshapeRequired){const s=[],r=t.map(i=>i.rank);if(-1===r.indexOf(null)){const i=ti(r);for(let a of t){const o=a.rank;for(let l=0;l1){const c=Gs(1,u).concat([0]);s.push(kt(l,c)),i=!0}else s.push(l)}let a=this.mergeFunction(s);const o=a.rank;if(i)if(null==o){const l=a.shape,c=l[l.length-1],h=[c].concat(l.slice(0,l.length-1));a=j(kt(j(a,[-1,c]),[1,0]),h)}else if(o>1){const l=[o-1].concat(Gs(0,o-1));a=kt(a,l)}return a}}return this.mergeFunction(t)})}computeOutputShape(t){let e;e=null==t[0]?null:t[0].slice(1);for(let r=1;r{if(null==e)return null;if(!Array.isArray(e))throw new z("`mask` should be an Array");if(!Array.isArray(t))throw new z("`inputs` should be an Array");if(e.length!==t.length)throw new z(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${t.length} vs ${e.length})`);if(e.every(r=>null==r))return null;let s=(e=e.map(r=>null==r?r:Zn(r,0)))[0];for(let r=1;r{let a;fn(r),Db(i),ws(s),null==e&&(e=[1,1]),null==s&&(s="valid"),null==r&&(r="channelsLast"),null==i&&(i="max"),n=bm(n,r);const o="same"===s?"same":"valid";return a="max"===i?jp(n,t,e,o):Vp(n,t,e,o),"channelsFirst"===r&&(a=kt(a,[0,3,1,2])),a})}function mv(n,t,e,s,r,i){return Z(()=>{let a;fn(r),Db(i),ws(s),null==e&&(e=[1,1,1]),null==s&&(s="valid"),null==r&&(r="channelsLast"),null==i&&(i="max"),n=L0(n,r);const o="same"===s?"same":"valid";return a="max"===i?WI(n,t,e,o):GC(n,t,e,o),"channelsFirst"===r&&(a=kt(a,[0,4,1,2,3])),a})}pe((()=>{class n extends Gi{constructor(e){super(e)}mergeFunction(e){return Z(()=>{let s=e[0].clone();for(let r=1;r{class n extends Gi{constructor(e){super(e)}mergeFunction(e){return Z(()=>{let s=e[0].clone();for(let r=1;r{class n extends Gi{constructor(e){super(e)}mergeFunction(e){return Z(()=>{let s=e[0].clone();for(let r=1;r{class n extends Gi{constructor(e){super(e)}mergeFunction(e){return Z(()=>{let s=e[0];for(let r=1;r{class n extends Gi{constructor(e){super(e)}mergeFunction(e){return Z(()=>{let s=e[0];for(let r=1;r{class n extends Gi{constructor(e){super(e),this.DEFAULT_AXIS=-1,null==e&&(e={}),this.axis=null==e.axis?this.DEFAULT_AXIS:e.axis,this.supportsMasking=!0,this.reshapeRequired=!1}build(e){if(!Array.isArray(e)||!Array.isArray(e[0])||1===e.length)throw new z("A `Concatenate` layer should be called on a list of at least 2 inputs");let s=!0;for(const i of e)if(null!=i){s=!1;break}if(s)return;const r=[];for(let i=0;i1)throw new z("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}mergeFunction(e){return Z(()=>Hf(e,this.axis))}computeOutputShape(e){if(!Array.isArray(e)||!Array.isArray(e[0]))throw new z("A `Concatenate` layer should be called on a list of inputs.");const s=e,r=s[0].slice(),i=this.axis<0?r.length+this.axis:this.axis;for(const a of s.slice(1)){if(null==r[i]||null==a[i]){r[i]=null;break}r[i]+=a[i]}return r}computeMask(e,s){if(null==s)return null;if(!Array.isArray(s))throw new z("`mask` should be an array for Concatenate");if(!Array.isArray(e))throw new z("`inputs` should be an array for Concatenate");if(s.length!==e.length)throw new z(`Mismatch in the length of mask (${s.length}) and the legnth of inputs (${e.length})`);return Z(()=>{let r=!0;if(s.forEach(o=>{null==o||(r=!1)}),r)return null;const i=[];for(let o=0;o{class n extends Gi{constructor(e){super(e),this.axes=e.axes,this.normalize=null!=e.normalize&&e.normalize,this.supportsMasking=!0,this.reshapeRequired=!1}build(e){T(Array.isArray(e)&&2===e.length&&Array.isArray(e[0])&&Array.isArray(e[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");const s=e[0],r=e[1];if(s.length>3||r.length>3)throw new dt("Dot layer does not support tensors of 4D or higher rank yet.");const i=this.interpretAxes(s,r);if(s[i[0]]!==r[i[1]])throw new z(`Dimension incompatibility: ${s[i[0]]} !== ${r[i[1]]}`)}mergeFunction(e){if(2!==e.length)throw new z(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${e.length} input(s).`);let i,s=e[0],r=e[1];return i=Array.isArray(this.axes)?this.axes.map((a,o)=>Il(a,e[o].shape.length)):[Il(this.axes,s.shape.length),Il(this.axes,r.shape.length)],this.normalize&&(s=Fc(s,i[0]),r=Fc(r,i[1])),function HD(n,t,e){if(n.shape.length>3||t.shape.length>3)throw new dt("batchDot is not implemented for tensors of 4D or higher rank yet");if(T(n.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${n.shape.length}`),T(n.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${t.shape.length}`),"number"==typeof e&&(e=[e,e]),"complex64"===n.dtype||"complex64"===t.dtype)throw new dt("batchDot is not implemented for complex64-type Tensors yet.");const s=n.shape.length,r=t.shape.length;null==e&&(e=[s-1,r-2]);const i=e;return Z(()=>{let a,o;if(s>r){a=s-r;const l=[];for(let u=0;us){a=r-s;const l=[];for(let u=0;u0){let l;l=s>r?s+r-3:s-1;const u=[];for(let c=l;c"A `Dot` layer should be called on a list of exactly 2 inputs.");const s=e[0].slice(),r=e[1].slice();if(s.length>3||r.length>3)throw new dt("Dot layer does not support tensors of 4D or higher rank yet.");const i=this.interpretAxes(s,r);s.splice(i[0],1),r.splice(i[1],1),r.splice(0,1);const a=s.concat(r);return 1===a.length&&a.push(1),a}computeMask(e,s){return null}getConfig(){const e={axes:this.axes,normalize:this.normalize},s=super.getConfig();return Object.assign(e,s),e}}return n.className="Dot",n})()),pe((()=>{class n extends wt{constructor(e){super(e),this.supportsMasking=!0,this.stddev=e.stddev}computeOutputShape(e){return e}getConfig(){const e=super.getConfig(),s={stddev:this.stddev};return Object.assign(s,e),s}call(e,s){return Z(()=>{this.invokeCallHook(e,s);const r=ot(e);return vl(()=>me(Ac(r.shape,0,this.stddev),r),()=>r,s.training||!1)})}}return n.className="GaussianNoise",n})()),pe((()=>{class n extends wt{constructor(e){super(e),this.supportsMasking=!0,this.rate=e.rate}computeOutputShape(e){return e}getConfig(){const e=super.getConfig(),s={rate:this.rate};return Object.assign(s,e),s}call(e,s){return Z(()=>{this.invokeCallHook(e,s);const r=ot(e);return this.rate>0&&this.rate<1?vl(()=>{const a=Math.sqrt(this.rate/(1-this.rate));return L(r,Ac(r.shape,1,a))},()=>r,s.training||!1):r})}}return n.className="GaussianDropout",n})()),pe((()=>{class n extends wt{constructor(e){super(e),this.supportsMasking=!0,this.rate=e.rate,this.noiseShape=e.noiseShape}_getNoiseShape(e){return this.noiseShape||ot(e).shape}computeOutputShape(e){return e}getConfig(){const e=super.getConfig(),s={rate:this.rate};return Object.assign(s,e),s}call(e,s){return Z(()=>{if(this.rate<1&&this.rate>0){const r=this._getNoiseShape(e);return vl(()=>{const a=ot(e),u=-1.7580993408473766;let c=Pi(ol(r),this.rate);c=cr(c,"float32");const h=((1-this.rate)*(1+this.rate*u**2))**-.5,d=-h*u*this.rate,p=me(L(a,c),L(me(c,-1),u));return me(L(p,h),d)},()=>ot(e),s.training||!1)}return e})}}return n.className="AlphaDropout",n})()),pe((()=>{class n extends wt{constructor(e){null==e&&(e={}),super(e),this.supportsMasking=!0,this.axis=null==e.axis?-1:e.axis,this.momentum=null==e.momentum?.99:e.momentum,this.epsilon=null==e.epsilon?.001:e.epsilon,this.center=null==e.center||e.center,this.scale=null==e.scale||e.scale,this.betaInitializer=en(e.betaInitializer||"zeros"),this.gammaInitializer=en(e.gammaInitializer||"ones"),this.movingMeanInitializer=en(e.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=en(e.movingVarianceInitializer||"ones"),this.betaConstraint=Tn(e.betaConstraint),this.gammaConstraint=Tn(e.gammaConstraint),this.betaRegularizer=tn(e.betaRegularizer),this.gammaRegularizer=tn(e.gammaRegularizer)}build(e){e=At(e);const s=this.axis>=0?this.axis:this.axis+e.length,r=e[s];if(null==r)throw new z(`Axis ${s} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(e)}.`);this.inputSpec=[new wn({ndim:e.length,axes:{[s]:r}})];const i=[r];this.scale&&(this.gamma=this.addWeight("gamma",i,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",i,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",i,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",i,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(e,s){return Z(()=>{const r=null!=s.training&&s.training,i=ot(e),a=i.shape,o=a.length,l=Gs(0,o),u=this.axis>=0?this.axis:this.axis+o;l.splice(u,1);const c=Vi(1,o);c[u]=a[u];const h=l.slice();h.sort();const d=!rt(h,Gs(0,o).slice(0,o-1));if(!r)return(()=>{if(d){const b=j(this.movingMean.read(),c),v=j(this.movingVariance.read(),c),w=this.center?j(this.beta.read(),c):null,S=this.scale?j(this.gamma.read(),c):null;return El(i,b,v,w,S,this.epsilon)}return El(i,this.movingMean.read(),this.movingVariance.read(),null==this.beta?null:this.beta.read(),null==this.gamma?null:this.gamma.read(),this.epsilon)})();const[f,g,m]=function KD(n,t,e,s,r=.001){return rt(s.slice().sort(),Gs(0,n.rank-1))?function jD(n,t,e,s,r=.001){return Z(()=>{const i=Xp(n,s),a=i.mean,o=i.variance;return[El(n,a,o,e,t,r),a,o]})}(n,t,e,s,r):function XD(n,t,e,s,r=.001){return Z(()=>{const i=Xp(n,s),a=i.mean,o=i.variance,l=[];for(const f of Gs(0,n.rank))-1!==s.indexOf(f)?l.push(1):l.push(n.shape[f]);const u=j(a,l),c=j(o,l),h=null==t?null:j(t,l),d=null==e?null:j(e,l);return[El(n,u,c,d,h,r),a,o]})}(n,t,e,s,r)}(i,this.gamma.read(),this.beta.read(),l,this.epsilon),x=(b,v,w)=>{Z(()=>{const S=1-w,I=b.read(),k=L(ze(I,v),S);b.write(ze(I,k))})};return(()=>{x(this.movingMean,g,this.momentum),x(this.movingVariance,m,this.momentum)})(),f})}getConfig(){const e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:an(this.betaInitializer),gammaInitializer:an(this.gammaInitializer),movingMeanInitializer:an(this.movingMeanInitializer),movingVarianceInitializer:an(this.movingVarianceInitializer),betaRegularizer:Gt(this.betaRegularizer),gammaRegularizer:Gt(this.gammaRegularizer),betaConstraint:_n(this.betaConstraint),gammaConstraint:_n(this.gammaConstraint)},s=super.getConfig();return Object.assign(e,s),e}}return n.className="BatchNormalization",n})()),pe((()=>{class n extends wt{constructor(e){if(null==e&&(e={}),super(e),this.axis=null==e.axis?-1:e.axis,"number"==typeof this.axis){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else{if(!Array.isArray(this.axis))throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);for(const s of this.axis)if(!Number.isInteger(s))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}this.epsilon=null==e.epsilon?.001:e.epsilon,this.center=null==e.center||e.center,this.scale=null==e.scale||e.scale,this.betaInitializer=en(e.betaInitializer||"zeros"),this.gammaInitializer=en(e.gammaInitializer||"ones"),this.betaRegularizer=tn(e.betaRegularizer),this.gammaRegularizer=tn(e.gammaRegularizer),this.supportsMasking=!0}build(e){const s=(e=At(e)).length;"number"==typeof this.axis&&(this.axis=[this.axis]);for(let a=0;a=s)throw new Error(`Invalid axis: ${a}`);if(this.axis.length!==Jr(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);const r=this.axis.map(a=>e[a]),i=!0;this.gamma=this.scale?this.addWeight("gamma",r,"float32",this.gammaInitializer,this.gammaRegularizer,i):null,this.beta=this.center?this.addWeight("beta",r,"float32",this.betaInitializer,this.betaRegularizer,i):null,this.built=!0}call(e,s){const r=ot(e),i=r.shape,a=i.length;return Z(()=>{let{mean:l,variance:u}=Xp(r,this.axis,!0);const c=Vi(1,a);for(const m of this.axis)c[m]=i[m];const h=m=>null!=m&&m.shape.length!==a?j(m,c):m;let d=this.scale?h(this.gamma.read()):null,p=this.center?h(this.beta.read()):null;const f=[],g=[];for(let m=0;m{class n extends wt{constructor(e){if(null==e&&(e={}),super(e),this.dataFormat=null==e.dataFormat?"channelsLast":e.dataFormat,null==e.padding)this.padding=[[1,1],[1,1]];else if("number"==typeof e.padding)this.padding=[[e.padding,e.padding],[e.padding,e.padding]];else{if(e.padding=e.padding,2!==e.padding.length)throw new z(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${e.padding.length} array.`);let s,r;if("number"==typeof e.padding[0])s=[e.padding[0],e.padding[0]],r=[e.padding[1],e.padding[1]];else{if(e.padding=e.padding,2!==e.padding[0].length)throw new z(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${e.padding[0].length} array.`);if(s=e.padding[0],2!==e.padding[1].length)throw new z(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${e.padding[1].length} array.`);r=e.padding[1]}this.padding=[s,r]}this.inputSpec=[new wn({ndim:4})]}computeOutputShape(e){let s,r;return e=At(e),"channelsFirst"===this.dataFormat?(s=null!=e[2]&&e[2]>=0?e[2]+this.padding[0][0]+this.padding[0][1]:null,r=null!=e[3]&&e[3]>=0?e[3]+this.padding[1][0]+this.padding[1][1]:null,[e[0],e[1],s,r]):(s=null!=e[1]&&e[1]>=0?e[1]+this.padding[0][0]+this.padding[0][1]:null,r=null!=e[2]&&e[2]>=0?e[2]+this.padding[1][0]+this.padding[1][1]:null,[e[0],s,r,e[3]])}call(e,s){return Z(()=>function qD(n,t,e){return Z(()=>{if(4!==n.rank)throw new z(`temporalPadding expects input tensor to be 4-D, but received a ${n.rank}-D tensor.`);if(null==t&&(t=[[1,1],[1,1]]),2!==t.length||2!==t[0].length||2!==t[1].length)throw new z("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(null==e&&(e="channelsLast"),"channelsLast"!==e&&"channelsFirst"!==e)throw new z(`Unknown data format: ${e}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let s;return s="channelsFirst"===e?[[0,0],[0,0],t[0],t[1]]:[[0,0],t[0],t[1],[0,0]],Kp(n,s)})}(ot(e),this.padding,this.dataFormat))}getConfig(){const e={padding:this.padding,dataFormat:this.dataFormat},s=super.getConfig();return Object.assign(e,s),e}}return n.className="ZeroPadding2D",n})());class gv extends wt{constructor(t){if(null==t.poolSize&&(t.poolSize=2),super(t),"number"==typeof t.poolSize)this.poolSize=[t.poolSize];else{if(!Array.isArray(t.poolSize)||1!==t.poolSize.length||"number"!=typeof t.poolSize[0])throw new z(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(t.poolSize)}`);this.poolSize=t.poolSize}if($n(this.poolSize,"poolSize"),null==t.strides)this.strides=this.poolSize;else if("number"==typeof t.strides)this.strides=[t.strides];else{if(!Array.isArray(t.strides)||1!==t.strides.length||"number"!=typeof t.strides[0])throw new z(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(t.strides)}`);this.strides=t.strides}$n(this.strides,"strides"),this.padding=null==t.padding?"valid":t.padding,ws(this.padding),this.inputSpec=[new wn({ndim:3})]}computeOutputShape(t){const e=qs((t=At(t))[1],this.poolSize[0],this.padding,this.strides[0]);return[t[0],e,t[2]]}call(t,e){return Z(()=>{this.invokeCallHook(t,e),t=yl(ot(t),2);const s=this.poolingFunction(ot(t),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return cl(s,[2])})}getConfig(){const t={poolSize:this.poolSize,padding:this.padding,strides:this.strides},e=super.getConfig();return Object.assign(t,e),t}}pe((()=>{class n extends gv{constructor(e){super(e)}poolingFunction(e,s,r,i,a){return fn(a),ws(i),Jc(e,s,r,i,a,"max")}}return n.className="MaxPooling1D",n})()),pe((()=>{class n extends gv{constructor(e){super(e)}poolingFunction(e,s,r,i,a){return fn(a),ws(i),Jc(e,s,r,i,a,"avg")}}return n.className="AveragePooling1D",n})());class bv extends wt{constructor(t){if(null==t.poolSize&&(t.poolSize=[2,2]),super(t),this.poolSize=Array.isArray(t.poolSize)?t.poolSize:[t.poolSize,t.poolSize],null==t.strides)this.strides=this.poolSize;else if(Array.isArray(t.strides)){if(2!==t.strides.length)throw new z(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${t.strides.length}.`);this.strides=t.strides}else this.strides=[t.strides,t.strides];$n(this.poolSize,"poolSize"),$n(this.strides,"strides"),this.padding=null==t.padding?"valid":t.padding,this.dataFormat=null==t.dataFormat?"channelsLast":t.dataFormat,fn(this.dataFormat),ws(this.padding),this.inputSpec=[new wn({ndim:4})]}computeOutputShape(t){t=At(t);let e="channelsFirst"===this.dataFormat?t[2]:t[1],s="channelsFirst"===this.dataFormat?t[3]:t[2];return e=qs(e,this.poolSize[0],this.padding,this.strides[0]),s=qs(s,this.poolSize[1],this.padding,this.strides[1]),"channelsFirst"===this.dataFormat?[t[0],t[1],e,s]:[t[0],e,s,t[3]]}call(t,e){return Z(()=>(this.invokeCallHook(t,e),this.poolingFunction(ot(t),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){const t={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},e=super.getConfig();return Object.assign(t,e),t}}pe((()=>{class n extends bv{constructor(e){super(e)}poolingFunction(e,s,r,i,a){return fn(a),ws(i),Jc(e,s,r,i,a,"max")}}return n.className="MaxPooling2D",n})()),pe((()=>{class n extends bv{constructor(e){super(e)}poolingFunction(e,s,r,i,a){return fn(a),ws(i),Jc(e,s,r,i,a,"avg")}}return n.className="AveragePooling2D",n})());class _v extends wt{constructor(t){if(null==t.poolSize&&(t.poolSize=[2,2,2]),super(t),this.poolSize=Array.isArray(t.poolSize)?t.poolSize:[t.poolSize,t.poolSize,t.poolSize],null==t.strides)this.strides=this.poolSize;else if(Array.isArray(t.strides)){if(3!==t.strides.length)throw new z(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${t.strides.length}.`);this.strides=t.strides}else this.strides=[t.strides,t.strides,t.strides];$n(this.poolSize,"poolSize"),$n(this.strides,"strides"),this.padding=null==t.padding?"valid":t.padding,this.dataFormat=null==t.dataFormat?"channelsLast":t.dataFormat,fn(this.dataFormat),ws(this.padding),this.inputSpec=[new wn({ndim:5})]}computeOutputShape(t){t=At(t);let e="channelsFirst"===this.dataFormat?t[2]:t[1],s="channelsFirst"===this.dataFormat?t[3]:t[2],r="channelsFirst"===this.dataFormat?t[4]:t[3];return e=qs(e,this.poolSize[0],this.padding,this.strides[0]),s=qs(s,this.poolSize[1],this.padding,this.strides[1]),r=qs(r,this.poolSize[2],this.padding,this.strides[2]),"channelsFirst"===this.dataFormat?[t[0],t[1],e,s,r]:[t[0],e,s,r,t[4]]}call(t,e){return Z(()=>(this.invokeCallHook(t,e),this.poolingFunction(ot(t),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){const t={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},e=super.getConfig();return Object.assign(t,e),t}}pe((()=>{class n extends _v{constructor(e){super(e)}poolingFunction(e,s,r,i,a){return fn(a),ws(i),mv(e,s,r,i,a,"max")}}return n.className="MaxPooling3D",n})()),pe((()=>{class n extends _v{constructor(e){super(e)}poolingFunction(e,s,r,i,a){return fn(a),ws(i),mv(e,s,r,i,a,"avg")}}return n.className="AveragePooling3D",n})());class Cv extends wt{constructor(t){super(t),this.inputSpec=[new wn({ndim:3})]}computeOutputShape(t){return[t[0],t[2]]}call(t,e){throw new dt}}pe((()=>{class n extends Cv{constructor(e){super(e||{})}call(e,s){return Z(()=>{const r=ot(e);return pn(r,1)})}}return n.className="GlobalAveragePooling1D",n})()),pe((()=>{class n extends Cv{constructor(e){super(e||{})}call(e,s){return Z(()=>{const r=ot(e);return Ws(r,1)})}}return n.className="GlobalMaxPooling1D",n})());class kv extends wt{constructor(t){super(t),this.dataFormat=null==t.dataFormat?"channelsLast":t.dataFormat,fn(this.dataFormat),this.inputSpec=[new wn({ndim:4})]}computeOutputShape(t){return"channelsLast"===this.dataFormat?[t[0],t[3]]:[t[0],t[1]]}call(t,e){throw new dt}getConfig(){const t={dataFormat:this.dataFormat},e=super.getConfig();return Object.assign(t,e),t}}pe((()=>{class n extends kv{call(e,s){return Z(()=>{const r=ot(e);return pn(r,"channelsLast"===this.dataFormat?[1,2]:[2,3])})}}return n.className="GlobalAveragePooling2D",n})()),pe((()=>{class n extends kv{call(e,s){return Z(()=>{const r=ot(e);return Ws(r,"channelsLast"===this.dataFormat?[1,2]:[2,3])})}}return n.className="GlobalMaxPooling2D",n})());class Rv extends wt{constructor(t){super(t),this.layer=t.layer}build(t){this.built=!0}get trainable(){return null!=this.layer&&this.layer.trainable}set trainable(t){null!=this.layer&&(this.layer.trainable=t)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(t){this.layer.setWeights(t)}getConfig(){const t={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},e=super.getConfig();return Object.assign(t,e),t}setFastWeightInitDuringBuild(t){super.setFastWeightInitDuringBuild(t),null!=this.layer&&this.layer.setFastWeightInitDuringBuild(t)}static fromConfig(t,e,s={}){const i=$r(e.layer,s);delete e.layer;const a={layer:i};return Object.assign(a,e),new t(a)}}pe((()=>{class n extends Rv{constructor(e){super(e),this.supportsMasking=!0}build(e){if((e=At(e)).length<3)throw new z(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(e)}`);this.inputSpec=[{shape:e}];const s=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(s),this.layer.built=!0),super.build(e)}computeOutputShape(e){const s=[(e=At(e))[0]].concat(e.slice(2)),r=this.layer.computeOutputShape(s);return[r[0],e[1]].concat(r.slice(1))}call(e,s){return Z(()=>K0((o,l)=>[ot(this.layer.call(o,s)),[]],e=ot(e),[],!1,null,null,!1,!0)[1])}}return n.className="TimeDistributed",n})()),pe((()=>{class n extends Rv{constructor(e){super(e);const s=e.layer.getConfig(),r={};r.className=e.layer.getClassName(),r.config=s,this.forwardLayer=$r(r),s.goBackwards=!0!==s.goBackwards;const i={};if(i.className=e.layer.getClassName(),i.config=s,this.backwardLayer=$r(i),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=void 0===e.mergeMode?"concat":e.mergeMode,function ZD(n){Bi(m$,"BidirectionalMergeMode",n)}(this.mergeMode),e.weights)throw new dt("weights support is not implemented for Bidirectional layer yet.");this._stateful=e.layer.stateful,this.returnSequences=e.layer.returnSequences,this.returnState=e.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=e.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(e){this._trainable=e,null!=this.forwardLayer&&(this.forwardLayer.trainable=e),null!=this.backwardLayer&&(this.backwardLayer.trainable=e)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(e){const r=Math.floor(e.length/2);this.forwardLayer.setWeights(e.slice(0,r)),this.backwardLayer.setWeights(e.slice(r))}computeOutputShape(e){let r,i,a,s=this.forwardLayer.computeOutputShape(e);return Array.isArray(s)&&Array.isArray(s[0])||(s=[s]),this.returnState&&(a=s.slice(1)),r=s[0],"concat"===this.mergeMode?(r[r.length-1]*=2,i=[r]):i=null==this.mergeMode?[r,r.slice()]:[r],this.returnState?null==this.mergeMode?i.concat(a).concat(a.slice()):[r].concat(a).concat(a.slice()):ss(i)}apply(e,s){let r=null==s?null:s.initialState,i=null==s?null:s.constants;null==s&&(s={});const a=X0(e,r,i,this.numConstants);if(e=a.inputs,r=a.initialState,i=a.constants,Array.isArray(e)&&(r=e.slice(1),e=e[0]),(null==r||0===r.length)&&null==i)return super.apply(e,s);const o=[],l=[];if(null!=r){const c=r.length;if(c%2>0)throw new z("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");s.initialState=r,o.push(...r);const h=r.map(d=>new wn({shape:d.shape}));this.forwardLayer.stateSpec=h.slice(0,c/2),this.backwardLayer.stateSpec=h.slice(c/2),l.push(...h)}if(null!=i)throw new dt("Support for constants in Bidirectional layers is not implemented yet.");const u=o[0]instanceof pr;for(const c of o)if(c instanceof pr!==u)throw new z("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(u){const c=[e].concat(o),h=this.inputSpec.concat(l),d=this.inputSpec;this.inputSpec=h;const p=super.apply(c,s);return this.inputSpec=d,p}return super.apply(e,s)}call(e,s){return Z(()=>{const r=s.initialState;let i,a,o,l;if(null==r)i=this.forwardLayer.call(e,s),a=this.backwardLayer.call(e,s);else{const u=r.slice(0,r.length/2),c=r.slice(r.length/2);i=this.forwardLayer.call(e,Object.assign(s,{initialState:u})),a=this.backwardLayer.call(e,Object.assign(s,{initialState:c}))}return this.returnState&&(Array.isArray(i)&&(o=i.slice(1).concat(a.slice(1))),i=i[0],a=a[0]),this.returnSequences&&(a=Fi(a,1)),"concat"===this.mergeMode?l=Hf([i,a]):"sum"===this.mergeMode?l=me(i,a):"ave"===this.mergeMode?l=L(.5,me(i,a)):"mul"===this.mergeMode?l=L(i,a):null==this.mergeMode&&(l=[i,a]),this.returnState?null==this.mergeMode?l.concat(o):[l].concat(o):l})}resetStates(e){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(e){Ui(this.forwardLayer.name,()=>{this.forwardLayer.build(e)}),Ui(this.backwardLayer.name,()=>{this.backwardLayer.build(e)}),this.built=!0}computeMask(e,s){let r;if(Array.isArray(s)&&(s=s[0]),r=this.returnSequences?null==this.mergeMode?[s,s]:s:null==this.mergeMode?[null,null]:null,this.returnState){const a=this.forwardLayer.states.map(o=>null);return Array.isArray(r)?r.concat(a).concat(a):[r].concat(a).concat(a)}return r}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),null!=this.forwardLayer&&this.forwardLayer.setFastWeightInitDuringBuild(e),null!=this.backwardLayer&&this.backwardLayer.setFastWeightInitDuringBuild(e)}getConfig(){const e={mergeMode:this.mergeMode},s=super.getConfig();return Object.assign(e,s),e}static fromConfig(e,s){const r=$r(s.layer);if(delete s.layer,null!=s.numConstants)throw new dt("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");const i=s;return i.layer=r,new e(i)}}return n.className="Bidirectional",n})()),pe((()=>{class n extends wt{constructor(e){super(e),this.scale=e.scale,this.offset=e.offset?e.offset:0}getConfig(){const e={scale:this.scale,offset:this.offset},s=super.getConfig();return Object.assign(e,s),e}call(e,s){return Z(()=>("float32"!==(e=ot(e)).dtype&&(e=cr(e,"float32")),me(L(e,this.scale),this.offset)))}}return n.className="Rescaling",n})());const{resizeBilinear:QD,cropAndResize:JD}=ar;pe((()=>{class n extends wt{constructor(e){super(e),this.height=e.height,this.width=e.width}centerCrop(e,s,r,i,a,o,l,u){return Z(()=>{let c,h=!1;const m=[s/o,r/l,(i+s)/o,(a+r)/l],x=[];3===e.rank?(h=!0,c=ir([e])):c=e;for(let S=0;Scr(QD(e,[s,r]),i))}call(e,s){return Z(()=>{const r=ot(e),i=r.dtype,a=r.shape,o=a[a.length-3],l=a[a.length-2];let u=0;o!==this.height&&(u=Math.floor((o-this.height)/2));let c=0;return l!==this.width&&(c=Math.floor((l-this.width)/2),0===c&&(c=1)),u>=0&&c>=0?this.centerCrop(r,u,c,this.height,this.width,o,l,i):this.upsize(e,this.height,this.width,i)})}getConfig(){const e={height:this.height,width:this.width},s=super.getConfig();return Object.assign(e,s),e}computeOutputShape(e){const r=(e=At(e)).length-2;return e[e.length-3]=this.height,e[r]=this.width,e}}return n.className="CenterCrop",n})()),pe((()=>{class n extends wt{constructor(e){super(e),this.numTokens=e.numTokens,this.outputMode=e.outputMode?e.outputMode:"multiHot"}getConfig(){const e={numTokens:this.numTokens,outputMode:this.outputMode},s=super.getConfig();return Object.assign(e,s),e}computeOutputShape(e){return null==(e=At(e))?[this.numTokens]:"oneHot"===this.outputMode&&1!==e[e.length-1]?(e.push(this.numTokens),e):(e[e.length-1]=this.numTokens,e)}call(e,s){return Z(()=>{let r;if("int32"!==(e=ot(e)).dtype&&(e=cr(e,"int32")),typeof s.countWeights<"u"){if("count"!==this.outputMode)throw new z(`countWeights is not used when outputMode !== count.\n Received countWeights=${s.countWeights}`);r=ot(s.countWeights)}const i=Ws(e),a=hc(e),o=ys(this.numTokens,i).bufferSync().get(0),l=Pi(a,0).bufferSync().get(0);if(!o||!l)throw new z(`Input values must be between 0 < values <= numTokens with numTokens=${this.numTokens}`);return function eO(n,t,e,s){let r=ot(n);if("int32"!==r.dtype&&(r=cr(r,"int32")),"int"===t)return r;const i=r.shape;if(0===r.rank&&(r=Zn(r,-1)),"oneHot"===t&&1!==r.shape[r.shape.length-1]&&(r=Zn(r,-1)),r.rank>2)throw new z(`When outputMode is not int, maximum output rank is 2 Received outputMode ${t} and input shape ${i} which would result in output rank ${r.rank}.`);const a=["multiHot","oneHot"].includes(t);let l;if(l=dy(r,typeof s<"u"&&"count"===t?s:[],e,a),"tfIdf"!==t)return l;if(s)return L(l,s);throw new z("When outputMode is 'tfIdf', weights must be provided.")}(e,this.outputMode,this.numTokens,r)})}}return n.className="CategoryEncoding",n})());const Lv=new Set(["bilinear","nearest"]);pe((()=>{class n extends wt{constructor(e){if(super(e),this.height=e.height,this.width=e.width,e.interpolation){if(!Lv.has(e.interpolation))throw new z(`Invalid interpolation parameter: ${e.interpolation} is not implemented`);this.interpolation=e.interpolation}else this.interpolation="bilinear";this.cropToAspectRatio=!!e.cropToAspectRatio}computeOutputShape(e){return e=At(e),[this.height,this.width,e[2]]}getConfig(){const e={height:this.height,width:this.width,interpolation:this.interpolation,cropToAspectRatio:this.cropToAspectRatio},s=super.getConfig();return Object.assign(e,s),e}call(e,s){return Z(()=>{const r=[this.height,this.width];if("bilinear"===this.interpolation)return ar.resizeBilinear(e,r,!this.cropToAspectRatio);if("nearest"===this.interpolation)return ar.resizeNearestNeighbor(e,r,!this.cropToAspectRatio);throw new Error(`Interpolation is ${this.interpolation} but only ${[...Lv]} are supported`)})}}return n.className="Resizing",n})());let nO=(()=>{class n{constructor(e){this.seed=e}next(){if(void 0!==this.seed)return this.seed++}}return n.className="RandomSeed",n})(),sO=(()=>{class n extends wt{constructor(e){super(e),this.randomGenerator=new nO(e.seed)}getConfig(){const e={seed:this.randomGenerator.seed},s=super.getConfig();return Object.assign(e,s),e}}return n.className="BaseRandomLayer",n})();const Vv=new Set(["bilinear","nearest"]);function Bv(n){return new ev(n)}var jv;function We(n,t){Array.isArray(n)||(n=[n]),n.forEach(e=>{null!=e&&T("complex64"!==e.dtype,()=>`${t} does not support complex64 tensors in the CPU backend.`)})}pe((()=>{class n extends sO{constructor(e){super(e);const{factor:s,interpolation:r="bilinear"}=e;if(this.factor=s,Array.isArray(this.factor)&&2===this.factor.length)this.widthLower=this.factor[0],this.widthUpper=this.factor[1];else{if(Array.isArray(this.factor)||!(this.factor>0))throw new z(`Invalid factor: ${this.factor}. Must be positive number or tuple of 2 numbers`);this.widthLower=-this.factor,this.widthUpper=this.factor}if(this.widthLower<-1||this.widthUpper<-1)throw new z(`factor must have values larger than -1. Got: ${this.factor}`);if(this.widthUpper{const r=ot(e);this.imgHeight=r.shape[r.shape.length-3];const i=r.shape[r.shape.length-2];this.widthFactor=ol([1],1+this.widthLower,1+this.widthUpper,"float32",this.randomGenerator.next());let a=this.widthFactor.dataSync()[0]*i;a=Math.round(a);const o=[this.imgHeight,a];switch(this.interpolation){case"bilinear":return ar.resizeBilinear(e,o);case"nearest":return ar.resizeNearestNeighbor(e,o);default:throw new Error(`Interpolation is ${this.interpolation}\n but only ${[...Vv]} are supported`)}})}}return n.className="RandomWidth",n})()),E().registerFlag("KEEP_INTERMEDIATE_TENSORS",()=>!1,n=>{n&&console.warn("Keep intermediate tensors is ON. This will print the values of all intermediate tensors during model inference. Not all models support this mode. For details, check e2e/benchmarks/ model_config.js. This significantly impacts performance.")}),function(n){let t;var e;(e=t=n.CheckpointFormatVersion||(n.CheckpointFormatVersion={}))[e.LEGACY=0]="LEGACY",e[e.V1=1]="V1",e[e.V2=2]="V2"}(jv||(jv={})),Error,Symbol("out"),Symbol("field"),Symbol("quote"),Symbol("quoteafterquote"),Symbol("quoteinquote");const rP=hb;let iP=(()=>{class n extends Fe{nextDataId(){return n.nextDataId++}constructor(){super(),this.blockSize=48,this.firstUse=!0,this.data=new we(this,tr())}write(e,s,r){this.firstUse&&(this.firstUse=!1,E().get("IS_NODE")&&fs("\n============================\nHi, looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, visit https://github.com/tensorflow/tfjs-node for more details. \n============================"));const i={id:this.nextDataId()};return this.data.set(i,{values:e,dtype:r,refCount:1}),i}makeTensorInfo(e,s,r){let i;if("string"===s&&null!=r&&r.length>0&&os(r[0])){const a=r.map(o=>Ur(o));i=this.write(a,e,s)}else i=this.write(r,e,s);return{dataId:i,shape:e,dtype:s}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){this.data.get(e).refCount++}decRef(e){this.data.has(e)&&this.data.get(e).refCount--}move(e,s,r,i,a){this.data.set(e,{values:s,dtype:i,refCount:a})}numDataIds(){return this.data.numDataIds()}read(e){var s=this;return(0,N.A)(function*(){return s.readSync(e)})()}readSync(e){const{dtype:s,complexTensorInfos:r}=this.data.get(e);return"complex64"===s?Nr(this.readSync(r.real.dataId),this.readSync(r.imag.dataId)):function Xl(n,t){if(Array.isArray(n))return n;if("float32"===t)return n instanceof Float32Array?n:new Float32Array(n);if("int32"===t)return n instanceof Int32Array?n:new Int32Array(n);if("bool"===t||"string"===t)return Uint8Array.from(new Int32Array(n));throw new Error(`Unknown dtype ${t}`)}(this.data.get(e).values,s)}bufferSync(e){const s=this.readSync(e.dataId);if("string"===e.dtype)try{const r=s.map(i=>Wr(i));return vt(e.shape,e.dtype,r)}catch{throw new Error("Failed to decode encoded string bytes into utf-8")}return vt(e.shape,e.dtype,s)}makeOutput(e,s,r){return tr().makeTensorFromTensorInfo(this.makeTensorInfo(s,r,e),this)}disposeData(e,s=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!s&&this.data.get(e).refCount>0)return!1;const{complexTensorInfos:r}=this.data.get(e);null!=r&&(this.disposeData(r.real.dataId,!0),this.disposeData(r.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}time(e){return(0,N.A)(function*(){const s=Vn();return e(),{kernelMs:Vn()-s}})()}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){We([e],"where");const s=this.readSync(e.dataId);return rP(e.shape,s)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}}return n.nextDataId=0,n})();function mr(n){return(t,e,s)=>{const r=$t(e,t.length);for(let i=0;i{const{x:a}=s;We(a,n);const o=i,l=o.data.get(a.dataId).values;let u;if("string"===a.dtype){if(!Array.isArray(l))throw new Error("String tensor's value was not an instance of Array");u=Ar(l)}else u=l;const c=e||a.dtype,h=t(u,c,r);return o.makeTensorInfo(a.shape,c,h)}}yx("cpu",()=>new iP,1);const Nw=Mt(co,n=>n>=0?n:Math.exp(n)-1),oP={kernelName:co,backendName:"cpu",kernelFunc:Nw};function gr(n){const{inputs:t,backend:e}=n,{x:s}=t;return e.incRef(s.dataId),{dataId:s.dataId,shape:s.shape,dtype:s.dtype}}const lP={kernelName:yo,backendName:"cpu",kernelFunc:gr};function Aw(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{alpha:i}=s;We([r],"leakyRelu");const a=K(r.shape),o=e.data.get(r.dataId).values,l=Cn("float32",a);for(let u=0;u{const a=ht(t,e),o=a.length,l=Ue(a),c=Cn(i,K(a)),h=t.length,d=e.length,p=Ue(t),f=Ue(e),g=ga(t,a),m=ga(e,a);if(g.length+m.length===0)for(let x=0;xb[I]=0);const v=Is(b,h,p),w=y.slice(-d);m.forEach(I=>w[I]=0);const S=Is(w,d,f);c[x]=n(s[v],r[S])}return[c,a]}}const cP=mn((n,t)=>n<0?t*n:n);function Rw(n){const{inputs:t,backend:e}=n,{x:s,alpha:r}=t;We([s,r],"prelu");const i=e.data.get(s.dataId).values,a=e.data.get(r.dataId).values,[o,l]=cP(s.shape,r.shape,i,a,"float32");return e.makeTensorInfo(l,"float32",o)}const hP={kernelName:$u,backendName:"cpu",kernelFunc:Rw},$w=Mt(Ao,n=>Math.max(0,n)),dP={kernelName:Ao,backendName:"cpu",kernelFunc:$w},Dw=Mt(Ro,n=>Math.min(Math.max(0,n),6)),pP={kernelName:Ro,backendName:"cpu",kernelFunc:Dw},fP=mr(n=>1/(1+Math.exp(-n))),Ow=Mt(Mo,n=>1/(1+Math.exp(-n))),mP={kernelName:Mo,backendName:"cpu",kernelFunc:Ow};function lh(n,t,e,s,r){if("linear"===e)return gr({inputs:{x:t},backend:n});if("relu"===e)return $w({inputs:{x:t},backend:n});if("elu"===e)return Nw({inputs:{x:t},backend:n});if("relu6"===e)return Dw({inputs:{x:t},backend:n});if("prelu"===e)return Rw({inputs:{x:t,alpha:s},backend:n});if("leakyrelu"===e)return Aw({inputs:{x:t},backend:n,attrs:{alpha:r}});if("sigmoid"===e)return Ow({inputs:{x:t},backend:n});throw new Error(`Activation ${e} has not been implemented for the CPU backend.`)}function cs(n){const{inputs:t,backend:e}=n,{real:s,imag:r}=t,i=e.data.get(s.dataId).values,a=e.data.get(r.dataId).values,o=e.makeTensorInfo(s.shape,"complex64");return e.data.get(o.dataId).complexTensorInfos={real:e.makeTensorInfo(s.shape,"float32",i),imag:e.makeTensorInfo(r.shape,"float32",a)},o}const gP={kernelName:od,backendName:"cpu",kernelFunc:cs};function uh(n,t,e="float32"){if("complex64"===e)return cs({inputs:{real:uh(n,t,"float32"),imag:uh(n,t,"float32")},backend:n});const s=yn(K(t),e);return n.makeTensorInfo(t,e,s)}function ji(n){const{inputs:t,backend:e}=n,{input:s}=t,r=e.data.get(s.dataId).complexTensorInfos.real,i=e.data.get(r.dataId).values;return e.makeTensorInfo(r.shape,r.dtype,i)}const xP={kernelName:Od,backendName:"cpu",kernelFunc:ji};function Pw(n,t,e,s){if("int32"===s)return[t,"int32",Int32Array.from(n)];if("bool"===s){const r=Ti([0],e),[i,a]=mn((o,l)=>o!==l?1:0)(t,[],n,r,"bool");return[a,"bool",i]}throw new Error(`Error in Cast: failed to cast ${e} to ${s}`)}function li(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{dtype:i}=s;if("complex64"===i){if("complex64"===r.dtype)return gr({inputs:{x:r},backend:e});const c=uh(e,r.shape,r.dtype),h=li({inputs:{x:r},backend:e,attrs:{dtype:"float32"}}),d=cs({inputs:{real:h,imag:c},backend:e});return e.disposeIntermediateTensorInfo(c),e.disposeIntermediateTensorInfo(h),d}if("complex64"===r.dtype){const c=ji({inputs:{input:r},backend:e}),h=li({inputs:{x:c},backend:e,attrs:{dtype:i}});return e.disposeIntermediateTensorInfo(c),h}if(!Ve(r.dtype,i)){const c=gr({inputs:{x:r},backend:e});return{dataId:c.dataId,shape:c.shape,dtype:i}}const a=e.data.get(r.dataId).values,[o,l,u]=Pw(a,r.shape,r.dtype,i);return e.makeTensorInfo(o,l,u)}const yP={kernelName:so,backendName:"cpu",kernelFunc:li};function Sn(n,t,e,s){return null==e?({inputs:r,backend:i})=>{const{a,b:o}=r,l=i;We([a,o],n);const u=l.data.get(a.dataId).values,c=l.data.get(o.dataId).values,h="string"===a.dtype?Ar(u):u,d="string"===a.dtype?Ar(c):c,p=s||a.dtype,[f,g]=t(a.shape,o.shape,h,d,p);return l.makeTensorInfo(g,p,f)}:({inputs:r,backend:i})=>{const{a,b:o}=r,l=i;if("complex64"===a.dtype||"complex64"===o.dtype){const u=li({inputs:{x:a},backend:l,attrs:{dtype:"complex64"}}),c=l.data.get(u.dataId),d=c.complexTensorInfos.imag,p=l.data.get(c.complexTensorInfos.real.dataId).values,f=l.data.get(d.dataId).values,g=li({inputs:{x:o},backend:l,attrs:{dtype:"complex64"}}),m=l.data.get(g.dataId),y=m.complexTensorInfos.imag,b=l.data.get(m.complexTensorInfos.real.dataId).values,v=l.data.get(y.dataId).values,[w,S,I]=e(a.shape,o.shape,p,f,b,v),k=l.makeTensorInfo(I,"float32",w),D=l.makeTensorInfo(I,"float32",S),P=cs({inputs:{real:k,imag:D},backend:l});return l.disposeIntermediateTensorInfo(u),l.disposeIntermediateTensorInfo(g),l.disposeIntermediateTensorInfo(k),l.disposeIntermediateTensorInfo(D),P}{const u=l.data.get(a.dataId).values,c=l.data.get(o.dataId).values,h=s||a.dtype,[d,p]=t(a.shape,o.shape,u,c,h);return l.makeTensorInfo(p,h,d)}}}function Vm(n){return(t,e,s,r,i,a)=>{const o=ht(t,e),l=K(o),u=o.length,c=Ue(o),h=Cn("float32",l),d=Cn("float32",l),p=ga(t,o),f=ga(e,o),g=Nr(s,r),m=Nr(i,a),x=t.length,y=Ue(t),b=e.length,v=Ue(e);if(p.length+f.length===0)for(let w=0;wI[Y]=0);const k=Is(I,x,y),D=S.slice(-b);f.forEach(Y=>D[Y]=0);const P=Is(D,b,v),B=n(g[2*k],g[2*k+1],m[2*P],m[2*P+1]);h[w]=B.real,d[w]=B.imag}return[h,d,o]}}const Fw=mn((n,t)=>n+t),bP=Vm((n,t,e,s)=>({real:n+e,imag:t+s})),Ra=Sn(oa,Fw,bP),vP={kernelName:oa,backendName:"cpu",kernelFunc:Ra};function qt(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{shape:i}=s,a=K(r.shape),o=It(i,a),l=K(o);T(a===l,()=>`The new shape (${o}) has ${l} elements and the old shape (${r.shape}) has ${a} elements. The new shape and old shape must have the same number of elements.`),e.incRef(r.dataId);const u=e.data.get(r.dataId);if(null!=u.complexTensorInfos){const h=u.complexTensorInfos.imag;u.complexTensorInfos.real.shape=o,h.shape=o}return{dataId:r.dataId,shape:o,dtype:r.dtype}}const wP={kernelName:Ou,backendName:"cpu",kernelFunc:qt};function Lw(n){const{inputs:t,backend:e,attrs:s}=n,{a:r,b:i}=t,{transposeA:a,transposeB:o}=s;We([r,i],"matMul");const l=r.shape.length,u=i.shape.length,c=a?r.shape[l-2]:r.shape[l-1],h=o?i.shape[u-1]:i.shape[u-2],d=a?r.shape[l-1]:r.shape[l-2],p=o?i.shape[u-2]:i.shape[u-1],f=r.shape.slice(0,-2),g=i.shape.slice(0,-2),m=K(f),x=K(g),b=ht(r.shape.slice(0,-2),i.shape.slice(0,-2)).concat([d,p]);T(c===h,()=>`Error in matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${r.shape} and ${i.shape} and transposeA=${a} and transposeB=${o} must match.`);const w=o?[x,p,h]:[x,h,p],S=qt({inputs:{x:r},backend:e,attrs:{shape:a?[m,c,d]:[m,d,c]}}),I=qt({inputs:{x:i},backend:e,attrs:{shape:w}}),k=a?S.shape[1]:S.shape[2],D=a?S.shape[2]:S.shape[1],P=o?I.shape[1]:I.shape[2],B=Math.max(m,x),Y=e.data.get(S.dataId).values,Q=e.data.get(I.dataId).values,ee=Ue(S.shape),J=Ue(I.shape),[se,ae,te]=a?[ee[0],1,ee[1]]:[ee[0],ee[1],1],[le,ge,xe]=o?[1,J[1],J[0]]:[J[1],1,J[0]],Se=D*P,be=vt([B,D,P],S.dtype),De=be.values,Ie=e.blockSize;for(let Le=0;Le{const{x:t}=n.inputs,e=n.backend;We(t,"abs");let s=new Float32Array(K(t.shape));return s=Mw(e.data.get(t.dataId).values),e.makeOutput(s,t.shape,t.dtype)}},IP=Mt(jn,n=>Math.acos(n)),EP={kernelName:jn,backendName:"cpu",kernelFunc:IP},kP=Mt(ps,n=>Math.acosh(n)),NP={kernelName:ps,backendName:"cpu",kernelFunc:kP},RP={kernelName:ed,backendName:"cpu",kernelFunc:function AP(n){const{inputs:t,backend:e}=n,s=t;We(t,"addN");const r=s.map(o=>e.data.get(o.dataId).values),i=vt(s[0].shape,s[0].dtype),a=i.values;for(let o=0;oy&&(y=w,b=v)}p[m]=b}return u.forEach(m=>e.disposeIntermediateTensorInfo(m)),e.makeTensorInfo(c,"int32",p)}},zP={kernelName:ql,backendName:"cpu",kernelFunc:function VP(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{axis:i}=s;We(r,"argMin");let a=pt(i,r.shape);const o=rn(a,r.shape.length);let l=r;const u=[];null!=o&&(l=rs({inputs:{x:r},backend:e,attrs:{perm:o}}),u.push(l),a=dn(a.length,l.shape.length)),a=[a[0]],Fn("argMin",a,l.shape.length);const[c,h]=An(l.shape,a),p=yn(K(c),"int32"),f=K(h),g=e.data.get(l.dataId).values;for(let m=0;me.disposeIntermediateTensorInfo(m)),e.makeTensorInfo(c,"int32",p)}},BP=Mt(Qa,n=>Math.asin(n)),UP={kernelName:Qa,backendName:"cpu",kernelFunc:BP},WP=Mt(Ja,n=>Math.asinh(n)),GP={kernelName:Ja,backendName:"cpu",kernelFunc:WP},HP=Mt(eo,n=>Math.atan(n)),jP={kernelName:eo,backendName:"cpu",kernelFunc:HP},XP=mn((n,t)=>Math.atan2(n,t)),KP=Sn(no,XP),qP={kernelName:no,backendName:"cpu",kernelFunc:KP},ZP=Mt(to,n=>Math.atanh(n)),YP={kernelName:to,backendName:"cpu",kernelFunc:ZP};function Bm(n,t,e,s,r,i){const a=r.strideHeight,o=r.strideWidth,l=r.dilationHeight,u=r.dilationWidth,c=r.effectiveFilterHeight,h=r.effectiveFilterWidth,d=r.padInfo.top,p=r.padInfo.left,f="max"===i?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,g=vt(r.outShape,e),m=g.values,x=r.outShape[1]*r.outShape[2]*r.outShape[3],y=r.outShape[2]*r.outShape[3],b=r.outShape[3];for(let v=0;vae?ae=Ie:"avg"===i&&(te+=Ie,le++)}if(isNaN(ae))break}m[Y+Q*b+I]="avg"===i?te/le:ae}}}return g}function Vw(n,t,e,s,r=!1,i=!1){const a=vt(s.outShape,"int32"),o=s.strideHeight,l=s.strideWidth,u=s.dilationHeight,c=s.dilationWidth,h=s.effectiveFilterHeight,d=s.effectiveFilterWidth,p=s.padInfo.top,f=s.padInfo.left,g=vt(t,e,n);for(let m=0;mP&&(P=se,B=r?i?((m*s.inHeight+Y)*s.inWidth+ee)*s.inChannels+x:(Y*s.inWidth+ee)*s.inChannels+x:Q*d+J)}}a.set(B,m,y,S,x)}}return a}function zw(n,t,e,s,r,i){const a=r.strideDepth,o=r.strideHeight,l=r.strideWidth,u=r.dilationDepth,c=r.dilationHeight,h=r.dilationWidth,d=r.effectiveFilterDepth,p=r.effectiveFilterHeight,f=r.effectiveFilterWidth,g=r.padInfo.front,m=r.padInfo.top,x=r.padInfo.left,y="max"===i?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,b=vt(r.outShape,e),v=b.values,w=r.outShape[1]*r.outShape[2]*r.outShape[3]*r.outShape[4],S=r.outShape[2]*r.outShape[3]*r.outShape[4],I=r.outShape[3]*r.outShape[4],k=r.outShape[4];for(let D=0;Dit?it=nn:"avg"===i&&(tt+=nn,mt++),isNaN(it))break}if(isNaN(it))break}if(isNaN(it))break}v[Ze+Y]="avg"===i?tt/Math.max(mt,1):it}}}}return b}const eF={kernelName:Zl,backendName:"cpu",kernelFunc:function JP(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t;We(r,"avgPool");const{filterSize:i,strides:a,pad:o,dimRoundingMode:l}=s;T(Pn(a,1),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${a} and dilations '1'`);const c=ks(r.shape,i,a,1,o,l);let h;if(1===c.filterWidth&&1===c.filterHeight&&rt(c.inShape,c.outShape))h=gr({inputs:{x:r},backend:e});else{const d=e.data.get(r.dataId).values,p=Ue(r.shape),f=Bm(d,0,r.dtype,p,c,"avg");h=e.makeTensorInfo(c.outShape,r.dtype,f.values)}return h}},nF={kernelName:Yl,backendName:"cpu",kernelFunc:function tF(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{filterSize:i,strides:a,pad:o,dimRoundingMode:l,dataFormat:u}=s;We(r,"avgPool3d");const c=Tr(r.shape,i,a,1,o,l,u),d=zw(e.data.get(r.dataId).values,0,r.dtype,Ue(r.shape),c,"avg");return e.makeTensorInfo(d.shape,"float32",d.values)}},rF={kernelName:rd,backendName:"cpu",kernelFunc:function sF(n){const{inputs:t,backend:e,attrs:s}=n,{dy:r,input:i}=t,{filterSize:a,strides:o,pad:l,dimRoundingMode:u}=s;We([r,i],"avgPool3DGrad");const c=Tr(i.shape,a,o,1,l,u),h=c.strideDepth,d=c.strideHeight,p=c.strideWidth,f=c.filterDepth,g=c.filterHeight,m=c.filterWidth,x=c.dilationDepth,y=c.dilationHeight,b=c.dilationWidth,v=c.effectiveFilterDepth,w=c.effectiveFilterHeight,S=c.effectiveFilterWidth,I=v-1-c.padInfo.front,k=S-1-c.padInfo.left,D=w-1-c.padInfo.top,P=vt(i.shape,"float32"),B=1/(f*g*m),Y=e.bufferSync(r);for(let Q=0;Q=c.outDepth||Math.floor(be)!==be))for(let De=0;De=c.outHeight||Math.floor(Ie)!==Ie))for(let Le=0;Le=c.outWidth||Math.floor(Ze)!==Ze||(xe+=Y.get(Q,be,Ie,Ze,ee))}}}P.set(xe*B,Q,J,se,ae,ee)}return e.makeTensorInfo(P.shape,P.dtype,P.values)}},aF={kernelName:sd,backendName:"cpu",kernelFunc:function iF(n){const{inputs:t,backend:e,attrs:s}=n,{dy:r,input:i}=t,a=i;We([r,i],"avgPoolGrad");const{filterSize:o,strides:l,pad:u}=s,c=ks(a.shape,o,l,1,u),h=c.strideHeight,d=c.strideWidth,p=c.filterHeight,f=c.filterWidth,g=c.dilationHeight,m=c.dilationWidth,x=c.effectiveFilterHeight,y=c.effectiveFilterWidth,b=y-1-c.padInfo.left,v=x-1-c.padInfo.top,w=vt(a.shape,"float32"),S=1/(p*f),I=e.data.get(r.dataId).values,k=vt(r.shape,"float32",I);for(let D=0;D=c.outHeight||Math.floor(ae)!==ae))for(let te=0;te=c.outWidth||Math.floor(le)!==le||(J+=k.get(D,ae,le,P))}}w.set(J*S,D,B,Y,P)}return e.makeTensorInfo(w.shape,w.dtype,w.values)}},lF={kernelName:cu,backendName:"cpu",kernelFunc:function oF(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,scale:i,offset:a,mean:o,variance:l}=t;T(o.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),T(null==a||o.shape.length===a.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),T(null==i||o.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),We([r,o,l,i,a],"batchNorm");let{varianceEpsilon:u}=s;null==u&&(u=.001);const c=e.data.get(r.dataId).values,h=e.data.get(o.dataId).values,d=e.data.get(l.dataId).values,p=i?e.data.get(i.dataId).values:new Float32Array([1]),f=a?e.data.get(a.dataId).values:new Float32Array([0]),g=new Float32Array(c.length),m=f.length,x=p.length,y=d.length,b=h.length;let v=0,w=0,S=0,I=0;for(let k=0;k=m&&(v=0),w>=b&&(w=0),S>=x&&(S=0),I>=y&&(I=0);return e.makeTensorInfo(r.shape,r.dtype,g)}};function Bw(n,t,e,s,r){const i=Dp(s,t,e),a=K(e),o=Ue(s);if(i){const h=Op(t,o);return"string"===r?n.slice(h,h+a):n.subarray(h,h+a)}const u=vt(s,r,"string"===r?Ar(n):n),c=vt(e,r);for(let h=0;hf+t[g]);c.set(u.get(...p),...d)}return"string"===r?cb(c.values):c.values}function Xi(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{begin:i,size:a}=s;We(r,"slice");const[o,l]=ac(r,i,a);Rp(r,o,l);const c=Bw(e.data.get(r.dataId).values,o,l,r.shape,r.dtype);return e.makeTensorInfo(l,r.dtype,c)}const uF={kernelName:Vu,backendName:"cpu",kernelFunc:Xi},hF={kernelName:Jl,backendName:"cpu",kernelFunc:function cF(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{blockShape:i,crops:a}=s;We([r],"batchToSpaceND");const o=i.reduce((x,y)=>x*y),l=pl(r.shape,i,o),u=fl(l.length,i.length),c=ml(r.shape,i,o),h=gf(a,i.length),d=xf(c,a,i.length),p=qt({inputs:{x:r},backend:e,attrs:{shape:l}}),f=rs({inputs:{x:p},backend:e,attrs:{perm:u}}),g=qt({inputs:{x:f},backend:e,attrs:{shape:c}}),m=Xi({inputs:{x:g},backend:e,attrs:{begin:h,size:d}});return e.disposeIntermediateTensorInfo(p),e.disposeIntermediateTensorInfo(f),e.disposeIntermediateTensorInfo(g),m}};function Um(n,t,e,s,r){const i=K(s),a=yn(r,e);for(let o=0;o=r||(a[l]+=i>0?t[o]:1)}return a}function Uw(n,t,e,s=!1){const r=n.shape[0],i=n.shape[1],a=vt([r,e],t.dtype);for(let o=0;o=e||a.set(s?1:t.size>0?a.get(o,u)+t.get(o,l):a.get(o,u)+1,o,u)}return a}const pF={kernelName:id,backendName:"cpu",kernelFunc:function dF(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,weights:i}=t,{size:a}=s,u=Um(e.data.get(r.dataId).values,e.data.get(i.dataId).values,i.dtype,i.shape,a);return e.makeTensorInfo([a],i.dtype,u)}},Ww=mn((n,t)=>n&t),mF={kernelName:ad,backendName:"cpu",kernelFunc:Sn(ad,Ww)},xF={kernelName:Fg,backendName:"cpu",kernelFunc:function gF(n){const{inputs:t,backend:e}=n,{s0:s,s1:r}=t,i=e.data.get(s.dataId).values,a=e.data.get(r.dataId).values,o=ht(Array.from(i),Array.from(a));return e.makeTensorInfo([o.length],"int32",Int32Array.from(o))}},Gw=mr(n=>Math.ceil(n)),yF=oi(ro,Gw),bF={kernelName:ro,backendName:"cpu",kernelFunc:yF},vF=Mt(ao,(n,t)=>n>t.clipValueMax?t.clipValueMax:n{const{x:t}=n.inputs,e=n.backend,s=new Float32Array(K(t.shape)),r=e.data.get(t.dataId),a=r.complexTensorInfos.imag,o=e.data.get(r.complexTensorInfos.real.dataId).values,l=e.data.get(a.dataId).values;for(let u=0;u{const o=K(a.shape);r.set(a.vals,i),i+=o})}else{let i=0;n.forEach(a=>{const o="string"===e?Ar(a.vals):a.vals;let l=0;for(let u=0;ug.shape),i);let o=or(t.map(g=>g.shape),i);if(0===K(o))return e.makeTensorInfo(o,t[0].dtype,[]);const l=t.filter(g=>K(g.shape)>0);if(1===l.length)return gr({inputs:{x:l[0]},backend:e});if("complex64"===l[0].dtype){const g=l.map(v=>ji({inputs:{input:v},backend:e})),m=l.map(v=>$a({inputs:{input:v},backend:e})),x=Da({inputs:g,backend:e,attrs:{axis:i}}),y=Da({inputs:m,backend:e,attrs:{axis:i}}),b=cs({inputs:{real:x,imag:y},backend:e});return g.forEach(v=>e.disposeIntermediateTensorInfo(v)),m.forEach(v=>e.disposeIntermediateTensorInfo(v)),e.disposeIntermediateTensorInfo(x),e.disposeIntermediateTensorInfo(y),b}const u=l.map(g=>{const x=[-1,K(g.shape.slice(i))];return qt({inputs:{x:g},backend:e,attrs:{shape:x}})}),c=u.map(g=>({vals:e.data.get(g.dataId).values,shape:g.shape}));o=or(u.map(g=>g.shape),1);const d=Hw(c,o,t[0].dtype,1===u[0].shape[0]),p=or(l.map(g=>g.shape),i),f=e.makeTensorInfo(p,t[0].dtype,d);return u.forEach(g=>e.disposeIntermediateTensorInfo(g)),f}const SF={kernelName:tu,backendName:"cpu",kernelFunc:Da};function jw(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,filter:i}=t,{strides:a,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=s;We([r,i],"conv2d");const h=Sr(l),d=Nn(r.shape,i.shape,a,u,o,c,!1,h),p=d.filterHeight,f=d.filterWidth,g=d.dilationHeight,m=d.dilationWidth,x=d.padInfo.left,y=d.padInfo.top,b="channelsLast"===d.dataFormat,v=new On(d.outShape,r.dtype),w=Ue(r.shape),S=Ue(i.shape),I=w[0],k=b?w[1]:w[2],D=b?w[2]:1,P=b?1:w[1],B=v.strides[0],Y=b?v.strides[1]:v.strides[2],Q=b?v.strides[2]:1,ee=b?1:v.strides[1],J=e.data.get(r.dataId).values,se=e.data.get(i.dataId).values,ae=v.values;for(let te=0;te=d.inHeight)continue;const Le=De*S[0],Ze=le+Ie*k;for(let it=0;it=d.inWidth)continue;const cn=Ze+Vt*D;let Yt=Le+yt*S[1];for(let Wt=0;Wt=u.inDepth)continue;const te=se*D[0],le=B+ae*k[1];for(let ge=0;ge=u.inHeight)continue;const Ie=te+be*D[1],Le=le+De*k[2];for(let Ze=0;Ze=u.inWidth)continue;const Zt=Le+yt*u.inChannels;let cn=Ie+mt*D[2];for(let Yt=0;YtMath.cos(n)),LF={kernelName:oo,backendName:"cpu",kernelFunc:FF},MF=Mt(lo,n=>Math.cosh(n)),VF={kernelName:lo,backendName:"cpu",kernelFunc:MF},BF={kernelName:dd,backendName:"cpu",kernelFunc:function zF(n){const{inputs:t,backend:e,attrs:s}=n,{image:r,boxes:i,boxInd:a}=t,{cropSize:o,method:l,extrapolationValue:u}=s,[c,h,d,p]=r.shape,f=i.shape[0],[g,m]=o,x=vt([f,g,m,p],"float32"),y=e.data.get(i.dataId).values,b=e.data.get(a.dataId).values,v=e.data.get(r.dataId).values,w=Ue(r.shape),S=Ue(x.shape);for(let I=0;I=c)continue;const ee=g>1?(B-D)*(h-1)/(g-1):0,J=m>1?(Y-P)*(d-1)/(m-1):0;for(let se=0;se1?D*(h-1)+se*ee:.5*(D+B)*(h-1);if(ae<0||ae>h-1)for(let te=0;te1?P*(d-1)+xe*J:.5*(P+Y)*(d-1);if(Se<0||Se>d-1){for(let Le=0;Le1?P*(d-1)+te*J:.5*(P+Y)*(d-1);if(le<0||le>d-1){for(let Se=0;Sex+f-y-1:(x,y)=>x+y;for(let x=0;xx+f-y-1:(x,y)=>x+y;for(let x=0;x`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${a}`);const o=r.shape[0],l=r.shape[1],u=r.shape[2],c=r.shape[3],h=l*i,d=u*i,p=c/(i*i),f=e.data.get(r.dataId).values,g=new Float32Array(o*h*d*p);let m=0;for(let x=0;x`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${a} and dilations '${d}'`);const p=Nn(r.shape,i.shape,a,d,o,u,!0),{filterHeight:f,filterWidth:g,dilationHeight:m,dilationWidth:x,padInfo:y}=p,b=y.left,v=y.top,w=p.outChannels/p.inChannels,S=new On(p.outShape,r.dtype),I=e.data.get(r.dataId).values,k=e.data.get(i.dataId).values,D=S.values;for(let P=0;P=p.inHeight)continue;const te=se*h[0],le=B+ae*c[1];for(let ge=0;ge=p.inWidth)continue;const Le=le+De*p.inChannels;let Ze=xe,it=te+be*h[1];for(let tt=0;tt{const{x:s,filter:r}=n,{strides:i,pad:a,dilations:o}=e,l=t,u=l.data.get(s.dataId).values,c=s.shape.length,h=l.data.get(r.dataId).values,d=r.shape.length,{batchSize:p,inHeight:f,inWidth:g,inChannels:m,outHeight:x,outWidth:y,padInfo:b,strideHeight:v,strideWidth:w,filterHeight:S,filterWidth:I,dilationHeight:k,dilationWidth:D,outShape:P}=tl(s.shape,r.shape,i,a,"NHWC",o),B=K(P),Y=P.length,Q=$t(s.dtype,B);for(let J=0;J=0&&De=0&&Lexe&&(xe=tt)}}}Q[Is([J,se,te,ge],Y,Ue(P))]=xe}}}return{dataId:l.write(Ti(Q,s.dtype),P,s.dtype),shape:P,dtype:s.dtype}}},rL={kernelName:yd,backendName:"cpu",kernelFunc:({inputs:n,backend:t,attrs:e})=>{const{x:s,filter:r,dy:i}=n,{strides:a,pad:o,dilations:l}=e,u=t,c=ds(s.shape,u.data.get(s.dataId).values),h=ds(r.shape,u.data.get(r.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:g,outHeight:m,outWidth:x,padInfo:y,strideHeight:b,strideWidth:v,filterHeight:w,filterWidth:S,dilationHeight:I,dilationWidth:k,outShape:D}=tl(s.shape,r.shape,a,o,"NHWC",l);T(i.rank===D.length,()=>`Error in ${yd}, dy must have the same rank as output ${D.length}, but got ${i.rank}`);const P=ds(D,u.data.get(i.dataId).values),B=Jh(r.shape,r.dtype);for(let Q=0;Q=0&&be=0&&Iele&&(le=Le,ge=Se,xe=De)}}}B[ge][xe][te]+=P[Q][ee][se][te]}}}return{dataId:u.write(Ti(B,s.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}},iL={kernelName:xd,backendName:"cpu",kernelFunc:({inputs:n,backend:t,attrs:e})=>{const{x:s,filter:r,dy:i}=n,{strides:a,pad:o,dilations:l}=e,u=t,c=ds(s.shape,u.data.get(s.dataId).values),h=ds(r.shape,u.data.get(r.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:g,outHeight:m,outWidth:x,padInfo:y,strideHeight:b,strideWidth:v,filterHeight:w,filterWidth:S,dilationHeight:I,dilationWidth:k,outShape:D}=tl(s.shape,r.shape,a,o,"NHWC",l);T(i.rank===D.length,()=>`Error in ${xd}, dy must have the same rank as output ${D.length}, but got ${i.rank}`);const P=ds(D,u.data.get(i.dataId).values),B=Jh(s.shape,s.dtype);for(let Q=0;Q=0&&be=0&&Iele&&(le=Le,ge=be,xe=Ie)}}}B[Q][ge][xe][te]+=P[Q][ee][se][te]}}}return{dataId:u.write(Ti(B,s.dtype),s.shape,s.dtype),shape:s.shape,dtype:s.dtype}}},oL={kernelName:"Draw",backendName:"cpu",kernelFunc:function aL(n){const{inputs:t,backend:e,attrs:s}=n,{image:r}=t,{canvas:i,options:a}=s,{contextOptions:o,imageOptions:l}=a||{},u=l?.alpha||1,c=o?.contextType||"2d";if("2d"!==c)throw new Error(`Context type ${o.contextType} is not supported by the CPU backend.`);const h=i.getContext(c,o?.contextAttributes||{});if(null==h)throw new Error(`Could not get the context with ${c} type.`);const[d,p]=r.shape.slice(0,2),f=2===r.shape.length?1:r.shape[2],g=e.data.get(r.dataId).values,m="float32"===r.dtype?255:1,x=new Uint8ClampedArray(p*d*4);for(let b=0;b1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${I}.`)}else if("int32"===r.dtype&&(I<0||I>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${I}.`);1===f?(v[0]=I*m,v[1]=I*m,v[2]=I*m):v[S]=I*m}const w=4*b;x[w+0]=Math.round(v[0]),x[w+1]=Math.round(v[1]),x[w+2]=Math.round(v[2]),x[w+3]=Math.round(v[3])}i.width=p,i.height=d;const y=new ImageData(x,p,d);return h.putImageData(y,0,0),r}},Wm=mn((n,t)=>n*t),lL=Vm((n,t,e,s)=>({real:n*e-t*s,imag:n*s+t*e})),ch=Sn(Eo,Wm,lL),uL={kernelName:Eo,backendName:"cpu",kernelFunc:ch};function Nl(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{axis:i,keepDims:a}=s;let o;We(r,"sum"),o="bool"===r.dtype?li({inputs:{x:r},backend:e,attrs:{dtype:"int32"}}):gr({inputs:{x:r},backend:e});const l=o.shape.length,u=pt(i,o.shape),c=rn(u,l);let h=u,d=o;null!=c&&(d=rs({inputs:{x:o},backend:e,attrs:{perm:c}}),h=dn(h.length,l)),Fn("sum",h,d.shape.length);const[p,f]=An(d.shape,h);let m=uh(e,p,ls(d.dtype,"int32"));const x=K(f),y=e.data.get(m.dataId).values,b=e.data.get(d.dataId).values;for(let v=0;v=0&&(d=Nl({inputs:{x:d},backend:e,attrs:{axis:u[g]-(a.length-p),keepDims:!1}}),f.push(d)),p--)}for(const g of f)g!==d&&e.disposeIntermediateTensorInfo(g);return d}},fL={kernelName:wd,backendName:"cpu",kernelFunc:function pL(n){const{inputs:t,backend:e}=n,{dy:s,y:r}=t;We([s,r],"eluGrad");const i=new Float32Array(K(r.shape)),a=e.data.get(r.dataId).values,o=e.data.get(s.dataId).values;for(let l=0;l=0?o[l]:o[l]*(u+1)}return e.makeTensorInfo(r.shape,"float32",i)}},Kw=mn((n,t)=>n===t?1:0),qw=Sn(lu,Kw,null,"bool"),mL={kernelName:lu,backendName:"cpu",kernelFunc:qw},gL=bf,xL=vf,yL=wf,bL=_f,vL=Tf,wL=Sf,_L=Mt(ho,n=>{const t=Math.sign(n),e=Math.abs(n),s=1/(1+gL*e);return t*(1-((((wL*s+vL)*s+bL)*s+yL)*s+xL)*s*Math.exp(-e*e))}),TL={kernelName:ho,backendName:"cpu",kernelFunc:_L},Zw=mr(n=>Math.exp(n)),Yw=oi(po,Zw,"float32"),SL={kernelName:po,backendName:"cpu",kernelFunc:Yw};function hh(n){const{inputs:t,backend:e,attrs:s}=n,{input:r}=t,{dim:i}=s,a=r.shape.length,o=r.shape.slice();let l=i;return i<0&&(T(-(a+1)<=i,()=>`Axis must be in the interval [${-(a+1)}, ${a}]`),l=a+i+1),o.splice(l,0,1),qt({inputs:{x:r},backend:e,attrs:{shape:o}})}const CL={kernelName:uu,backendName:"cpu",kernelFunc:hh},Qw=mr(n=>Math.expm1(n)),IL=oi(fo,Qw),EL={kernelName:fo,backendName:"cpu",kernelFunc:IL},kL=mn((n,t)=>n/t),Gm=Sn(uo,kL),Hm={kernelName:uo,backendName:"cpu",kernelFunc:Gm},Jw=mn((n,t)=>n-t),NL=Vm((n,t,e,s)=>({real:n-e,imag:t-s})),jm=Sn(Uo,Jw,NL),AL={kernelName:Uo,backendName:"cpu",kernelFunc:jm};function e_(n,t,e){const s=n.shape,r=s[0],i=s[1],a=e.data.get(n.dataId),o=a.complexTensorInfos.real,l=a.complexTensorInfos.imag,u=[r,i],c=K(u),h=Cn("float32",c),d=Cn("float32",c);for(let m=0;m{const{image:s}=n,r=e,i=Cn(s.dtype,K(s.shape)),[a,o,l,u]=s.shape,c=r.data.get(s.dataId).values;for(let d=0;d=0&&bMath.floor(n)),VL=oi(mo,t_),zL={kernelName:mo,backendName:"cpu",kernelFunc:VL},BL=mn((n,t)=>Math.floor(n/t)),UL=Sn(go,BL,null,"int32"),WL={kernelName:go,backendName:"cpu",kernelFunc:UL},HL={kernelName:qu,backendName:"cpu",kernelFunc:function GL(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,filter:i,bias:a,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=s;let g=jw({inputs:{x:r,filter:i},backend:e,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(a){const m=g;if("NCHW"===c&&1===a.shape.length&&1!==a.shape[0]){const x=qt({inputs:{x:a},backend:e,attrs:{shape:[a.shape[0],1,1]}});g=Ra({inputs:{a:g,b:x},backend:e}),e.disposeIntermediateTensorInfo(x)}else g=Ra({inputs:{a:g,b:a},backend:e});e.disposeIntermediateTensorInfo(m)}if(p){const m=g;if("NCHW"===c&&"prelu"===p&&1===o.shape.length&&1!==o.shape[0]){const x=qt({inputs:{x:o},backend:e,attrs:{shape:[o.shape[0],1,1]}});g=lh(e,g,p,x,f),e.disposeIntermediateTensorInfo(x)}else g=lh(e,g,p,o,f);e.disposeIntermediateTensorInfo(m)}return g}},XL={kernelName:Zu,backendName:"cpu",kernelFunc:function jL(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,filter:i,bias:a,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=s;let g=Xw({inputs:{x:r,filter:i},backend:e,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(a){const m=g;g=Ra({inputs:{a:g,b:a},backend:e}),e.disposeIntermediateTensorInfo(m)}if(p){const m=g;g=lh(e,g,p,o,f),e.disposeIntermediateTensorInfo(m)}return g}};function n_(n,t,e,s,r,i,a,o,l){const u=vt([s,i],e);for(let c=0;c=l/i)throw new Error(`Invalid indices: ${h} does not index into ${o}`);for(let p=0;p=0,()=>`GatherV2: the index value ${w} is not in [0, ${c-1}]`)}let h=o;null==o&&(h=0);const d=K(i.shape),p=Of(r,i,l,h),f=qt({inputs:{x:r},backend:e,attrs:{shape:[p.batchSize,p.outerSize,p.dimSize,p.sliceSize]}}),g=qt({inputs:{x:i},backend:e,attrs:{shape:[p.batchSize,d/p.batchSize]}}),m=[p.batchSize,p.outerSize,d/p.batchSize,p.sliceSize],x=e.bufferSync(g),b=s_(e.bufferSync(f),x,m);return e.disposeIntermediateTensorInfo(f),e.disposeIntermediateTensorInfo(g),e.makeTensorInfo(p.outputShape,b.dtype,b.values)}},r_=mn((n,t)=>n>t?1:0),QL=Sn(du,r_,null,"bool"),JL={kernelName:du,backendName:"cpu",kernelFunc:QL},i_=mn((n,t)=>n>=t?1:0),eM=Sn(xo,i_,null,"bool"),tM={kernelName:xo,backendName:"cpu",kernelFunc:eM},sM={kernelName:Cd,backendName:"cpu",kernelFunc:function nM(n){const{inputs:t,backend:e}=n,{input:s}=t,r=K(s.shape),i=s.shape[s.shape.length-1],o=qt({inputs:{x:s},backend:e,attrs:{shape:[r/i,i]}}),l=e_(o,!0,e),u=qt({inputs:{x:l},backend:e,attrs:{shape:s.shape}});return e.disposeIntermediateTensorInfo(o),e.disposeIntermediateTensorInfo(l),u}},rM=Mt(bo,n=>Number.isFinite(n)?1:0,"bool"),iM={kernelName:bo,backendName:"cpu",kernelFunc:rM},aM=Mt(vo,n=>Math.abs(n)===1/0?1:0,"bool"),oM={kernelName:vo,backendName:"cpu",kernelFunc:aM},lM=Mt(wo,n=>Number.isNaN(n)?1:0,"bool"),uM={kernelName:wo,backendName:"cpu",kernelFunc:lM},a_=mn((n,t)=>nn<=t?1:0),dM=Sn(mu,o_,null,"bool"),pM={kernelName:mu,backendName:"cpu",kernelFunc:dM};function l_(n,t,e){const s=(t-n)/(e-1),r=yn(e,"float32");r[0]=n;for(let i=1;iMath.log(n)),gM=oi(_o,u_),xM={kernelName:_o,backendName:"cpu",kernelFunc:gM},yM=Mt(To,n=>Math.log1p(n)),bM={kernelName:To,backendName:"cpu",kernelFunc:yM},vM=mn((n,t)=>n&&t),wM=Sn(gu,vM,null,"bool"),_M={kernelName:gu,backendName:"cpu",kernelFunc:wM},TM=Mt(xu,n=>n?0:1,"bool"),SM={kernelName:xu,backendName:"cpu",kernelFunc:TM},CM=mn((n,t)=>n||t),IM=Sn(yu,CM,null,"bool"),EM={kernelName:yu,backendName:"cpu",kernelFunc:IM},NM={kernelName:bu,backendName:"cpu",kernelFunc:function kM(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{depthRadius:i,bias:a,alpha:o,beta:l}=s;We(r,"LRN");const u=r.shape[3],c=u-1,h=e.data.get(r.dataId).values,d=K(r.shape),p=new Float32Array(d);function f(g){const m=g%u;let x=g-m+Math.max(0,m-i);const y=g-m+Math.min(m+i,c);let b=0;for(;x<=y;x++){const v=h[x];b+=v*v}return b}for(let g=0;go)&&(o=u)}r[i]=o}return r}function h_(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{reductionIndices:i,keepDims:a}=s,o=e;let l=r.shape;const u=l.length,c=pt(i,l);let h=c;const d=rn(h,u);let p=o.data.get(r.dataId).values;if(null!=d){const v=new Array(u);for(let w=0;wMath.max(n,t)),DM=Sn(So,d_),OM={kernelName:So,backendName:"cpu",kernelFunc:DM},FM={kernelName:wu,backendName:"cpu",kernelFunc:function PM(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t;We(r,"maxPool");const{filterSize:i,strides:a,pad:o,dimRoundingMode:l}=s;T(Pn(a,1),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${a} and dilations '1'`);const c=ks(r.shape,i,a,1,o,l);let h;if(1===c.filterWidth&&1===c.filterHeight&&rt(c.inShape,c.outShape))h=gr({inputs:{x:r},backend:e});else{const d=e.data.get(r.dataId).values,p=Ue(r.shape),f=Bm(d,0,r.dtype,p,c,"max");h=e.makeTensorInfo(c.outShape,r.dtype,f.values)}return h}},MM={kernelName:_u,backendName:"cpu",kernelFunc:function LM(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{filterSize:i,strides:a,pad:o,dimRoundingMode:l,dataFormat:u}=s;We(r,"maxPool3d");const c=Tr(r.shape,i,a,1,o,l,u),d=zw(e.data.get(r.dataId).values,0,r.dtype,Ue(r.shape),c,"max");return e.makeTensorInfo(d.shape,"float32",d.values)}},zM={kernelName:Nd,backendName:"cpu",kernelFunc:function VM(n){const{inputs:t,backend:e,attrs:s}=n,{dy:r,input:i}=t,{filterSize:a,strides:o,pad:l,dimRoundingMode:u}=s;We([r,i],"maxPool3DGrad");const c=Tr(i.shape,a,o,1,l,u),d=function QP(n,t){const e=vt(t.outShape,"int32"),s=t.strideDepth,r=t.strideHeight,i=t.strideWidth,a=t.dilationDepth,o=t.dilationHeight,l=t.dilationWidth,u=t.effectiveFilterDepth,c=t.effectiveFilterHeight,h=t.effectiveFilterWidth,d=t.padInfo.front,p=t.padInfo.top,f=t.padInfo.left;for(let g=0;g=Q&&(Q=xe,ee=se*c*h+te*c+ge)}}}e.set(ee,g,x,w,D,m)}}}return e}(e.bufferSync(i),c),p=c.strideDepth,f=c.strideHeight,g=c.strideWidth,m=c.dilationDepth,x=c.dilationHeight,y=c.dilationWidth,b=c.effectiveFilterDepth,v=c.effectiveFilterHeight,w=c.effectiveFilterWidth,S=b-1-c.padInfo.front,I=w-1-c.padInfo.left,k=v-1-c.padInfo.top,D=vt(i.shape,"float32"),P=e.bufferSync(r);for(let B=0;B=c.outDepth||Math.floor(xe)!==xe))for(let Se=0;Se=c.outHeight||Math.floor(be)!==be))for(let De=0;De=c.outWidth||Math.floor(Ie)!==Ie)continue;const it=b*v*w-1-d.get(B,xe,be,Ie,Y)===ge*v*w+Se*w+De?1:0;0!==it&&(le+=P.get(B,xe,be,Ie,Y)*it)}}}D.set(le,B,Q,ee,J,Y)}return e.makeTensorInfo(D.shape,D.dtype,D.values)}},UM={kernelName:kd,backendName:"cpu",kernelFunc:function BM(n){const{inputs:t,backend:e,attrs:s}=n,{dy:r,input:i,output:a}=t,o=i;We([i,a],"maxPoolGrad");const{filterSize:l,strides:u,pad:c,dimRoundingMode:h}=s,d=ks(o.shape,l,u,1,c,h),p=e.data.get(o.dataId).values,f=vt(d.outShape,o.dtype,Vw(p,o.shape,o.dtype,d).values),g=d.strideHeight,m=d.strideWidth,x=d.dilationHeight,y=d.dilationWidth,b=d.effectiveFilterHeight,v=d.effectiveFilterWidth,w=v-1-d.padInfo.left,S=b-1-d.padInfo.top,I=vt(o.shape,"float32"),k=e.data.get(r.dataId).values,D=vt(r.shape,"float32",k);for(let P=0;P=d.outHeight||Math.floor(te)!==te))for(let le=0;le=d.outWidth||Math.floor(ge)!==ge)continue;const be=b*v-1-f.get(P,te,ge,B)===ae*v+le?1:0;0!==be&&(se+=D.get(P,te,ge,B)*be)}}I.set(se,P,Y,Q,B)}return e.makeTensorInfo(I.shape,I.dtype,I.values)}},GM={kernelName:zg,backendName:"cpu",kernelFunc:({inputs:n,attrs:t,backend:e})=>{const{x:s}=n,{filterSize:r,strides:i,pad:a,includeBatchInIndex:o}=t,l=e;We(s,"MaxPoolWithArgmax");const u=l.data.get(s.dataId).values,c=ks(s.shape,r,i,[1,1],a),[h,d]=function WM(n,t,e,s,r){const a=Bm(n,0,e,Ue(t),r,"max"),o=Vw(n,t,e,r,!0,s);return[a.values,o.values]}(u,s.shape,s.dtype,o,c),p=l.write(h,c.outShape,s.dtype),f=l.write(d,c.outShape,s.dtype);return[{dataId:p,shape:c.outShape,dtype:s.dtype},{dataId:f,shape:c.outShape,dtype:"int32"}]}},jM={kernelName:Tu,backendName:"cpu",kernelFunc:function HM(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{axis:i,keepDims:a}=s,o=pt(i,r.shape),c=K(An(r.shape,o)[1]),h=[],d=e.makeTensorInfo([],"float32",new Float32Array([c]));h.push(d);const p=li({inputs:{x:r},backend:e,attrs:{dtype:"float32"}});h.push(p);const f=Gm({inputs:{a:p,b:d},backend:e});h.push(f);const g=Nl({inputs:{x:f},backend:e,attrs:{axis:i,keepDims:a}});return h.forEach(m=>e.disposeIntermediateTensorInfo(m)),g}},KM={kernelName:Su,backendName:"cpu",kernelFunc:function XM(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{axis:i,keepDims:a}=s;We(r,"min");const o=pt(i,r.shape);let l=o;const u=rn(l,r.shape.length);let c=r;null!=u&&(c=rs({inputs:{x:r},backend:e,attrs:{perm:u}}),l=dn(l.length,r.shape.length)),Fn("min",l,c.shape.length);const[h,d]=An(c.shape,l),p=K(d),f=yn(K(h),c.dtype),g=e.data.get(c.dataId).values;for(let x=0;xMath.min(n,t)),qM=Sn(Co,p_),ZM={kernelName:Co,backendName:"cpu",kernelFunc:qM},QM={kernelName:Cu,backendName:"cpu",kernelFunc:function YM(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{paddings:i,mode:a}=s;We(r,"mirrorPad");const o=i.map((b,v)=>b[0]+r.shape[v]+b[1]),l=i.map(b=>b[0]),u=i.map((b,v)=>b[0]+r.shape[v]),c="reflect"===a?0:1,h=e.data.get(r.dataId).values,d=r.shape.length,p=Ue(r.shape),f=K(o),g=o.length,m=Ue(o),x=Cn(r.dtype,f);for(let b=0;b=u[S]&&(v[S]=2*(u[S]-1)-v[S]+c);v=v.map((S,I)=>S-l[I]);const w=Is(v,d,p);x[b]=h[w]}return{dataId:e.write(x,o,r.dtype),shape:o,dtype:r.dtype}}},JM=mn((n,t)=>{const e=n%t;return n<0&&t<0||n>=0&&t>=0?e:(e+t)%t}),eV=Sn(Io,JM),tV={kernelName:Io,backendName:"cpu",kernelFunc:eV};function f_(n){const{inputs:t,backend:e,attrs:s}=n,{logits:r}=t,{dim:i}=s,a=r.shape.length;let o=i;if(-1===o&&(o=a-1),o!==a-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${a} and dim was ${o}`);const l=pt([o],r.shape),u=h_({inputs:{x:r},backend:e,attrs:{reductionIndices:l,keepDims:!1}}),c=hn(u.shape,l),h=qt({inputs:{x:u},backend:e,attrs:{shape:c}}),d=jm({inputs:{a:r,b:h},backend:e}),p=Yw({inputs:{x:d},backend:e}),f=Nl({inputs:{x:p},backend:e,attrs:{axis:l,keepDims:!1}}),g=qt({inputs:{x:f},backend:e,attrs:{shape:c}}),m=Gm({inputs:{a:p,b:g},backend:e});return e.disposeIntermediateTensorInfo(u),e.disposeIntermediateTensorInfo(h),e.disposeIntermediateTensorInfo(d),e.disposeIntermediateTensorInfo(p),e.disposeIntermediateTensorInfo(f),e.disposeIntermediateTensorInfo(g),m}const nV={kernelName:Wu,backendName:"cpu",kernelFunc:f_},rV={kernelName:Bg,backendName:"cpu",kernelFunc:function sV(n){const{inputs:t,backend:e,attrs:s}=n,{logits:r}=t,{numSamples:i,seed:a,normalized:o}=s;We(r,"multinomial");const l=o?r:f_({inputs:{logits:r},backend:e,attrs:{dim:-1}}),u=l.shape[0],c=l.shape[1],h=e.data.get(l.dataId).values,d=[u,i],p=yn(K(d),"int32");for(let f=0;fn!==t?1:0),gV=Sn(Eu,g_,null,"bool"),xV={kernelName:Eu,backendName:"cpu",kernelFunc:gV},bV={kernelName:Nu,backendName:"cpu",kernelFunc:function yV(n){const{inputs:t,backend:e,attrs:s}=n,{indices:r}=t,{dtype:i,depth:a,onValue:o,offValue:l}=s;We(r,"oneHot");const u=K(r.shape),c=new Float32Array(u*a);c.fill(l);const h=e.data.get(r.dataId).values;for(let d=0;d=0&&h[d]{Me(i,c.shape,"All tensors passed to stack must have matching shapes"),T(a===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});const o=[],u=Da({inputs:t.map(c=>{const h=hh({inputs:{input:c},backend:e,attrs:{dim:r}});return o.push(h),h}),backend:e,attrs:{axis:r}});return o.forEach(c=>e.disposeIntermediateTensorInfo(c)),u}const _V={kernelName:Au,backendName:"cpu",kernelFunc:y_},b_={kernelName:Ru,backendName:"cpu",kernelFunc:function TV(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{paddings:i,constantValue:a}=s;We(r,"pad");const o=i.map((y,b)=>y[0]+r.shape[b]+y[1]),l=i.map(y=>y[0]),u=e.data.get(r.dataId).values,c=K(r.shape),h=r.shape.length,d=Ue(r.shape),p=K(o),f=o.length,g=Ue(o),m=Cn(r.dtype,p);0!==a&&m.fill(a);for(let y=0;yS+l[I]),f,g)]=u[y];return{dataId:e.write(m,o,r.dtype),shape:o,dtype:r.dtype}}},SV=mn((n,t)=>Math.pow(n,t)),CV=Sn(ko,SV),IV={kernelName:ko,backendName:"cpu",kernelFunc:CV};function v_(n,t,e,s){const[r,i]=An(n,s),a=ls(t,"int32"),o=yn(K(r),a),l=K(i);for(let u=0;ue.disposeIntermediateTensorInfo(y)),e.makeTensorInfo(x,m,f)}};function w_(n,t){const e=n.slice(0,t);for(;e.length{if(s<0||s>=e){const i=wr(r,t.length,Ue(t)).join(",");throw new Error(`indices[${i}] = ${s} is not in [0, ${e})`)}})}(i,a,t[0][0]-1),0===s.length)throw new Error("params.rank must be nonzero");const u=s[0],{outSplits:c,valueSlices:h,numValues:d}=function RV(n,t,e,s){const r=[];let i=0;const o=new Array(t.length-1+e.length).fill(null).map(()=>[0]);!function AV(n,t){for(let e=0;er)throw new Error("Ragged splits must not point past values");for(let i=1;is[i])throw new Error("Ragged splits must be sorted in ascending order")}}(e,s);let l=1;for(let u=0;u=0){const g=o[f],m=g[g.length-1]-p[c];for(let x=c;xr[a]=i)}return t}(c),f=function OV(n,t,e,s,r){const i=t.slice();i[0]=r;const a=$t(e,K(i)),o=n.length;return function DV(n,t,e,s,r,i){const a=w_(t,2)[1],o=w_(i,2)[1];let l=0;for(const u of e)for(let c=u[0];ce.data.get(x.dataId).values),u=r.map(x=>x.shape),c=e.data.get(i.dataId).values,h=e.data.get(a.dataId).values,[d,p,f]=__(l,u,c,i.shape,i.dtype,h,a.shape),g=d.map(x=>e.makeTensorInfo([x.length],"int32",x)),m=e.makeTensorInfo(f,i.dtype,p);return g.concat([m])}},T_=2147483647;function S_(n,t,e,s,r,i,a){if(t.length>1)throw new Error("starts must be a scalar or vector");if(r.length>1)throw new Error("limits must be a scalar or vector");if(a.length>1)throw new Error("deltas must be a scalar or vector");const o=0===t.length,l=0===r.length,u=0===a.length,c=[];o||c.push(t[0]),l||c.push(r[0]),u||c.push(a[0]);for(let m=1;m0&&yx)v=0;else if(v=Math.ceil(Math.abs((y-x)/b)),v>T_)throw new Error(`Requires ((limit - start) / delta) <= ${T_}`);d[m+1]=d[m]+v}const f=$t(e,d[h]);let g=0;for(let m=0;ms&&(s=i)}return s}static getMaxWidthValueRowID(t){const e=t.length;if(0===e)return 0;let s=0,r=t[0],i=0;for(let a=1;a"Final length of result must be equal to firstDimension."),i}calculateOutputIndexRowSplit(t,e,s,r){const i=t.length,a=[];for(let o=0;o0&&a.length!==t[i-1])throw new Error("Invalid row split size.");return a}calculateOutputIndexValueRowID(t,e,s,r){const i=t.length,a=[];if(0===i)return[];let o=0,l=t[0];if(l>=e.length)throw new Error(`Got currentValueRowId=${l}, which is not less than ${e.length}`);let u=e[l];a.push(u);for(let c=1;c=0&&(++o,o=e.length)throw new Error(`Got nextValueRowId=${h} which is not less than ${e.length}`);u=e[h]}a.push(u)}if(a.length!==t.length)throw new Error("Invalid row ids.");return a}calculateOutputIndex(t,e,s,r){const i=this.getRowPartitionTensor(t),a=this.getRowPartitionTypeByDimension(t);switch(a){case Ps.VALUE_ROWIDS:return this.calculateOutputIndexValueRowID(i,e,s,r);case Ps.ROW_SPLITS:if(i.length-1>e.length)throw new Error(`Row partition size is greater than output size: ${i.length-1} > ${e.length}`);return this.calculateOutputIndexRowSplit(i,e,s,r);default:throw new Error(`Unsupported partition type: ${Ps[a]}`)}}getFirstDimensionSize(){const t=this.rowPartitionValues[0];if(0===this.rowPartitionTypes.length)throw new Error("No row_partition_types given.");const e=this.rowPartitionTypes[0];switch(e){case Ps.FIRST_DIM_SIZE:return t[0];case Ps.VALUE_ROWIDS:throw new Error("Cannot handle VALUE_ROWIDS in first dimension.");case Ps.ROW_SPLITS:return this.rowPartitionValuesShapes[0][0]-1;default:throw new Error(`Cannot handle type ${Ps[e]}`)}}compute(){if(this.rowPartitionValues[0].length<=0)throw new Error("Invalid first partition input. Tensor requires at least one element.");const e=this.getFirstDimensionSize(),s=this.calculateOutputSize(e),r=new Array(this.raggedRank+1);r[r.length-1]=1;for(let l=r.length-2;l>=0;--l)r[l]=r[l+1]*s[l+1];const i=I_(s,!1),a=$t(this.valuesDType,K(i));if(r[0]*s[0]>0){let l=this.calculateFirstParentOutputIndex(e,r[0],s[0]);for(let u=1;u<=this.raggedRank;++u)l=this.calculateOutputIndex(u-1,l,r[u],s[u]);this.setOutput(this.raggedRank,l,a,i)}return[i,a]}setOutput(t,e,s,r){if(0===s.length)return;const i=this.values,a=s;let o=r.slice();o=o.slice(t+1);const l=K(o),u=e.length;let c=this.defaultValue;if(c.length!==l&&1!==c.length){const f=this.defaultValueShape;Z(()=>{const g=j(c,f);c=rl(g,o).dataSync()})}let h=0,d=0,p=0;for(let f=0;f<=u;++f){let g=f=u&&(g=Math.floor(s.length/l)),g>p)if(1===this.defaultValue.length)a.subarray(p*l,g*l).fill(this.defaultValue[0]),p=g;else for(;g>p;)C_(a.slice(p*l),c,l),++p;g<0?(h=f+1,d=p):(h=f,d=p,p=d+1)}else++p}}}function C_(n,t,e){for(let s=0;s= 0`);if(s<-1)throw new Error(`Dimension ${s} must be >= -1`);s=-1}e.push(s)}return e}function E_(n,t,e,s,r,i,a,o,l,u){return new ph(n,t,e,s,r,i,a,o,l,u).compute()}const zV={kernelName:Gg,backendName:"cpu",kernelFunc:function VV(n){const{inputs:t,backend:e,attrs:s}=n,{shape:r,values:i,defaultValue:a,rowPartitionTensors:o}=t,{rowPartitionTypes:l}=s,u=e.data.get(r.dataId).values,c=e.data.get(i.dataId).values,h=e.data.get(a.dataId).values,d=o.map(m=>e.data.get(m.dataId).values),p=o.map(m=>m.shape),[f,g]=E_(u,r.shape,c,i.shape,i.dtype,h,a.shape,d,p,l);return e.makeTensorInfo(f,i.dtype,g)}};function k_(n,t,e,s){if(n===t||n1)return yn(0,s);const l=yn(Math.abs(Math.ceil((t-n)/e)),s);t1/n),GV={kernelName:No,backendName:"cpu",kernelFunc:WV},jV={kernelName:Fu,backendName:"cpu",kernelFunc:function HV(n){const{inputs:t,backend:e,attrs:s}=n,{images:r}=t,{alignCorners:i,halfPixelCenters:a,size:o}=s;We(r,"resizeBilinear");const l=Ue(r.shape),[u,c]=o,[h,d,p,f]=r.shape,g=e.data.get(r.dataId).values,m=new Float32Array(K([h,u,c,f])),x=[i&&u>1?d-1:d,i&&c>1?p-1:p],y=[i&&u>1?u-1:u,i&&c>1?c-1:c];let b=0;const v=x[0]/y[0],w=x[1]/y[1];for(let S=0;S1?u-1:u,a&&p>1?c-1:c],m=[a&&d>1?d-1:d,a&&p>1?p-1:p],x=g[0]/m[0],y=g[1]/m[1],b=e.data.get(i.dataId).values;let v=0;for(let w=0;w1?d-1:d,i&&c>1?p-1:p],y=[i&&u>1?u-1:u,i&&c>1?c-1:c],b=x[0]/y[0],v=x[1]/y[1];let w=0;for(let S=0;S1?c-1:c,a&&f>1?h-1:h],y=[a&&p>1?p-1:p,a&&f>1?f-1:f],b=x[0]/y[0],v=x[1]/y[1],w=1/b,S=1/v,I=2*Math.ceil(w)+2,k=2*Math.ceil(S)+2;for(let D=0;D=p)continue;const be=P+Se*l[1],De=Se*b;if(B===Math.min(c-1,a?Math.round(De):Math.floor(De)))for(let Le=0;Le=f)continue;const it=be+Ze*l[2],tt=Ze*v;J===Math.min(h-1,a?Math.round(tt):Math.floor(tt))&&(ge+=m[it+le])}}g[se+le]=ge}}}}return e.makeTensorInfo(r.shape,r.dtype,g)}},e3={kernelName:Lu,backendName:"cpu",kernelFunc:function JV(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{dims:i}=s;We(r,"reverse");const a=r.shape.length,o=pt(i,r.shape);if(0===a)return gr({inputs:{x:r},backend:e});const l=new On(r.shape,r.dtype),u=e.bufferSync(r);for(let c=0;cd[p]=r.shape[p]-1-d[p]),l.set(u.get(...d),...h)}return e.makeTensorInfo(l.shape,l.dtype,l.values)}},t3={kernelName:Zd,backendName:"cpu",kernelFunc:({inputs:n,attrs:t,backend:e})=>{const{image:s}=n,{radians:r,fillValue:i,center:a}=t,o=e,l=Cn(s.dtype,K(s.shape)),[u,c,h,d]=s.shape,[p,f]=mf(a,c,h),m=Math.sin(r),x=Math.cos(r),y=o.data.get(s.dataId).values;for(let v=0;v=0&&ee=0&&J{const t=Math.floor(n);return n-t<.5?Math.floor(n):n-t>.5?Math.ceil(n):t%2==0?t:t+1}),s3={kernelName:$o,backendName:"cpu",kernelFunc:n3},N_=mr(n=>1/Math.sqrt(n)),r3=oi(Do,N_),i3={kernelName:Do,backendName:"cpu",kernelFunc:r3};function Ki(n,t,e,s,r,i,a,o,l,u){const c=[s/r,r],h=n.values,d=t.values;if(0===s)return vt(e,t.dtype);const p=l instanceof On?l:vt(c,t.dtype);"string"==typeof l||"number"==typeof l?p.values.fill(l):"boolean"==typeof l&&p.values.fill(+l);for(let f=0;f=s/r)throw new Error(`Invalid indices: ${g} does not index into ${e}`);for(let x=0;x1||1===r.shape.length?1:K(r.shape.slice(1));for(let f=0;fn>=0?g3*n:m3*(Math.exp(n)-1)),y3={kernelName:Oo,backendName:"cpu",kernelFunc:x3},b3=Mt(Lo,n=>n<0?-1:n>0?1:0),v3={kernelName:Lo,backendName:"cpu",kernelFunc:b3},w3=Mt(Po,n=>Math.sin(n)),_3={kernelName:Po,backendName:"cpu",kernelFunc:w3},T3=Mt(Fo,n=>Math.sinh(n)),S3={kernelName:Fo,backendName:"cpu",kernelFunc:T3},A_=Math.log(1.1920928955078125e-7)+2,C3=Mt(Vo,n=>{const t=n>-A_,e=n=l)throw new Error(Jy(m,x,l));++f[x],d=d&&x>=p,p=x}let g=!0;for(let m=0;m0&&(f[m]+=f[m-1])}if(g&&d){const m=n,x=s;for(let y=0;yNumber(m)))),e.makeTensorInfo([g.length],s.dtype,new Int32Array(g))]}};function $_(n,t,e,s,r){const i=K(s),a=t[0],o=r.length,l=[];let u=1,c=-1;for(let m=0;m0){p[d-1]=1;for(let m=d-2;m>=0;--m)p[m]=p[m+1]*s[m+1]}const f=[];if(o>0){f[o-1]=1;for(let m=o-2;m>=0;--m)f[m]=f[m+1]*l[m+1]}const g=$t(e,a*o);for(let m=0;m0?r[o-1]+1:0;if(h<0)throw new Error("segment ids must be >= 0");const d=t.slice();d[0]=h;const f=$t(e,d.reduce((b,v)=>b*v,1));if(0===o)return h>0&&f.fill(a),[f,d];if(h<=0)throw new Error("segment ids must be >= 0");let g=0,m=1,x=0,y=r[g];for(;;){let b=0;if(m=b)throw new Error("segment ids are not increasing")}if(y<0||y>=h)throw new Error(ab(y,h));y>x&&f.fill(a,x*u,y*u);for(let v=g;v=l[0])throw new Error(ob(v,s[v],l[0]));for(let S=0;So)break}return x{const d=[...c];d[o]=h;const p=Xi({inputs:{x:r},backend:e,attrs:{begin:u,size:d}});return u[o]+=h,p})}},B3=mr(n=>Math.sqrt(n)),U3=Mt(zo,n=>Math.sqrt(n)),W3={kernelName:zo,backendName:"cpu",kernelFunc:U3},G3={kernelName:Bd,backendName:"cpu",kernelFunc:({inputs:n,backend:t})=>{const{x:e}=n,s=t;We(e,"square");const r=s.data.get(e.dataId).values,i=new Float32Array(r.length);for(let o=0;o{const e=n-t;return e*e}),j3=Sn(Bo,H3),X3={kernelName:Bo,backendName:"cpu",kernelFunc:j3},D_=mr((n,t)=>{const{pattern:e,replaceGlobal:s,rewrite:r}=t;return n.replace(new RegExp(e,s?"g":""),r)}),q3={kernelName:Gu,backendName:"cpu",kernelFunc:oi(Gu,D_)},Z3=Mt(jo,(n,t)=>{const e=t;return isNaN(n)?NaN:n>0?1:e.alpha}),Y3={kernelName:jo,backendName:"cpu",kernelFunc:Z3};function O_(n,t,e,s){const r=vt(n,t.dtype);for(let i=0;i=1,()=>`Input must have rank at least 1, got: ${r.shape.length}`);const S=$p(y,b,v),I=Xi({inputs:{x:r},backend:e,attrs:{begin:y,size:S}});w=qt({inputs:{x:I},backend:e,attrs:{shape:f}}),e.disposeIntermediateTensorInfo(I)}else{const I=O_(p,e.bufferSync(r),v,y);w=e.makeTensorInfo(f,I.dtype,I.values)}return w}};class ez{constructor(t,e,s,r,i,a){this.separator=Ur(t),this.nGramWidths=e,this.leftPad=Ur(s),this.rightPad=Ur(r),this.padWidth=i,this.preserveShort=a}getPadWidth(t){return Math.min(this.padWidth<0?t-1:this.padWidth,t-1)}getNumNGrams(t,e){const s=this.getPadWidth(e);return Math.max(0,t+2*s-e+1)}createNGrams(t,e,s,r,i,a){for(let o=0;o0?0:o-l);let p=0;p+=u*this.leftPad.length;for(let y=0;yy.forEach(b=>g[m++]=b);for(let y=0;y0){x(t[d+h-1]);for(let y=0;y0){let l=e[0];if(0!==l)throw new Error(`First split value must be 0, got ${l}`);for(let u=1;u=l;if(c=c&&e[u]<=s,!c)throw new Error(`Invalid split value ${e[u]}, must be in [${l}, ${s}]`);l=e[u]}if(l!==s)throw new Error(`Last split value must be data size. Expected ${s}, got ${l}`)}const i=r-1,a=$t("int32",r);if(0===s||0===r){const l=new Array(s);for(let u=0;u<=i;++u)a[u]=0;return[l,a]}a[0]=0;for(let l=1;l<=i;++l){const u=e[l]-e[l-1];let c=0;this.nGramWidths.forEach(h=>{c+=this.getNumNGrams(u,h)}),this.preserveShort&&u>0&&0===c&&(c=1),a[l]=a[l-1]+c}const o=new Array(a[i]);for(let l=0;l{const p=this.getNumNGrams(e[l+1]-e[l],h);this.createNGrams(t,u,o,c,p,h),c+=p}),this.preserveShort&&c===a[l]){const h=e[l+1]-e[l];if(0===h)continue;this.createNGrams(t,u,o,c,1,h+2*this.padWidth)}}return[o,a]}}function P_(n,t,e,s,r,i,a,o){return new ez(e,s,r,i,a,o).compute(n,t)}const nz={kernelName:Wd,backendName:"cpu",kernelFunc:function tz(n){const{inputs:t,backend:e,attrs:s}=n,{separator:r,nGramWidths:i,leftPad:a,rightPad:o,padWidth:l,preserveShortSequences:u}=s,{data:c,dataSplits:h}=t,d=e.data.get(c.dataId).values,p=e.data.get(h.dataId).values,[f,g]=P_(d,p,r,i,a,o,l,u);return[e.makeTensorInfo([f.length],"string",f),e.makeTensorInfo(h.shape,"int32",g)]}};function sz(n,t,e,s){if(!n.length)return;if(0===t.length){for(let i=0;iMath.tan(n)),uz={kernelName:Wo,backendName:"cpu",kernelFunc:lz},cz=Mt(Go,n=>Math.tanh(n));function M_(n,t){const e=new Array(n.rank);for(let r=0;r{const e=t.value-n.value;return 0===e?n.index-t.index:e};function V_(n,t,e=0,s=n.length-1){for(;s>e;){if(s-e>600){const o=s-e+1,l=t-e+1,u=Math.log(o),c=.5*Math.exp(2*u/3),h=.5*Math.sqrt(u*c*(o-c)/o)*Math.sign(l-o/2);V_(n,t,Math.max(e,Math.floor(t-l*c/o+h)),Math.min(s,Math.floor(t+(o-l)*c/o+h)))}const r=n[t];let i=e,a=s;for(M(n,e,t),Al(n[s],r)>0&&M(n,e,s);i0;)a-=1}0===Al(n[e],r)?M(n,e,a):(a+=1,M(n,a,s)),a<=t&&(e=a+1),t<=a&&(s=a-1)}}function z_(n,t,e,s,r){const i=t[t.length-1],[a,o]=[n.length/i,i],l=Cn(e,a*s),u=Cn("int32",a*s);for(let h=0;hf[b]={value:y,index:b}),st-1)if(t<=1)e=0;else{const s=2*t;e-=s*Math.trunc(e/s),e>=t&&(e=s-e-1)}return G(0,e,t-1)}(n,t);case"wrap":return function wz(n,t){let e=n;return e<0?t<=1?e=0:e+=t*(Math.trunc(-e/(t-1))+1):e>t-1&&(t<=1?e=0:e-=t*Math.trunc(e/(t-1))),G(0,e,t-1)}(n,t);case"nearest":return function Tz(n,t){return G(0,n,t-1)}(n,t);default:return function _z(n){return n}(n)}}function Rl(n,t,e,s,r,i,a,o,l,u,c){return 0<=o&&o{for(let m=0;me.disposeIntermediateTensorInfo(f)),p}},vV];for(const n of $z)Qd(n);const ui={},fh={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function Zs(n,t){if(!(n in ui)||null!=t){const s=function Pz(n,t){if(1!==n&&2!==n)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");const e=t??function Oz(n){if(!E().getBool("IS_SAFARI")&&typeof OffscreenCanvas<"u"&&2===n)return new OffscreenCanvas(300,150);if(typeof document<"u")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}(n);return e.addEventListener("webglcontextlost",s=>{s.preventDefault(),delete ui[n]},!1),E().getBool("SOFTWARE_WEBGL_ENABLED")&&(fh.failIfMajorPerformanceCaveat=!1),1===n?e.getContext("webgl",fh)||e.getContext("experimental-webgl",fh):e.getContext("webgl2",fh)}(n,t);if(null===s)return console.log("Could not get context for WebGL version",n),null;ui[n]=s}const e=ui[n];return null==e||e.isContextLost()?(delete ui[n],Zs(n)):(e.disable(e.DEPTH_TEST),e.disable(e.STENCIL_TEST),e.disable(e.BLEND),e.disable(e.DITHER),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SAMPLE_COVERAGE),e.enable(e.SCISSOR_TEST),e.enable(e.CULL_FACE),e.cullFace(e.BACK),ui[n])}var mh=function(n){return n[n.DENSE=0]="DENSE",n[n.SHARED_BATCH=1]="SHARED_BATCH",n}(mh||{}),Fs=function(n){return n[n.RENDER=0]="RENDER",n[n.UPLOAD=1]="UPLOAD",n[n.PIXELS=2]="PIXELS",n[n.DOWNLOAD=3]="DOWNLOAD",n}(Fs||{}),Gn=function(n){return n[n.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",n[n.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",n[n.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",n[n.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",n[n.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16",n}(Gn||{});function $l(n,t){return[t,n]}function gh(n){const t=K(n);return Vs(Math.ceil(t/4))}function Oa(n,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(n/2))]}function Zm(n,t){const e=n;let s,r,i,a,o,l,u,c,h,d;return 2===E().getNumber("WEBGL_VERSION")?(s=e.R32F,r=e.R16F,i=e.RGBA16F,a=e.RGBA32F,o=e.RED,u=4,c=1,h=e.HALF_FLOAT,d=e.FLOAT,l=e.RGBA8):(s=n.RGBA,r=n.RGBA,i=n.RGBA,a=e.RGBA,o=n.RGBA,u=4,c=4,h=null!=t?t.HALF_FLOAT_OES:null,d=n.FLOAT,l=n.RGBA),{internalFormatFloat:s,internalFormatHalfFloat:r,internalFormatPackedHalfFloat:i,internalFormatPackedFloat:a,textureFormatFloat:o,downloadTextureFormat:l,downloadUnpackNumChannels:u,defaultNumChannels:c,textureTypeHalfFloat:h,textureTypeFloat:d}}function Ae(n,t){const e=t();return E().getBool("DEBUG")&&function Mz(n){const t=n.getError();if(t!==n.NO_ERROR)throw new Error("WebGL Error: "+function Uz(n,t){switch(t){case n.NO_ERROR:return"NO_ERROR";case n.INVALID_ENUM:return"INVALID_ENUM";case n.INVALID_VALUE:return"INVALID_VALUE";case n.INVALID_OPERATION:return"INVALID_OPERATION";case n.INVALID_FRAMEBUFFER_OPERATION:return"INVALID_FRAMEBUFFER_OPERATION";case n.OUT_OF_MEMORY:return"OUT_OF_MEMORY";case n.CONTEXT_LOST_WEBGL:return"CONTEXT_LOST_WEBGL";default:return`Unknown error code ${t}`}}(n,t))}(n),e}function Bz(n){return!!(E().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||0===n||5.96e-8n.getExtension(t),'Extension "'+t+'" not supported on this browser.')}const Hz=/ERROR: [0-9]+:([0-9]+):/g;function W_(n,t){const e=Hz.exec(t);if(null==e)return console.log(`Couldn't parse line number in error: ${t}`),void console.log(n);const s=+e[1],r=n.split("\n"),i=r.length.toString().length+2,a=r.map((h,d)=>zs((d+1).toString(),i)+h);let o=0;for(let h=0;hn.validateProgram(t)),!1===n.getProgramParameter(t,n.VALIDATE_STATUS))throw console.log(n.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function G_(n,t,e,s,r,i,a){const o=n.getAttribLocation(t,e);return-1!==o&&(Ae(n,()=>n.bindBuffer(n.ARRAY_BUFFER,s)),Ae(n,()=>n.vertexAttribPointer(o,r,n.FLOAT,!1,i,a)),Ae(n,()=>n.enableVertexAttribArray(o)),!0)}function nB(n,t,e,s){Ae(n,()=>function Jz(n,t,e){(function j_(n,t){const e=n.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,s=t+n.TEXTURE0;if(se)throw new Error(`textureUnit must be in [gl.TEXTURE0, gl.TEXTURE${e}].`)})(n,e),Ae(n,()=>n.activeTexture(n.TEXTURE0+e)),Ae(n,()=>n.bindTexture(n.TEXTURE_2D,t))}(n,t,s)),Ae(n,()=>n.uniform1i(e,s))}function Qm(n,t,e){Ae(n,()=>n.bindFramebuffer(n.FRAMEBUFFER,e)),Ae(n,()=>n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,t,0))}function H_(n,t){Ae(n,()=>n.bindFramebuffer(n.FRAMEBUFFER,t)),Ae(n,()=>n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,null,0))}function yh(n){const t=n.checkFramebufferStatus(n.FRAMEBUFFER);if(t!==n.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+function sB(n,t){switch(t){case n.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case n.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case n.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case n.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}(n,t))}function Dr(n,t,e){const s=Ae(n,()=>t());if(null==s)throw new Error(e);return s}function Pa(n,t=2){return K(n.slice(0,n.length-t))}function Fa(n){if(0===n.length)throw Error("Cannot get rows and columns of an empty shape array.");return[n.length>1?n[n.length-2]:1,n[n.length-1]]}function bh(n){let t=[1,1,1];return 0===n.length||1===n.length&&1===n[0]||(t=[Pa(n),...Fa(n)]),t}function vh(n){return n%2==0}function wh(n,t){if(rt(n=n.slice(-2),t=t.slice(-2))||!n.length||!t.length||0===n[0]||0===n[1]||0===t[0]||0===t[1])return!0;if(n.length!==t.length){const e=n[n.length-1],s=t[t.length-1];if(e===s||vh(e)&&vh(s)&&(1===n[0]||1===t[0]))return!0}return n[1]===t[1]&&vh(n[0])&&vh(t[0])}let _h,Th;function Ls(n,t){return null!=n.getExtension(t)}function X_(n){try{if(null!=Zs(n))return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function Jm(n){const t=Zm(n),e=n.createTexture();n.bindTexture(n.TEXTURE_2D,e),n.texImage2D(n.TEXTURE_2D,0,t.internalFormatFloat,1,1,0,t.textureFormatFloat,t.textureTypeFloat,null);const i=n.createFramebuffer();n.bindFramebuffer(n.FRAMEBUFFER,i),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,e,0);const a=n.checkFramebufferStatus(n.FRAMEBUFFER)===n.FRAMEBUFFER_COMPLETE;return n.bindTexture(n.TEXTURE_2D,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.deleteTexture(e),n.deleteFramebuffer(i),a}function Dl(n,t){Array.isArray(n)||(n=[n]),n.forEach(e=>{null!=e&&T("complex64"!==e.dtype,()=>`${t} does not support complex64 tensors in the WebGL backend.`)})}const He=E();function Qn(){let n,t,e,s,r,i,a,o,l,u;return 2===E().getNumber("WEBGL_VERSION")?(n="#version 300 es",t="in",e="out",s="in",r="texture",i="outputColor",a="out vec4 outputColor;",o=E().getBool("WEBGL2_ISNAN_CUSTOM")?"\n bool isnan_custom(float val) {\n uint floatToUint = floatBitsToUint(val);\n return (floatToUint & 0x7fffffffu) > 0x7f800000u;\n }\n\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan_custom(val.x),\n isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w));\n }\n\n #define isnan(value) isnan_custom(value)\n ":"",l="",u="\n #define round(value) newRound(value)\n int newRound(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 newRound(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "):(n="",t="attribute",e="varying",s="varying",r="texture2D",i="gl_FragColor",a="",o="\n #define isnan(value) isnan_custom(value)\n bool isnan_custom(float val) {\n return (val > 0. || val < 1. || val == 0.) ? false : true;\n }\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));\n }\n ",l="\n uniform float INFINITY;\n\n bool isinf(float val) {\n return abs(val) == INFINITY;\n }\n bvec4 isinf(vec4 val) {\n return equal(abs(val), vec4(INFINITY));\n }\n ",u="\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 round(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "),{version:n,attribute:t,varyingVs:e,varyingFs:s,texture2D:r,output:i,defineOutput:a,defineSpecialNaN:o,defineSpecialInf:l,defineRound:u}}function qi(n,t,e="index"){const s=Ue(t);return s.map((r,i)=>`int ${n[i]} = ${e} / ${r}; ${i===s.length-1?`int ${n[i+1]} = ${e} - ${n[i]} * ${r}`:`index -= ${n[i]} * ${r}`};`).join("")}function Sh(n,t,e="index"){const s=Ue(t);return s.map((r,i)=>`int ${n[i]} = ${e} / outShapeStrides[${i}]; ${i===s.length-1?`int ${n[i+1]} = ${e} - ${n[i]} * outShapeStrides[${i}]`:`index -= ${n[i]} * outShapeStrides[${i}]`};`).join("")}function eg(n){const t=Ue(n).map(e=>e.toString());return`\n int getFlatIndex(ivec3 coords) {\n return coords.x * ${t[0]} + coords.y * ${t[1]} + coords.z;\n }\n`}He.registerFlag("HAS_WEBGL",()=>He.getNumber("WEBGL_VERSION")>0),He.registerFlag("WEBGL_VERSION",()=>X_(2)?2:X_(1)?1:0),He.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1),He.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>2===He.get("WEBGL_VERSION")),He.registerFlag("WEBGL_CPU_FORWARD",()=>!0),He.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1),He.registerFlag("WEBGL_PACK",()=>He.getBool("HAS_WEBGL")),He.registerFlag("WEBGL_PACK_NORMALIZATION",()=>He.getBool("WEBGL_PACK")),He.registerFlag("WEBGL_PACK_CLIP",()=>He.getBool("WEBGL_PACK")),He.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>He.getBool("WEBGL_PACK")),He.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>He.getBool("WEBGL_PACK")),He.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>He.getBool("WEBGL_PACK")),He.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>He.getBool("WEBGL_PACK")),He.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>He.getBool("WEBGL_PACK")),He.registerFlag("WEBGL_PACK_REDUCE",()=>He.getBool("WEBGL_PACK")),He.registerFlag("WEBGL_LAZILY_UNPACK",()=>He.getBool("WEBGL_PACK")),He.registerFlag("WEBGL_CONV_IM2COL",()=>He.getBool("WEBGL_PACK")),He.registerFlag("WEBGL_PACK_CONV2DTRANSPOSE",()=>He.getBool("WEBGL_PACK")),He.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>function iB(n){if(null==_h){const t=Zs(n);_h=t.getParameter(t.MAX_TEXTURE_SIZE)}return _h}(He.getNumber("WEBGL_VERSION"))),He.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>function aB(n){if(null==Th){const t=Zs(n);Th=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,Th)}(He.getNumber("WEBGL_VERSION"))),He.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{const n=He.getNumber("WEBGL_VERSION");return 0===n?0:function oB(n){if(0===n)return 0;let t;const e=Zs(n);return t=Ls(e,"EXT_disjoint_timer_query_webgl2")&&2===n?2:Ls(e,"EXT_disjoint_timer_query")?1:0,t}(n)}),He.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>He.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!px()),He.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>function lB(n){if(0===n)return!1;const t=Zs(n);if(1===n){if(!Ls(t,"OES_texture_float"))return!1}else if(!Ls(t,"EXT_color_buffer_float"))return!1;return Jm(t)}(He.getNumber("WEBGL_VERSION"))),He.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>!He.getBool("WEBGL_FORCE_F16_TEXTURES")&&He.getBool("WEBGL_RENDER_FLOAT32_CAPABLE")),He.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>function uB(n){if(0===n)return!1;const t=Zs(n);if(1!==n){if(Ls(t,"EXT_color_buffer_float"))return Jm(t);const s="EXT_color_buffer_half_float";if(Ls(t,s)){const r=t.getExtension(s);return function cB(n,t){const e=Zm(n,t),s=n.createTexture();n.bindTexture(n.TEXTURE_2D,s),n.texImage2D(n.TEXTURE_2D,0,e.internalFormatHalfFloat,1,1,0,e.textureFormatFloat,e.textureTypeHalfFloat,null);const a=n.createFramebuffer();n.bindFramebuffer(n.FRAMEBUFFER,a),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,s,0);const o=n.checkFramebufferStatus(n.FRAMEBUFFER)===n.FRAMEBUFFER_COMPLETE;return n.bindTexture(n.TEXTURE_2D,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.deleteTexture(s),n.deleteFramebuffer(a),o}(t,r)}return!1}return!(!Ls(t,"OES_texture_float")||!Ls(t,"WEBGL_color_buffer_float"))&&Jm(t)}(He.getNumber("WEBGL_VERSION"))),He.registerFlag("WEBGL_FENCE_API_ENABLED",()=>function hB(n){return 2===n&&null!=Zs(n).fenceSync}(He.getNumber("WEBGL_VERSION"))),He.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>He.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0),He.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,n=>{if("number"!=typeof n)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be a number but got ${n}.`);if(n<0&&-1!==n)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${n}.`)}),He.registerFlag("WEBGL_FLUSH_THRESHOLD",()=>px()?1:-1,n=>{if("number"!=typeof n)throw new Error(`WEBGL_FLUSH_THRESHOLD must be a number but got ${n}.`);if(n<0&&-1!==n)throw new Error(`WEBGL_FLUSH_THRESHOLD must be -1 (indicating never manual flush) or at least 0, but got ${n}.`)}),He.registerFlag("CPU_HANDOFF_SIZE_THRESHOLD",()=>128),He.registerFlag("WEBGL_USE_SHAPES_UNIFORMS",()=>!1),He.registerFlag("TOPK_LAST_DIM_CPU_HANDOFF_SIZE_THRESHOLD",()=>1e5),He.registerFlag("TOPK_K_CPU_HANDOFF_THRESHOLD",()=>128),He.registerFlag("WEBGL_EXP_CONV",()=>!1),He.registerFlag("SOFTWARE_WEBGL_ENABLED",()=>He.getBool("IS_TEST")),He.registerFlag("WEBGL_MAX_SIZE_FOR_NARROW_TEXTURE",()=>1/0),He.registerFlag("WEBGL_AUTO_SQUARIFY_NARROW_TEXTURE_SHAPE",()=>!1),He.registerFlag("WEBGL2_ISNAN_CUSTOM",()=>!1),He.registerFlag("ENGINE_COMPILE_ONLY",()=>!1);const K_="\n const float FLOAT_MAX = 1.70141184e38;\n const float FLOAT_MIN = 1.17549435e-38;\n\n lowp vec4 encode_float(highp float v) {\n if (isnan(v)) {\n return vec4(255, 255, 255, 255);\n }\n\n highp float av = abs(v);\n\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n",{getBroadcastDims:q_}=Ke;function fB(n,t,e){const s=[];if(n.forEach(p=>{const f=K(p.shapeInfo.logicalShape);if(p.shapeInfo.isUniform?s.push(`uniform float ${p.name}${f>1?`[${f}]`:""};`):(s.push(`uniform sampler2D ${p.name};`),s.push(`uniform int offset${p.name};`)),e.enableShapeUniforms){const{uniformShape:g}=ng(e.packedInputs,p.shapeInfo.logicalShape,p.shapeInfo.texShape);switch(g.length){case 1:s.push(`uniform int ${p.name}Shape;`);break;case 2:s.push(`uniform ivec2 ${p.name}Shape;`);break;case 3:s.push(`uniform ivec3 ${p.name}Shape;`);break;case 4:s.push(`uniform ivec4 ${p.name}Shape;`)}s.push(`uniform ivec2 ${p.name}TexShape;`)}}),e.enableShapeUniforms){switch(t.logicalShape.length){case 1:s.push("uniform int outShape;");break;case 2:s.push("uniform ivec2 outShape;"),s.push("uniform int outShapeStrides;");break;case 3:s.push("uniform ivec3 outShape;"),s.push("uniform ivec2 outShapeStrides;");break;case 4:s.push("uniform ivec4 outShape;"),s.push("uniform ivec3 outShapeStrides;")}s.push("uniform ivec2 outTexShape;")}e.customUniforms&&e.customUniforms.forEach(p=>{s.push(`uniform ${p.type} ${p.name}${p.arrayIndex?`[${p.arrayIndex}]`:""};`)});const r=s.join("\n"),i=n.map(p=>function mB(n,t,e=!1,s){let r="";r+=e?Z_(n,s):La(n,s);return n.shapeInfo.logicalShape.length<=t.logicalShape.length&&(r+=e?function KB(n,t){const e=n.name,s=e.charAt(0).toUpperCase()+e.slice(1),r="get"+s+"AtOutCoords",i=n.shapeInfo.logicalShape.length,a=t.logicalShape.length,o=q_(n.shapeInfo.logicalShape,t.logicalShape),l=Ut(a),u=a-i;let c;const h=["x","y","z","w","u","v"];c=0===i?"":a<2&&o.length>=1?"coords = 0;":o.map(y=>`coords.${h[y+u]} = 0;`).join("\n");let d="";d=a<2&&i>0?"coords":n.shapeInfo.logicalShape.map((y,b)=>`coords.${h[b+u]}`).join(", ");let p="return outputValue;";const g=1===K(n.shapeInfo.logicalShape),x=1===K(t.logicalShape);if(1!==i||g||x){if(g&&!x)p=1===a?"\n return vec4(outputValue.x, outputValue.x, 0., 0.);\n ":"\n return vec4(outputValue.x);\n ";else if(o.length){const y=i-2,b=i-1;o.indexOf(y)>-1&&o.indexOf(b)>-1?p="return vec4(outputValue.x);":o.indexOf(y)>-1?p="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":o.indexOf(b)>-1&&(p="return vec4(outputValue.xx, outputValue.zz);")}}else p="\n return vec4(outputValue.xy, outputValue.xy);\n ";return`\n vec4 ${r}() {\n ${l} coords = getOutputCoords();\n ${c}\n vec4 outputValue = get${s}(${d});\n ${p}\n }\n `}(n,t):function qB(n,t){const e=n.name,s=e.charAt(0).toUpperCase()+e.slice(1),r="get"+s+"AtOutCoords",o=n.shapeInfo.logicalShape.length,l=t.logicalShape.length;if(!n.shapeInfo.isUniform&&o===l&&null==n.shapeInfo.flatOffset&&rt(n.shapeInfo.texShape,t.texShape))return`\n float ${r}() {\n return sampleTexture(${e}, resultUV);\n }\n `;const u=Ut(l),c=q_(n.shapeInfo.logicalShape,t.logicalShape),h=l-o;let d;const p=["x","y","z","w","u","v"];d=0===o?"":l<2&&c.length>=1?"coords = 0;":c.map(g=>`coords.${p[g+h]} = 0;`).join("\n");let f="";return f=l<2&&o>0?"coords":n.shapeInfo.logicalShape.map((g,m)=>`coords.${p[m+h]}`).join(", "),`\n float ${r}() {\n ${u} coords = getOutputCoords();\n ${d}\n return get${s}(${f});\n }\n `}(n,t)),r}(p,t,e.packedInputs,e.enableShapeUniforms)).join("\n"),a=t.texShape,o=Qn(),l=function yB(n){return`\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return ${n.texture2D}(textureSampler, uv).r;\n }\n `}(o);let u,c,h=function wB(n){return`${n.version}\n precision highp float;\n precision highp int;\n precision highp sampler2D;\n ${n.varyingFs} vec2 resultUV;\n ${n.defineOutput}\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n uniform float NAN;\n ${n.defineSpecialNaN}\n ${n.defineSpecialInf}\n ${n.defineRound}\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n int idiv(int a, int b, float sign) {\n int res = a / b;\n int mod = imod(a, b);\n if (sign < 0. && mod != 0) {\n res -= 1;\n }\n return res;\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n ${_B}\n ${TB}\n ${SB}\n `}(o);return t.isPacked?(u=function gB(n,t,e){switch(n.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function IB(n,t,e){const s=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];return 1===s[0]?e?"\n int getOutputCoords() {\n return 2 * int(resultUV.x * ceil(float(outTexShape[1]) / 2.0));\n }\n ":`\n int getOutputCoords() {\n return 2 * int(resultUV.x * ${s[1]}.0);\n }\n `:1===s[1]?e?"\n int getOutputCoords() {\n return 2 * int(resultUV.y * ceil(float(outTexShape[0]) / 2.0));\n }\n ":`\n int getOutputCoords() {\n return 2 * int(resultUV.y * ${s[0]}.0);\n }\n `:e?"\n int getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n return 2 * (resTexRC.x * packedTexShape[1] + resTexRC.y);\n }\n ":`\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${s[0]}, ${s[1]}));\n return 2 * (resTexRC.x * ${s[1]} + resTexRC.y);\n }\n `}(0,t,e);case 2:return function OB(n,t,e){const s=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];if(rt(n,t))return e?"\n ivec2 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n return 2 * ivec2(resultUV.yx * vec2(packedTexShape[0], packedTexShape[1]));\n }\n ":`\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2(${s[0]}, ${s[1]}));\n }\n `;const r=Math.ceil(n[1]/2);return e?"\n ivec2 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n int texelsInLogicalRow = int(ceil(float(outShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec2(r, c);\n }\n ":`\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${s[0]}, ${s[1]}));\n\n int index = resTexRC.x * ${s[1]} + resTexRC.y;\n int r = 2 * (index / ${r});\n int c = imod(index, ${r}) * 2;\n\n return ivec2(r, c);\n }\n `}(n,t,e);case 3:return function kB(n,t,e){if(e)return"\n ivec3 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n int texelsInLogicalRow = int(ceil(float(outShape[2]) / 2.0));\n int texelsInBatch = texelsInLogicalRow * int(ceil(float(outShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n\n int b = index / texelsInBatch;\n index -= b * texelsInBatch;\n\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec3(b, r, c);\n }\n ";const s=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(n[2]/2),i=r*Math.ceil(n[1]/2);return`\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${s[0]}, ${s[1]}));\n int index = resTexRC.x * ${s[1]} + resTexRC.y;\n\n int b = index / ${i};\n index -= b * ${i};\n\n int r = 2 * (index / ${r});\n int c = imod(index, ${r}) * 2;\n\n return ivec3(b, r, c);\n }\n `}(n,t,e);default:return function AB(n,t,e){if(e)return"\n ivec4 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n\n int texelsInLogicalRow = int(ceil(float(outShape[3]) / 2.0));\n int texelsInBatch = texelsInLogicalRow * int(ceil(float(outShape[2]) / 2.0));\n int texelsInBatchN = texelsInBatch * outShape[1];\n\n int b2 = index / texelsInBatchN;\n index -= b2 * texelsInBatchN;\n\n int b = index / texelsInBatch;\n index -= b * texelsInBatch;\n\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec4(b2, b, r, c);\n }\n ";const s=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(n[n.length-1]/2),i=r*Math.ceil(n[n.length-2]/2);let a=i,o="",l="b, r, c";for(let u=2;u1&&!rt(t,e)&&s.lengthn[e]).join(", ")}function Q_(n,t,e){const s=[],r=[];let i,a,o,l=null,u=null;u=n.getUniformLocation(e,"NAN",!1),1===E().getNumber("WEBGL_VERSION")&&(l=n.getUniformLocation(e,"INFINITY",!1));const c=!1;for(const h of t.variableNames){const d={name:h,uniform:n.getUniformLocation(e,h,c),offset:n.getUniformLocation(e,`offset${h}`,c)};t.enableShapeUniforms&&(d.shape=n.getUniformLocation(e,`${h}Shape`,c),d.texShape=n.getUniformLocation(e,`${h}TexShape`,c)),s.push(d)}if(t.enableShapeUniforms&&(i=n.getUniformLocation(e,"outShape",c),o=n.getUniformLocation(e,"outShapeStrides",c),a=n.getUniformLocation(e,"outTexShape",c)),t.customUniforms)for(const h of t.customUniforms)r.push(n.getUniformLocation(e,h.name,c));return{variablesLocations:s,customUniformLocations:r,infLoc:l,nanLoc:u,outShapeLocation:i,outShapeStridesLocation:o,outTexShapeLocation:a}}function J_(n,t){if(n.length!==t.length)throw Error(`Binary was compiled with ${n.length} inputs, but was executed with ${t.length} inputs`);n.forEach((e,s)=>{const r=e.logicalShape,i=t[s],a=i.shape;if(!rt(r,a))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${r} and ${a} must match`);if(e.isUniform&&i.isUniform)return;const o=e.texShape,l=i.isUniform?null:i.texData.texShape;if(!rt(o,l))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${o} and ${l} must match`)})}function Hn(n){return E().getBool("WEBGL_USE_SHAPES_UNIFORMS")&&n<=4}class JB{constructor(t){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=mh.DENSE,this.customUniforms=[{name:"texShape",type:"ivec2"}];const e=Qn();this.outputShape=t,this.enableShapeUniforms=Hn(this.outputShape.length),this.userCode=`\n ivec3 outCoordsFromFlatIndex(int index) {\n ${this.enableShapeUniforms?Sh(["r","c","d"],t):qi(["r","c","d"],t)}\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2(texShape[0], texShape[1]));\n int index = 4 * (resTexRC.x * texShape[1] + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getA(rc.x, rc.y, rc.z);\n }\n\n ${e.output} = result;\n }\n `}}class eU{constructor(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=mh.DENSE,this.customUniforms=[{name:"texShape",type:"ivec2"}];const e=Qn();this.outputShape=t,this.enableShapeUniforms=Hn(this.outputShape.length),this.userCode=`\n ivec3 outCoordsFromFlatIndex(int index) {\n ${this.enableShapeUniforms?Sh(["r","c","d"],t):qi(["r","c","d"],t)}\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2(texShape[0], texShape[1]));\n int index = 4 * (resTexRC.x * texShape[1] + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z));\n }\n\n ${e.output} = result;\n }\n `}}class tU{constructor(t){this.variableNames=["A"],this.outTexUsage=Fs.DOWNLOAD;const e=Qn();this.outputShape=t,this.userCode=`\n ${K_}\n\n void main() {\n float x = getAAtOutCoords();\n ${e.output} = encode_float(x);\n }\n `}}class nU{constructor(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=Fs.DOWNLOAD;const e=Qn();this.outputShape=t,this.userCode=`\n ${K_}\n\n void main() {\n ivec3 coords = getOutputCoords();\n float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z));\n ${e.output} = encode_float(x);\n }\n `}}const sU={R:0,G:1,B:2,A:3};class eT{constructor(t,e=!1,s="RGBA"){this.variableNames=["A"],this.customUniforms=[{name:"texShape",type:"ivec2"}];const r=Qn();this.outputShape=t,this.enableShapeUniforms=Hn(this.outputShape.length);let i="result";e&&(i="floor(result * 255. + 0.5)");let a="";for(let o=0;oe||t>e)throw new Error(`Requested texture size [${n}x${t}] greater than WebGL maximum on this browser / GPU [${e}x${e}].`)}(t,e);const a=function Zz(n){return Dr(n,()=>n.createTexture(),"Unable to create WebGLTexture.")}(n),o=n.TEXTURE_2D;return Ae(n,()=>n.bindTexture(o,a)),Ae(n,()=>n.texParameteri(o,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE)),Ae(n,()=>n.texParameteri(o,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE)),Ae(n,()=>n.texParameteri(o,n.TEXTURE_MIN_FILTER,n.NEAREST)),Ae(n,()=>n.texParameteri(o,n.TEXTURE_MAG_FILTER,n.NEAREST)),1===E().getNumber("WEBGL_VERSION")?Ae(n,()=>n.texImage2D(o,0,s,t,e,0,r,i,null)):Ae(n,()=>n.texStorage2D(o,1,s,t,e)),Ae(n,()=>n.bindTexture(n.TEXTURE_2D,null)),{texture:a,texShape:[e,t]}}function tT(n){return n.internalFormatFloat}function nT(n){return n.internalFormatHalfFloat}function sT(n){return n.downloadTextureFormat}function rT(n){return n.internalFormatPackedFloat}function iT(n){return n.internalFormatPackedHalfFloat}class sg{constructor(t){this.outputTexture=null,this.program=null,this.disposed=!1,this.itemsToPoll=[];const e=E().getNumber("WEBGL_VERSION");if(null!=t?(this.gl=t,function Dz(n,t){ui[n]=t}(e,t)):this.gl=Zs(e),t=this.gl,2===E().getNumber("WEBGL_VERSION")){const i=t;this.createVertexArray=()=>Ae(i,()=>i.createVertexArray()),this.bindVertexArray=a=>Ae(i,()=>i.bindVertexArray(a)),this.deleteVertexArray=a=>Ae(i,()=>i.deleteVertexArray(a)),this.getVertexArray=()=>Ae(i,()=>i.getParameter(i.VERTEX_ARRAY_BINDING))}else if(null!=t){const i=t.getExtension("OES_vertex_array_object");if(null==i)throw new Error("All WebGL1 implementations are expected to offer OES_vertex_array_object.");this.createVertexArray=()=>Ae(t,()=>i.createVertexArrayOES()),this.bindVertexArray=a=>Ae(t,()=>i.bindVertexArrayOES(a)),this.deleteVertexArray=a=>Ae(t,()=>i.deleteVertexArrayOES(a)),this.getVertexArray=()=>Ae(t,()=>t.getParameter(i.VERTEX_ARRAY_BINDING_OES))}let s="WEBGL_color_buffer_float";const r="EXT_color_buffer_half_float";if(this.parallelCompilationExtension=this.gl.getExtension("KHR_parallel_shader_compile"),1===E().getNumber("WEBGL_VERSION")){const a="OES_texture_half_float";if(this.textureFloatExtension=xh(this.gl,"OES_texture_float"),Ls(this.gl,a))this.textureHalfFloatExtension=xh(this.gl,a);else if(E().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(s),Ls(this.gl,r))this.colorBufferHalfFloatExtension=xh(this.gl,r);else if(E().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(s="EXT_color_buffer_float",Ls(this.gl,s))this.colorBufferFloatExtension=this.gl.getExtension(s);else{if(!Ls(this.gl,r))throw new Error("GL context does not support color renderable floats");this.colorBufferHalfFloatExtension=this.gl.getExtension(r)}this.vertexBuffer=function aU(n){return function Kz(n,t){const e=Dr(n,()=>n.createBuffer(),"Unable to create WebGLBuffer");return Ae(n,()=>n.bindBuffer(n.ARRAY_BUFFER,e)),Ae(n,()=>n.bufferData(n.ARRAY_BUFFER,t,n.STATIC_DRAW)),e}(n,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}(this.gl),this.indexBuffer=function oU(n){return function qz(n,t){const e=Dr(n,()=>n.createBuffer(),"Unable to create WebGLBuffer");return Ae(n,()=>n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,e)),Ae(n,()=>n.bufferData(n.ELEMENT_ARRAY_BUFFER,t,n.STATIC_DRAW)),e}(n,new Uint16Array([0,1,2,2,1,3]))}(this.gl),this.framebuffer=function Qz(n){return Dr(n,()=>n.createFramebuffer(),"Unable to create WebGLFramebuffer.")}(this.gl),this.textureConfig=Zm(this.gl,this.textureHalfFloatExtension)}get debug(){return E().getBool("DEBUG")}dispose(){if(this.disposed)return;null!=this.program&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),null!=this.outputTexture&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");const t=this.gl;Ae(t,()=>t.finish()),Ae(t,()=>t.bindFramebuffer(t.FRAMEBUFFER,null)),Ae(t,()=>t.deleteFramebuffer(this.framebuffer)),Ae(t,()=>t.bindBuffer(t.ARRAY_BUFFER,null)),Ae(t,()=>t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null)),Ae(t,()=>t.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(t,e){return this.throwIfDisposed(),function lU(n,t,e,s){const[r,i]=$l(t,e);return Ol(n,r,i,tT(s),s.textureFormatFloat,n.FLOAT)}(this.gl,t,e,this.textureConfig)}createFloat16MatrixTexture(t,e){return this.throwIfDisposed(),function uU(n,t,e,s){const[r,i]=$l(t,e);return Ol(n,r,i,nT(s),s.textureFormatFloat,s.textureTypeHalfFloat)}(this.gl,t,e,this.textureConfig)}createUnsignedBytesMatrixTexture(t,e){return this.throwIfDisposed(),function cU(n,t,e,s){const[r,i]=$l(t,e);return Ol(n,r,i,sT(s),n.RGBA,n.UNSIGNED_BYTE)}(this.gl,t,e,this.textureConfig)}uploadPixelDataToTexture(t,e){this.throwIfDisposed(),function mU(n,t,e){Ae(n,()=>n.bindTexture(n.TEXTURE_2D,t)),e.data instanceof Uint8Array?2===E().getNumber("WEBGL_VERSION")?Ae(n,()=>n.texSubImage2D(n.TEXTURE_2D,0,0,0,e.width,e.height,n.RGBA,n.UNSIGNED_BYTE,e.data)):Ae(n,()=>n.texImage2D(n.TEXTURE_2D,0,n.RGBA,e.width,e.height,0,n.RGBA,n.UNSIGNED_BYTE,e.data)):2===E().getNumber("WEBGL_VERSION")?Ae(n,()=>n.texSubImage2D(n.TEXTURE_2D,0,0,0,n.RGBA,n.UNSIGNED_BYTE,e)):Ae(n,()=>n.texImage2D(n.TEXTURE_2D,0,n.RGBA,n.RGBA,n.UNSIGNED_BYTE,e)),Ae(n,()=>n.bindTexture(n.TEXTURE_2D,null))}(this.gl,t,e)}uploadDenseMatrixToTexture(t,e,s,r){this.throwIfDisposed(),function fU(n,t,e,s,r,i){let a,o,l;Ae(n,()=>n.bindTexture(n.TEXTURE_2D,t)),r instanceof Uint8Array?(a=new Uint8Array(e*s*4),o=n.UNSIGNED_BYTE,l=n.RGBA):(a=new Float32Array(e*s*4),o=n.FLOAT,l=i.internalFormatPackedFloat),a.set(r),2===E().getNumber("WEBGL_VERSION")?Ae(n,()=>n.texSubImage2D(n.TEXTURE_2D,0,0,0,e,s,n.RGBA,o,a)):Ae(n,()=>n.texImage2D(n.TEXTURE_2D,0,l,e,s,0,n.RGBA,o,a)),Ae(n,()=>n.bindTexture(n.TEXTURE_2D,null))}(this.gl,t,e,s,r,this.textureConfig)}createFloat16PackedMatrixTexture(t,e){return this.throwIfDisposed(),function dU(n,t,e,s){const[r,i]=Oa(t,e);return Ol(n,r,i,iT(s),n.RGBA,s.textureTypeHalfFloat)}(this.gl,t,e,this.textureConfig)}createPackedMatrixTexture(t,e){return this.throwIfDisposed(),function hU(n,t,e,s){const[r,i]=Oa(t,e);return Ol(n,r,i,rT(s),n.RGBA,n.FLOAT)}(this.gl,t,e,this.textureConfig)}deleteMatrixTexture(t){this.throwIfDisposed(),this.outputTexture===t&&(H_(this.gl,this.framebuffer),this.outputTexture=null),Ae(this.gl,()=>this.gl.deleteTexture(t))}downloadByteEncodedFloatMatrixFromOutputTexture(t,e,s){return this.downloadMatrixDriver(t,()=>function yU(n,t,e,s){const[r,i]=$l(t,e),o=new Uint8Array(function Fz(n,t){return n*t}(t*e,4));return Ae(n,()=>n.readPixels(0,0,r,i,s.downloadTextureFormat,n.UNSIGNED_BYTE,o)),new Float32Array(o.buffer)}(this.gl,e,s,this.textureConfig))}downloadPackedMatrixFromBuffer(t,e,s,r,i,a){return function bU(n,t,e,s,r,i,a,o){const l=n,u=new Float32Array(function Lz(n,t){const[e,s]=Oa(n,t);return e*s*4}(i,a));return l.bindBuffer(l.PIXEL_PACK_BUFFER,t),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,u),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),u}(this.gl,t,0,0,0,i,a)}downloadFloat32MatrixFromBuffer(t,e){return function xU(n,t,e){const s=n,r=new Float32Array(e);return s.bindBuffer(s.PIXEL_PACK_BUFFER,t),s.getBufferSubData(s.PIXEL_PACK_BUFFER,0,r),s.bindBuffer(s.PIXEL_PACK_BUFFER,null),r}(this.gl,t,e)}createBufferFromTexture(t,e,s){this.bindTextureToFrameBuffer(t);const r=function gU(n,t,e){const r=n.createBuffer();Ae(n,()=>n.bindBuffer(n.PIXEL_PACK_BUFFER,r));const o=16*t*e;return Ae(n,()=>n.bufferData(n.PIXEL_PACK_BUFFER,o,n.STREAM_READ)),Ae(n,()=>n.readPixels(0,0,e,t,n.RGBA,n.FLOAT,0)),Ae(n,()=>n.bindBuffer(n.PIXEL_PACK_BUFFER,null)),r}(this.gl,e,s);return this.unbindTextureToFrameBuffer(),r}createAndWaitForFence(){const t=this.createFence(this.gl);return this.pollFence(t)}createFence(t){let e,s;if(E().getBool("WEBGL_FENCE_API_ENABLED")){const r=t,i=r.fenceSync(r.SYNC_GPU_COMMANDS_COMPLETE,0);t.flush(),s=()=>{const a=r.clientWaitSync(i,0,0);return a===r.ALREADY_SIGNALED||a===r.CONDITION_SATISFIED},e=i}else E().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(e=this.beginQuery(),this.endQuery(),s=()=>this.isQueryAvailable(e,E().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):s=()=>!0;return{query:e,isFencePassed:s}}downloadMatrixFromPackedTexture(t,e,s){return this.downloadMatrixDriver(t,()=>function vU(n,t,e){const s=new Float32Array(t*e*4);return Ae(n,()=>n.readPixels(0,0,e,t,n.RGBA,n.FLOAT,s)),s}(this.gl,e,s))}createProgram(t){this.throwIfDisposed();const e=this.gl;null==this.vertexShader&&(this.vertexShader=function iU(n){const t=Qn();return function Wz(n,t){const e=Dr(n,()=>n.createShader(n.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(Ae(n,()=>n.shaderSource(e,t)),Ae(n,()=>n.compileShader(e)),!1===n.getShaderParameter(e,n.COMPILE_STATUS))throw console.log(n.getShaderInfoLog(e)),new Error("Failed to compile vertex shader.");return e}(n,`${t.version}\n precision highp float;\n ${t.attribute} vec3 clipSpacePos;\n ${t.attribute} vec2 uv;\n ${t.varyingVs} vec2 resultUV;\n\n void main() {\n gl_Position = vec4(clipSpacePos, 1);\n resultUV = uv;\n }`)}(e));const s=function jz(n){return Dr(n,()=>n.createProgram(),"Unable to create WebGLProgram.")}(e);Ae(e,()=>e.attachShader(s,this.vertexShader)),Ae(e,()=>e.attachShader(s,t)),function Xz(n,t){if(Ae(n,()=>n.linkProgram(t)),!E().get("ENGINE_COMPILE_ONLY")&&!1===n.getProgramParameter(t,n.LINK_STATUS))throw console.log(n.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}(e,s);const r=Object.assign(s,{vao:this.createVertexArray()});return this.debug&&Ym(e,r),r}buildVao(t){this.setProgram(t),this.bindVertexArray(t.vao);const e=this.gl;Ae(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.indexBuffer)),function pU(n,t,e){Ae(n,()=>n.bindBuffer(n.ARRAY_BUFFER,e)),G_(n,t,"clipSpacePos",e,3,20,0)&&G_(n,t,"uv",e,2,20,12)}(e,t,this.vertexBuffer)}deleteProgram(t){this.throwIfDisposed(),t===this.program&&(this.program=null),null!=t&&(Ae(this.gl,()=>this.gl.deleteProgram(t)),this.deleteVertexArray(t.vao))}setProgram(t){this.throwIfDisposed(),this.program=t,null!=this.program&&this.debug&&Ym(this.gl,this.program),Ae(this.gl,()=>this.gl.useProgram(t))}getUniformLocation(t,e,s=!0){return this.throwIfDisposed(),s?function eB(n,t,e){return Dr(n,()=>n.getUniformLocation(t,e),'uniform "'+e+'" not present in program.')}(this.gl,t,e):function tB(n,t,e){return n.getUniformLocation(t,e)}(this.gl,t,e)}getAttributeLocation(t,e){return this.throwIfDisposed(),Ae(this.gl,()=>this.gl.getAttribLocation(t,e))}getUniformLocationNoThrow(t,e){return this.throwIfDisposed(),this.gl.getUniformLocation(t,e)}setInputMatrixTexture(t,e,s){this.throwIfDisposed(),this.throwIfNoProgram(),nB(this.gl,t,e,s)}setOutputMatrixTexture(t,e,s){this.setOutputMatrixTextureDriver(t,s,e)}setOutputPackedMatrixTexture(t,e,s){this.throwIfDisposed();const[r,i]=Oa(e,s);this.setOutputMatrixTextureDriver(t,r,i)}setOutputMatrixWriteRegion(t,e,s,r){this.setOutputMatrixWriteRegionDriver(s,t,r,e)}setOutputPackedMatrixWriteRegion(t,e,s,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){null!=this.program&&Ym(this.gl,this.program),yh(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();const t=this.gl;if(this.debug){const e=this.getVertexArray();console.assert(e===this.program.vao,"VAO changed between setProgram and executeProgram!"),this.debugValidate()}Ae(t,()=>t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),Ae(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=xh(this.gl,2===E().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(2===E().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){const s=this.gl,r=this.getQueryTimerExtensionWebGL2(),i=s.createQuery();return s.beginQuery(r.TIME_ELAPSED_EXT,i),i}const t=this.getQueryTimerExtensionWebGL1(),e=t.createQueryEXT();return t.beginQueryEXT(t.TIME_ELAPSED_EXT,e),e}endQuery(){if(2===E().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){const e=this.gl,s=this.getQueryTimerExtensionWebGL2();return void e.endQuery(s.TIME_ELAPSED_EXT)}const t=this.getQueryTimerExtensionWebGL1();t.endQueryEXT(t.TIME_ELAPSED_EXT)}waitForQueryAndGetTime(t){var e=this;return(0,N.A)(function*(){return yield Ct(()=>e.disposed||e.isQueryAvailable(t,E().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),e.getQueryTime(t,E().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))})()}getQueryTime(t,e){if(0===e)return null;if(2===e){const s=this.gl;return s.getQueryParameter(t,s.QUERY_RESULT)/1e6}{const s=this.getQueryTimerExtensionWebGL1();return s.getQueryObjectEXT(t,s.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(t,e){if(0===e)return!0;if(2===e){const s=this.gl,r=this.getQueryTimerExtensionWebGL2(),i=s.getQueryParameter(t,s.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),i&&!this.disjoint}{const s=this.getQueryTimerExtensionWebGL1(),r=s.getQueryObjectEXT(t,s.QUERY_RESULT_AVAILABLE_EXT);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(s.GPU_DISJOINT_EXT)),r&&!this.disjoint}}pollFence(t){return new Promise(e=>{this.addItemToPoll(()=>t.isFencePassed(),()=>e())})}pollItems(){const t=function wU(n){let t=0;for(;te.isDoneFn));for(let e=0;e<=t;++e){const{resolveFn:s}=this.itemsToPoll[e];s()}this.itemsToPoll=this.itemsToPoll.slice(t+1)}addItemToPoll(t,e){if(this.itemsToPoll.push({isDoneFn:t,resolveFn:e}),this.itemsToPoll.length>1)return;let s;"setTimeoutCustom"in E().platform&&(s=E().platform.setTimeoutCustom.bind(E().platform)),Ct(()=>(this.pollItems(),0===this.itemsToPoll.length),()=>0,null,s)}bindTextureToFrameBuffer(t){this.throwIfDisposed(),Qm(this.gl,t,this.framebuffer),this.debug&&yh(this.gl)}unbindTextureToFrameBuffer(){null!=this.outputTexture?(Qm(this.gl,this.outputTexture,this.framebuffer),this.debug&&yh(this.gl)):H_(this.gl,this.framebuffer)}downloadMatrixDriver(t,e){this.bindTextureToFrameBuffer(t);const s=e();return this.unbindTextureToFrameBuffer(),s}setOutputMatrixTextureDriver(t,e,s){this.throwIfDisposed();const r=this.gl;Qm(r,t,this.framebuffer),this.debug&&yh(r),this.outputTexture=t,Ae(r,()=>r.viewport(0,0,e,s)),Ae(r,()=>r.scissor(0,0,e,s))}setOutputMatrixWriteRegionDriver(t,e,s,r){this.throwIfDisposed(),Ae(this.gl,()=>this.gl.scissor(t,e,s,r))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(null==this.program)throw new Error("No GPU program is currently set.")}}const{mx:_U,XI:aT,Nk:TU,f6:SU,ct:CU,YG:IU,hH:EU,z3:kU,sG:NU,uM:AU,vS:RU,qB:$U,GG:DU,rq:OU,lg:PU,WR:FU,cu:LU,GE:MU,px:VU,jC:zU,He:BU,hE:UU,BF:WU,Dk:GU,cl:HU,_B:jU,ub:XU,_f:KU,Ku:qU,qy:ZU,Zy:YU,bu:QU,zv:JU,dH:oT,HS:eW,yH:tW,l3:nW,z9:lT,x6:sW,_m:rW,eW:iW,GK:aW,SP:oW,yr:lW,dl:uW,Dw:cW,xT:hW,_X:rg,wz:dW}=Tt;function uT(n,t){return["x","y","z","w","u","v"].slice(0,t).map(e=>`${n}.${e}`)}function Jn(n,t){return 1===t?[n]:uT(n,t)}class fW{constructor(t){if(this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outputShape=t,this.rank=t.length,this.enableShapeUniforms=Hn(this.outputShape.length),0===this.rank)this.userCode="\n void main() {\n setOutput(vec4(getA(), 0., 0., 0.));\n }\n ";else{const e=Jn("rc",this.rank),s=Ut(this.rank),r=this.getOutOfBoundsCondition(e),i=this.getSetup(e),a=this.getOutput(e);this.userCode=`\n void main() {\n ${s} rc = getOutputCoords();\n\n if(${r}) {\n setOutput(vec4(0));\n } else {\n ${i}\n\n setOutput(vec4(${a}));\n }\n }\n `}}getSourceCoordsArr(t){const e=[];for(let s=0;s<=1;s++)for(let r=0;r<=1;r++){let i=`${0===s?"r":"rp1"}, ${0===r?"c":"cp1"}`;for(let a=2;a ${this.enableShapeUniforms?"outShape":this.outputShape[0]}`;let e="";for(let s=this.rank-2;s= ${this.enableShapeUniforms?`outShape[${s}]`:this.outputShape[s]}`,s= ${this.enableShapeUniforms?`outShape[${this.rank} - 1]`:this.outputShape[this.rank-1]};\n bool rEdge = rp1 >= ${this.enableShapeUniforms?`outShape[${this.rank} - 2]`:this.outputShape[this.rank-2]};\n `}getOutput(t){const e=this.getSourceCoordsArr(t);return 1===this.rank?`getA(rc), (rc + 1 >= ${this.enableShapeUniforms?"outShape":this.outputShape[0]} ? 0. : getA(rc + 1)), 0, 0`:`getA(${e[0]}),\n cEdge ? 0. : getA(${e[1]}),\n rEdge ? 0. : getA(${e[2]}),\n rEdge || cEdge ? 0. : getA(${e[3]})`}}class cT{constructor(t,e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"inputShape",type:"ivec3"}],this.outputShape=t,this.enableShapeUniforms=Hn(this.outputShape.length);let s="";for(let r=0;r<4;r++){let i="thisRC = rc;";r%2==1&&(i+="thisRC.z += 1;"),r>1&&(i+="thisRC.y += 1;"),s+=`\n ${i}\n ${r>0?"if(thisRC.y < rows && thisRC.z < cols){":""}\n int flatIndex = getFlatIndex(thisRC);\n\n ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\n vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\n\n result[${r}] =\n getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\n ${r>0?"}":""}\n `}this.userCode=`\n ${function mW(n,t){return`\n ivec3 inputCoordsFromReshapedOutCoords(int index) {\n ${t?function pB(n,t,e="index"){const r=function dB(n,t){const e=n.length,s=n.map(i=>`${t}[${i}]`),r=new Array(e-1);r[e-2]=s[e-1];for(let i=e-3;i>=0;--i)r[i]=`(${r[i+1]} * ${s[i+1]})`;return r}(n.map((i,a)=>a),t);return r.map((i,a)=>`int ${n[a]} = ${e} / ${r[a]}; ${a===r.length-1?`int ${n[a+1]} = ${e} - ${n[a]} * ${r[a]}`:`index -= ${n[a]} * ${r[a]}`};`).join("")}(["r","c","d"],"inputShape"):qi(["r","c","d"],n)}\n return ivec3(r, c, d);\n }\n `}(e,this.enableShapeUniforms)}\n ${this.enableShapeUniforms?"\n int getFlatIndex(ivec3 coords) {\n return coords.x * outShapeStrides[0] + coords.y * outShapeStrides[1] + coords.z;\n }\n":eg(t)}\n\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0.);\n\n ivec3 thisRC;\n int rows = ${this.enableShapeUniforms?"outShape[1]":t[1]};\n int cols = ${this.enableShapeUniforms?"outShape[2]":t[2]};\n\n ${s}\n\n setOutput(result);\n }\n `}}class gW{constructor(t){this.gpgpu=t,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.usedTextures={},this.logEnabled=!1}acquireTexture(t,e,s){const r=dT(e,s),i=pT(t,r,s);i in this.freeTextures||(this.freeTextures[i]=[]),i in this.usedTextures||(this.usedTextures[i]=[]);const a=hT(t,r,this.gpgpu.gl,this.gpgpu.textureConfig,s);if(this.freeTextures[i].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=a,this.log();const l=this.freeTextures[i].pop();return this.usedTextures[i].push(l),l}let o;return r===Gn.PACKED_2X2_FLOAT32?o=this.gpgpu.createPackedMatrixTexture(t[0],t[1]):r===Gn.PACKED_2X2_FLOAT16?o=this.gpgpu.createFloat16PackedMatrixTexture(t[0],t[1]):r===Gn.UNPACKED_FLOAT32?o=this.gpgpu.createFloat32MatrixTexture(t[0],t[1]):r===Gn.UNPACKED_FLOAT16?o=this.gpgpu.createFloat16MatrixTexture(t[0],t[1]):r===Gn.PACKED_4X1_UNSIGNED_BYTE&&(o=this.gpgpu.createUnsignedBytesMatrixTexture(t[0],t[1])),this.usedTextures[i].push(o),this.numUsedTextures++,this._numBytesAllocated+=a,this.log(),o}releaseTexture(t,e,s,r){if(null==this.freeTextures)return;const i=dT(s,r),a=pT(e,i,r);a in this.freeTextures||(this.freeTextures[a]=[]);const o=hT(e,i,this.gpgpu.gl,this.gpgpu.textureConfig,r),l=E().getNumber("WEBGL_DELETE_TEXTURE_THRESHOLD");-1!==l&&this._numBytesAllocated>l?(this.gpgpu.deleteMatrixTexture(t.texture),this._numBytesAllocated-=o):(this.freeTextures[a].push(t),this.numFreeTextures++,this._numBytesFree+=o),this.numUsedTextures--;const u=this.usedTextures[a],c=u&&u.indexOf(t);if(null==c||c<0)throw new Error("Cannot release a texture that was never provided by this texture manager");u[c]=u[u.length-1],u.pop(),this.log()}log(){if(!this.logEnabled)return;console.log("Free/Used",`${this.numFreeTextures} / ${this.numUsedTextures}`,`(${this.numFreeTextures+this.numUsedTextures})`);const e=this._numBytesFree/this._numBytesAllocated;console.log(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100*e)}%)`)}get numBytesAllocated(){return this._numBytesAllocated}get numBytesFree(){return this._numBytesFree}getNumUsedTextures(){return this.numUsedTextures}getNumFreeTextures(){return this.numFreeTextures}dispose(){if(null!=this.freeTextures){for(const t in this.freeTextures)this.freeTextures[t].forEach(e=>{this.gpgpu.deleteMatrixTexture(e.texture)});for(const t in this.usedTextures)this.usedTextures[t].forEach(e=>{this.gpgpu.deleteMatrixTexture(e.texture)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}}function hT(n,t,e,s,r){const i=function yW(n,t){switch(n){case Gn.PACKED_2X2_FLOAT32:return rT(t);case Gn.PACKED_2X2_FLOAT16:return iT(t);case Gn.UNPACKED_FLOAT32:return tT(t);case Gn.UNPACKED_FLOAT16:return nT(t);case Gn.PACKED_4X1_UNSIGNED_BYTE:return sT(t);default:throw new Error(`Unknown physical texture type ${n}`)}}(t,s);let a;if(r){const[l,u]=Oa(n[0],n[1]);a=l*u}else{const[l,u]=$l(n[0],n[1]);a=l*u}const o=function xW(n,t){if(t===n.R32F)return 4;if(t===n.R16F)return 2;if(t===n.RGBA32F)return 16;if(t===n.RGBA)return 16;if(t===n.RGBA16F)return 8;if(t===n.RGBA8)return 4;throw new Error(`Unknown internal format ${t}`)}(e,i);return a*o}function dT(n,t){if(n===Fs.UPLOAD)return Gn.PACKED_2X2_FLOAT32;if(n===Fs.RENDER||null==n)return function bW(n){return E().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?n?Gn.PACKED_2X2_FLOAT32:Gn.UNPACKED_FLOAT32:n?Gn.PACKED_2X2_FLOAT16:Gn.UNPACKED_FLOAT16}(t);if(n===Fs.DOWNLOAD||n===Fs.PIXELS)return Gn.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${n}`)}function pT(n,t,e){return`${n[0]}_${n[1]}_${t}_${e}`}class xr{constructor(t,e){this.variableNames=["A"],this.outputShape=t,this.enableShapeUniforms=Hn(this.outputShape.length),this.userCode=`\n float unaryOperation(float x) {\n ${e}\n }\n\n void main() {\n float x = getAAtOutCoords();\n float y = unaryOperation(x);\n\n setOutput(y);\n }\n `}}const Ts="if (isnan(x)) return x;",fT="return abs(x);",_W=Ts+"\n return (x < 0.0) ? 0.0 : x;\n",TW=Ts+"\n return (x < 0.0) ? 0.0 : min(6.0, x);\n",ci="return x;";class hi{constructor(t,e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.enableShapeUniforms=Hn(this.outputShape.length),this.userCode=`\n vec4 unaryOperation(vec4 x) {\n ${e}\n }\n\n void main() {\n vec4 x = getAAtOutCoords();\n vec4 y = unaryOperation(x);\n\n setOutput(y);\n }\n `}}class AW{constructor(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=t,this.enableShapeUniforms=Hn(this.outputShape.length);const e=t.length,s=Jn("rc",e),r=Ut(e),i=function pW(n,t){if(1===n)return"rc";let e="";for(let s=0;s{class n extends Fe{nextDataId(){return n.nextDataId++}constructor(e){if(super(),this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.lastGlFlushTime=0,this.warnedAboutMemory=!1,this.pendingDeletes=0,this.disposed=!1,!E().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");let s;if(null!=e){if(e instanceof sg)s=e;else{const r=Zs(E().getNumber("WEBGL_VERSION"),e);s=new sg(r)}this.binaryCache={},this.gpgpuCreatedLocally=!1}else{const r=Zs(E().getNumber("WEBGL_VERSION"));s=new sg(r),this.binaryCache=function OW(n){return n in Ih||(Ih[n]={}),Ih[n]}(E().getNumber("WEBGL_VERSION")),this.gpgpuCreatedLocally=!0}this.gpgpu=s,this.canvas=this.gpgpu.gl.canvas,this.textureManager=new gW(this.gpgpu),this.numMBBeforeWarning=function LW(){return null==E().global.screen?1024:E().global.screen.height*E().global.screen.width*window.devicePixelRatio*600/1024/1024}(),this.texData=new we(this,tr())}numDataIds(){return this.texData.numDataIds()-this.pendingDeletes}writeTexture(e,s,r,i,a,o){const l=this.makeTensorInfo(s,r),u=this.texData.get(l.dataId);u.isPacked=!1,u.texture={texture:e,texShape:[i,a]},u.texShape=[i,a];const c=bh(s),h=new eT(c,!1,o),d=this.runWebGLProgram(h,[l],r,[[i,a]]);return d.shape=s,u.texture=null,this.disposeIntermediateTensorInfo(l),d.dataId}write(e,s,r){if((E().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||E().getBool("DEBUG"))&&this.checkNumericalProblems(e),"complex64"===r&&null!=e)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");const i={id:this.nextDataId()};return this.texData.set(i,{shape:s,dtype:r,values:e,usage:Fs.UPLOAD,refCount:1}),i}refCount(e){return this.texData.has(e)?this.texData.get(e).refCount:0}incRef(e){this.texData.get(e).refCount++}decRef(e){this.texData.has(e)&&this.texData.get(e).refCount--}move(e,s,r,i,a){if(E().getBool("DEBUG")&&this.checkNumericalProblems(s),"complex64"===i)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:r,dtype:i,values:s,usage:Fs.UPLOAD,refCount:a})}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}readSync(e){const s=this.texData.get(e),{values:r,dtype:i,complexTensorInfos:a,slice:o,shape:l,isPacked:u}=s;if(null!=o){let p;p=u?new hi(l,ci):new xr(l,ci);const f=this.runWebGLProgram(p,[{dataId:e,shape:l,dtype:i}],i),g=this.readSync(f.dataId);return this.disposeIntermediateTensorInfo(f),g}if(null!=r)return this.convertAndCacheOnCPU(e);if("string"===i)return r;const c=null!=this.activeTimers;let h,d;return c&&(h=Vn()),d="complex64"===i?Nr(this.readSync(a.real.dataId),this.readSync(a.imag.dataId)):this.getValuesFromTexture(e),c&&(this.downloadWaitMs+=Vn()-h),this.convertAndCacheOnCPU(e,d)}read(e){var s=this;return(0,N.A)(function*(){if(s.pendingRead.has(e)){const m=s.pendingRead.get(e);return new Promise(x=>m.push(x))}const r=s.texData.get(e),{values:i,shape:a,slice:o,dtype:l,complexTensorInfos:u,isPacked:c}=r;if(null!=o){let m;m=c?new hi(a,ci):new xr(a,ci);const x=s.runWebGLProgram(m,[{dataId:e,shape:a,dtype:l}],l),y=s.read(x.dataId);return s.disposeIntermediateTensorInfo(x),y}if(null!=i)return s.convertAndCacheOnCPU(e);if(E().getBool("DEBUG")&&!E().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&2===E().getNumber("WEBGL_VERSION"))throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let d,p,h=null;if("complex64"!==l&&E().get("WEBGL_BUFFER_SUPPORTED")){d=s.decode(e);const m=s.texData.get(d.dataId);h=s.gpgpu.createBufferFromTexture(m.texture.texture,...gh(a))}if(s.pendingRead.set(e,[]),"complex64"!==l&&(yield s.gpgpu.createAndWaitForFence()),"complex64"===l){const m=yield Promise.all([s.read(u.real.dataId),s.read(u.imag.dataId)]);p=Nr(m[0],m[1])}else if(null==h)p=s.getValuesFromTexture(e);else{const m=K(a);p=s.gpgpu.downloadFloat32MatrixFromBuffer(h,m)}if(null!=d&&s.disposeIntermediateTensorInfo(d),null!=h){const m=s.gpgpu.gl;Ae(m,()=>m.deleteBuffer(h))}const f=s.convertAndCacheOnCPU(e,p),g=s.pendingRead.get(e);return s.pendingRead.delete(e),g.forEach(m=>m(f)),s.pendingDisposal.has(e)&&(s.pendingDisposal.delete(e),s.disposeData(e)&&tr().removeDataId(e,s),s.pendingDeletes--),f})()}readToGPU(e,s={}){const r=this.texData.get(e),{values:i,shape:a,slice:o,dtype:l,isPacked:u,texture:c}=r;if("complex64"===l)throw new Error("Does not support reading texture for complex64 dtype.");if(null!=o){let f;f=u?new hi(a,ci):new xr(a,ci);const g=this.runWebGLProgram(f,[{dataId:e,shape:a,dtype:l}],l),m=this.readToGPU(g,s);return this.disposeIntermediateTensorInfo(g),m}if(null==c)throw null!=i?new Error("Data is not on GPU but on CPU."):new Error("There is no data on GPU or CPU.");const h=this.decode(e,s.customTexShape),d=tr().makeTensorFromTensorInfo(h),p=this.texData.get(h.dataId);return Object.assign({tensorRef:d},p.texture)}bufferSync(e){const s=this.readSync(e.dataId);if("string"===e.dtype)try{const r=s.map(i=>Wr(i));return vt(e.shape,e.dtype,r)}catch{throw new Error("Failed to decode encoded string bytes into utf-8")}return vt(e.shape,e.dtype,s)}checkNumericalProblems(e){if(null!=e)for(let s=0;s0}time(e){var s=this;const r=this.activeTimers,i=[];let a=!1;null==this.programTimersStack?(this.programTimersStack=i,a=!0):this.activeTimers.push(i),this.activeTimers=i,e();const o=Si(this.activeTimers.map(c=>c.query)).filter(c=>null!=c),l=Si(this.activeTimers.map(c=>c.name)).filter(c=>null!=c);this.activeTimers=r,a&&(this.programTimersStack=null);const u={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};return(0,N.A)(function*(){if(E().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){const c=yield Promise.all(o);u.kernelMs=function X(n){let t=0;for(let e=0;ec.map((h,d)=>({name:l[d],ms:h})).map(h=>`${h.name}: ${h.ms}`).join(", ")}else u.kernelMs={error:"WebGL query timers are not supported in this environment."};return s.uploadWaitMs=0,s.downloadWaitMs=0,u})()}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return E().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:Vn(),endMs:null}}endTimer(e){return E().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=Vn(),e)}getQueryTime(e){var s=this;return(0,N.A)(function*(){return E().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?s.gpgpu.waitForQueryAndGetTime(e):e.endMs-e.startMs})()}disposeData(e,s=!1){if(this.pendingDisposal.has(e))return!1;if(!this.texData.has(e))return!0;if(s?this.texData.get(e).refCount=0:this.texData.get(e).refCount--,!s&&this.texData.get(e).refCount>0)return!1;if(this.pendingRead.has(e))return this.pendingDisposal.add(e),this.pendingDeletes++,!1;this.releaseGPUData(e);const{complexTensorInfos:r}=this.texData.get(e);return null!=r&&(this.disposeData(r.real.dataId,s),this.disposeData(r.imag.dataId,s)),this.texData.delete(e),!0}releaseGPUData(e){const{texture:s,dtype:r,texShape:i,usage:a,isPacked:o,slice:l}=this.texData.get(e),u=l&&l.origDataId||e,c=this.dataRefCount.get(u);c>1?this.dataRefCount.set(u,c-1):(this.dataRefCount.delete(u),null!=s&&(this.numBytesInGPU-=this.computeBytes(i,r),this.textureManager.releaseTexture(s,i,a,o)));const h=this.texData.get(e);h.texture=null,h.texShape=null,h.isPacked=!1,h.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture.texture}getDataInfo(e){return this.texData.get(e)}shouldExecuteOnCPU(e,s=PW){return E().getBool("WEBGL_CPU_FORWARD")&&e.every(r=>null==this.texData.get(r.dataId).texture&&K(r.shape)0&&os(r[0])){const a=r.map(o=>Ur(o));i=this.write(a,e,s)}else i=this.write(r,e,s);return this.texData.get(i).usage=null,{dataId:i,shape:e,dtype:s}}makeOutput(e,s,r){return tr().makeTensorFromTensorInfo(this.makeTensorInfo(e,s,r),this)}unpackTensor(e){const s=new AW(e.shape);return this.runWebGLProgram(s,[e],e.dtype)}packTensor(e){const s=new fW(e.shape);return this.runWebGLProgram(s,[e],e.dtype,null,!0)}packedReshape(e,s){const r=[Pa(e.shape),...Fa(e.shape)],i={dtype:e.dtype,shape:r,dataId:e.dataId},a=[Pa(s),...Fa(s)],o=new cT(a,r),c=this.runWebGLProgram(o,[i],e.dtype,[r],!0);return{dataId:c.dataId,shape:s,dtype:c.dtype}}decode(e,s){const r=this.texData.get(e),{isPacked:i,shape:a,dtype:o}=r;null!=s&&T(K(a)<=s[0]*s[1]*4,()=>"customTexShape is too small. Row * Column * 4 should be equal or larger than the size of the tensor data.");const l=bh(a);let u;u=i?new eU(l):new JB(l);const h=[s??gh(l)];return{dtype:o,shape:a,dataId:this.runWebGLProgram(u,[{shape:l,dtype:o,dataId:e}],o,h,!0,s).dataId}}runWebGLProgram(e,s,r,i,a=!1,o){const l=this.makeTensorInfo(e.outputShape,r),u=this.texData.get(l.dataId);if(e.packedOutput&&(u.isPacked=!0),e.outPackingScheme===mh.DENSE){const y=o??gh(e.outputShape);u.texShape=y.map(b=>2*b)}if(null!=e.outTexUsage&&(u.usage=e.outTexUsage),0===K(l.shape))return u.values=Cn(l.dtype,0),l;const c=[],h=s.map(y=>{if("complex64"===y.dtype)throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let b=this.texData.get(y.dataId);if(null==b.texture){if(!e.packedInputs&&K(y.shape)<=E().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:y.shape,texData:null,isUniform:!0,uniformValues:b.values};e.packedInputs&&(b.isPacked=!0,b.shape=y.shape)}if(this.uploadToGPU(y.dataId),!!b.isPacked!=!!e.packedInputs)y=b.isPacked?this.unpackTensor(y):this.packTensor(y),c.push(y),b=this.texData.get(y.dataId);else if(b.isPacked&&!wh(b.shape,y.shape)){const v=y,w=y.shape;y.shape=b.shape,y=this.packedReshape(y,w),c.push(y),b=this.texData.get(y.dataId),v.shape=w}return{shape:y.shape,texData:b,isUniform:!1}});this.uploadToGPU(l.dataId);const d={shape:l.shape,texData:u,isUniform:!1},p=function QB(n,t,e){let s="";t.concat(e).forEach(a=>{const o=null!=a.texData&&null!=a.texData.slice&&a.texData.slice.flatOffset>0;if(n.enableShapeUniforms&&!a.isUniform){const l=a.texData.texShape,{useSqueezeShape:u,uniformShape:c,keptDims:h}=ng(n.packedInputs,a.shape,l);let d="",p="",f="";if(1===c.length&&n.packedInputs){const w=[Math.ceil(l[0]/2),Math.ceil(l[1]/2)];d=`${w[0]>1}_${w[1]>1}`}else if(2!==c.length||n.packedInputs){if(c.length>2&&!n.packedInputs){const w=Ue(c);f=`${w[0]===l[1]}_${w[w.length-1]===l[1]}`}}else p=`${c[0]>1}_${c[1]>1}`;const g=a.shape.length,m=2===c.length&&rt(a.shape,l),x=1===K(a.shape),y=ga(a.shape,e.shape),b=!n.packedInputs&&g===e.shape.length&&rt(l,e.texData.texShape);s+=`${g}_${b}_${u?h:""}_${c.length}_${x}_${y}_${m}_${d}_${p}_${f}_${n.packedInputs||c.length>2?"":`${l[0]>1}_${l[1]>1}`}_${o}`}else s+=`${a.shape}_${a.isUniform?"uniform":a.texData.texShape}_${o}`});let i=n.constructor.name;return i+="_"+s+"_"+n.userCode+`${E().getNumber("WEBGL_VERSION")}`,i}(e,h,d),f=this.getAndSaveBinary(p,()=>function ZB(n,t,e,s){const r=e.map((c,h)=>{const d={logicalShape:c.shape,texShape:c.isUniform?null:c.texData.texShape,isUniform:c.isUniform,isPacked:!c.isUniform&&c.texData.isPacked,flatOffset:null};return null!=c.texData&&null!=c.texData.slice&&c.texData.slice.flatOffset>0&&(d.flatOffset=c.texData.slice.flatOffset),{name:t.variableNames[h],shapeInfo:d}}),i=r.map(c=>c.shapeInfo),a={logicalShape:s.shape,texShape:s.texData.texShape,isUniform:!1,isPacked:s.texData.isPacked,flatOffset:null},o=fB(r,a,t),l=function Gz(n,t){const e=Dr(n,()=>n.createShader(n.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(Ae(n,()=>n.shaderSource(e,t)),Ae(n,()=>n.compileShader(e)),E().get("ENGINE_COMPILE_ONLY"))return e;if(!1===n.getShaderParameter(e,n.COMPILE_STATUS))throw W_(t,n.getShaderInfoLog(e)),new Error("Failed to compile fragment shader.");return e}(n.gl,o),u=n.createProgram(l);return E().get("ENGINE_COMPILE_ONLY")?{program:t,fragmentShader:l,source:o,webGLProgram:u,inShapeInfos:i,outShapeInfo:a,variablesLocations:null,customUniformLocations:null,infLoc:null,nanLoc:null,outShapeLocation:null,outShapeStridesLocation:null,outTexShapeLocation:null}:(n.buildVao(u),Object.assign({program:t,fragmentShader:l,source:o,webGLProgram:u,inShapeInfos:i,outShapeInfo:a},Q_(n,t,u)))}(this.gpgpu,e,h,d)),g=null!=this.activeTimers;let m;g&&(m=this.startTimer()),E().get("ENGINE_COMPILE_ONLY")||function YB(n,t,e,s,r){t.program.enableShapeUniforms||(J_(t.inShapeInfos,e),J_([t.outShapeInfo],[s]));const i=s.texData.texture,a=s.texData.texShape;s.texData.isPacked?n.setOutputPackedMatrixTexture(i.texture,a[0],a[1]):n.setOutputMatrixTexture(i.texture,a[0],a[1]),n.setProgram(t.webGLProgram),n.bindVertexArray(t.webGLProgram.vao),1===E().getNumber("WEBGL_VERSION")&&null!==t.infLoc&&n.gl.uniform1f(t.infLoc,1/0),null!==t.nanLoc&&n.gl.uniform1f(t.nanLoc,NaN);for(let l=0;lthis.disposeIntermediateTensorInfo(y)),g&&(m=this.endTimer(m),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(m)}));const x=E().getNumber("WEBGL_FLUSH_THRESHOLD");if(x>0){const y=Vn();y-this.lastGlFlushTime>x&&(this.gpgpu.gl.flush(),this.lastGlFlushTime=y)}if(!E().getBool("WEBGL_LAZILY_UNPACK")&&u.isPacked&&!1===a){const y=this.unpackTensor(l);return this.disposeIntermediateTensorInfo(l),y}return l}compileAndRun(e,s,r,i,a=!1){return this.runWebGLProgram(e,s,r=r||s[0].dtype,i,a)}getAndSaveBinary(e,s){return e in this.binaryCache||(this.binaryCache[e]=s()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(E().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(s=>{this.gpgpu.deleteProgram(this.binaryCache[s].webGLProgram),delete this.binaryCache[s]}),this.textureManager.dispose(),null!=this.canvas&&typeof HTMLCanvasElement<"u"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return null==this.floatPrecisionValue&&(this.floatPrecisionValue=Z(()=>{if(!E().get("WEBGL_RENDER_FLOAT32_ENABLED")){const e=E().getBool("DEBUG");E().set("DEBUG",!1);const s=this.abs(ut(1e-8)).dataSync()[0];if(E().set("DEBUG",e),s>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return 32===this.floatPrecision()?1e-7:1e-4}uploadToGPU(e){const s=this.texData.get(e),{shape:r,dtype:i,values:a,texture:o,usage:l,isPacked:u}=s;if(null!=o)return;const c=null!=this.activeTimers;let h;c&&(h=Vn());let d=s.texShape;if(null==d&&(d=function rB(n,t=!1){let e=E().getNumber("WEBGL_MAX_TEXTURE_SIZE"),s=E().getNumber("WEBGL_MAX_SIZE_FOR_NARROW_TEXTURE");s===1/0&&E().getBool("WEBGL_AUTO_SQUARIFY_NARROW_TEXTURE_SHAPE")&&(s=e/2),t&&(e*=2,s*=2,1===(n=n.map((o,l)=>l>=n.length-2?C(n[l]):n[l])).length&&(n=[2,n[0]])),2!==n.length&&(n=Qs(n).newShape);let r=K(n),i=null;n.length<=1&&r<=e?i=[1,r]:2===n.length&&n[0]<=e&&n[1]<=e?i=n:3===n.length&&n[0]*n[1]<=e&&n[2]<=e?i=[n[0]*n[1],n[2]]:3===n.length&&n[0]<=e&&n[1]*n[2]<=e?i=[n[0],n[1]*n[2]]:4===n.length&&n[0]*n[1]*n[2]<=e&&n[3]<=e?i=[n[0]*n[1]*n[2],n[3]]:4===n.length&&n[0]<=e&&n[1]*n[2]*n[3]<=e&&(i=[n[0],n[1]*n[2]*n[3]]);const a=null!=i&&Math.max(...i)>s&&Math.min(...i)<=(t?2:1)&&Math.min(...i)>0;if(null==i||a)if(t){const o=Pa(n);let l=2,u=2;n.length&&([l,u]=Fa(n)),r=o*(l/2)*(u/2),i=Vs(r).map(c=>2*c)}else i=Vs(r);return i}(r,u),s.texShape=d),null!=a){const p=bh(r);let f,g=d[1],m=d[0];const x=a instanceof Uint8Array||a instanceof Uint8ClampedArray;(u||!x)&&([g,m]=Oa(d[0],d[1])),f=u?new rU(p,x):new eT(p,x);const y=x?[m,g]:d,b=this.makeTensorInfo(y,i),v=this.texData.get(b.dataId);v.usage=x?Fs.PIXELS:Fs.UPLOAD,v.texShape=y,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(b.dataId),g,m,a);const I=this.runWebGLProgram(f,[b],i,[[m,g]],!0),k=this.texData.get(I.dataId);s.texShape=k.texShape,s.isPacked=k.isPacked,s.usage=k.usage,E().get("ENGINE_COMPILE_ONLY")?this.disposeData(I.dataId):(s.texture=k.texture,s.values=null,this.texData.delete(I.dataId)),this.disposeIntermediateTensorInfo(b),c&&(this.uploadWaitMs+=Vn()-h)}else{const p=this.acquireTexture(d,l,i,u);s.texture=p}}convertAndCacheOnCPU(e,s){const r=this.texData.get(e),{dtype:i}=r;return null!=s&&(r.values=function VW(n,t){if("float32"===t||"complex64"===t)return n;if("int32"===t||"bool"===t){const e="int32"===t?new Int32Array(n.length):new Uint8Array(n.length);for(let s=0;s1024*this.numMBBeforeWarning*1024){const a=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${a} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,s,i)}computeBytes(e,s){return e[0]*e[1]*ra(s)}checkCompileCompletion(){for(const[,e]of Object.entries(this.binaryCache))this.checkCompletion_(e)}checkCompileCompletionAsync(){var e=this;return(0,N.A)(function*(){const s=[];if(e.gpgpu.parallelCompilationExtension){for(const[,r]of Object.entries(e.binaryCache))s.push(e.checkCompletionAsync_(r));return Promise.all(s)}for(const[,r]of Object.entries(e.binaryCache)){const i=new Promise(a=>{try{e.checkCompletion_(r),a(!0)}catch(o){throw o}});s.push(i)}return Promise.all(s)})()}checkCompletionAsync_(e){var s=this;return(0,N.A)(function*(){return s.gpgpu.gl.getProgramParameter(e.webGLProgram,s.gpgpu.parallelCompilationExtension.COMPLETION_STATUS_KHR)?s.checkCompletion_(e):(yield Ly(),s.checkCompletionAsync_(e))})()}checkCompletion_(e){if(!1===this.gpgpu.gl.getProgramParameter(e.webGLProgram,this.gpgpu.gl.LINK_STATUS))throw console.log(this.gpgpu.gl.getProgramInfoLog(e.webGLProgram)),!1===this.gpgpu.gl.getShaderParameter(e.fragmentShader,this.gpgpu.gl.COMPILE_STATUS)?(W_(e.source,this.gpgpu.gl.getShaderInfoLog(e.fragmentShader)),new Error("Failed to compile fragment shader.")):new Error("Failed to link vertex and fragment shaders.");return!0}getUniformLocations(){for(const e of Object.values(this.binaryCache)){this.gpgpu.buildVao(e.webGLProgram);const{variablesLocations:s,customUniformLocations:r,infLoc:i,nanLoc:a,outShapeLocation:o,outShapeStridesLocation:l,outTexShapeLocation:u}=Q_(this.gpgpu,e.program,e.webGLProgram);e.variablesLocations=s,e.customUniformLocations=r,e.infLoc=i,e.nanLoc=a,e.outShapeLocation=o,e.outShapeStridesLocation=l,e.outTexShapeLocation=u}}createTensorFromGPUData(e,s,r){e.channels=e.channels||"RGBA";const{texture:i,height:a,width:o,channels:l}=e,u=tr().backend;if(!u.gpgpu.gl.isTexture(i))throw new Error("The texture is invalid. Also, please make sure the texture and the TFJS WebGL backend are using the same canvas. If you want to use your own custom canvas, you have to create and use the custom TFJS WebGL backend created from the canvas through 'new tf.MathBackendWebGL(customCanvas)'.");const c=u.writeTexture(i,s,r,a,o,l);return tr().makeTensorFromDataId(c,s,r,u)}}return n.nextDataId=0,n})();fx()&&yx("webgl",()=>new MW,2);const ig="\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n";class Yi{constructor(t,e,s){this.variableNames=["A","B"],this.outputShape=ht(e,s),this.enableShapeUniforms=Hn(this.outputShape.length),this.userCode=`\n float binaryOperation(float a, float b) {\n ${t}\n }\n\n void main() {\n float a = getAAtOutCoords();\n float b = getBAtOutCoords();\n setOutput(binaryOperation(a, b));\n }\n `}}const Qi="\n result.r = isNaN.r ? NAN : result.r;\n result.g = isNaN.g ? NAN : result.g;\n result.b = isNaN.b ? NAN : result.b;\n result.a = isNaN.a ? NAN : result.a;\n";class Ba{constructor(t,e,s,r=!1){this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=ht(e,s);const i=this.outputShape.length;this.enableShapeUniforms=Hn(i);let a="";if(r)if(0===i||1===K(this.outputShape))a="\n result.y = 0.;\n result.z = 0.;\n result.w = 0.;\n ";else if(a=`\n ${Ut(i)} coords = getOutputCoords();\n `,1===i)a+=this.enableShapeUniforms?"\n result.y = (coords + 1) >= outShape ? 0. : result.y;\n result.z = 0.;\n result.w = 0.;\n ":`\n result.y = (coords + 1) >= ${this.outputShape[0]} ? 0. : result.y;\n result.z = 0.;\n result.w = 0.;\n `;else{const l=Jn("coords",i);a+=this.enableShapeUniforms?`\n bool nextRowOutOfBounds =\n (${l[i-2]} + 1) >= outShape[${i} - 2];\n bool nextColOutOfBounds =\n (${l[i-1]} + 1) >= outShape[${i} - 1];\n result.y = nextColOutOfBounds ? 0. : result.y;\n result.z = nextRowOutOfBounds ? 0. : result.z;\n result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n `:`\n bool nextRowOutOfBounds =\n (${l[i-2]} + 1) >= ${this.outputShape[i-2]};\n bool nextColOutOfBounds =\n (${l[i-1]} + 1) >= ${this.outputShape[i-1]};\n result.y = nextColOutOfBounds ? 0. : result.y;\n result.z = nextRowOutOfBounds ? 0. : result.z;\n result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n `}this.userCode=`\n vec4 binaryOperation(vec4 a, vec4 b) {\n ${t}\n }\n\n void main() {\n vec4 a = getAAtOutCoords();\n vec4 b = getBAtOutCoords();\n\n vec4 result = binaryOperation(a, b);\n ${a}\n\n setOutput(result);\n }\n `}}function hs(n){const{inputs:t,backend:e}=n,{x:s}=t;return e.incRef(s.dataId),{dataId:s.dataId,shape:s.shape,dtype:s.dtype}}const UW={kernelName:yo,backendName:"webgl",kernelFunc:hs};function di(n){const{inputs:t,backend:e}=n,{real:s,imag:r}=t,i=e.makeTensorInfo(s.shape,"complex64"),a=e.texData.get(i.dataId),o=hs({inputs:{x:s},backend:e}),l=hs({inputs:{x:r},backend:e});return a.complexTensorInfos={real:o,imag:l},i}const WW={kernelName:od,backendName:"webgl",kernelFunc:di},mT="return (a < 0.) ? b * a : a;",gT="\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n",HW={kernelName:pu,backendName:"webgl",kernelFunc:function GW(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{alpha:i}=s,a=e.makeTensorInfo([],"float32",Br(i,"float32")),o=E().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Ba(gT,r.shape,a.shape):new Yi(mT,r.shape,a.shape),l=e.runWebGLProgram(o,[r,a],"float32");return e.disposeIntermediateTensorInfo(a),l}},xT="return (a < 0.) ? b * a : a;",yT="\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n",XW={kernelName:$u,backendName:"webgl",kernelFunc:function jW(n){const{inputs:t,backend:e}=n,{x:s,alpha:r}=t,i=E().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Ba(yT,s.shape,r.shape):new Yi(xT,s.shape,r.shape);return e.runWebGLProgram(i,[s,r],"float32")}},Ua="if (isnan(x)) return x;";function Nt({opSnippet:n,packedOpSnippet:t,cpuKernelImpl:e,dtype:s}){return({inputs:r,backend:i})=>{const{x:a}=r,o=i,l=s||a.dtype;if(o.shouldExecuteOnCPU([a])&&null!=e){const h=o.texData.get(a.dataId),d=e(h.values,l);return o.makeTensorInfo(a.shape,l,d)}let c;return c=E().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&null!=t?new hi(a.shape,t):new xr(a.shape,n),o.runWebGLProgram(c,[a],l)}}function Ln({opSnippet:n,packedOpSnippet:t,checkOutOfBounds:e=!1,supportsComplex:s=!1,cpuKernelImpl:r,dtype:i}){return({inputs:a,backend:o})=>{const{a:l,b:u}=a,c=o;if(s&&"complex64"===l.dtype){const f=c.texData.get(l.dataId),g=c.texData.get(u.dataId),[m,x]=[[f.complexTensorInfos.real,g.complexTensorInfos.real],[f.complexTensorInfos.imag,g.complexTensorInfos.imag]].map(b=>{const[v,w]=b,S={dataId:v.dataId,dtype:v.dtype,shape:l.shape},I={dataId:w.dataId,dtype:w.dtype,shape:u.shape},k=new Yi(n,l.shape,u.shape);return c.runWebGLProgram(k,[S,I],ls(v.dtype,w.dtype))}),y=di({inputs:{real:m,imag:x},backend:c});return c.disposeIntermediateTensorInfo(m),c.disposeIntermediateTensorInfo(x),y}const h=i||ls(l.dtype,u.dtype);if(("string"===l.dtype||"string"===u.dtype||c.shouldExecuteOnCPU([l,u]))&&null!=r){const f=c.texData.get(l.dataId).values,g=c.texData.get(u.dataId).values,m="string"===l.dtype?Ar(f):f,x="string"===l.dtype?Ar(g):g,[y,b]=r(l.shape,u.shape,m,x,h),v=c.makeTensorInfo(b,h);return c.texData.get(v.dataId).values=y,v}let p;return p=E().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&null!=t?new Ba(t,l.shape,u.shape,e):new Yi(n,l.shape,u.shape),c.runWebGLProgram(p,[l,u],h)}}function Pl(n,t=!1){if("linear"===n)return"return x;";if("relu"===n)return t?"\n vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n":_W;if("elu"===n)return t?"\n vec4 result;\n\n result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n return result;\n":"return (x >= 0.0) ? x : (exp(x) - 1.0);";if("relu6"===n)return t?"\n vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n":TW;if("prelu"===n)return t?yT:xT;if("leakyrelu"===n)return t?gT:mT;if("sigmoid"===n)return"return 1.0 / (1.0 + exp(-1.0 * x));";throw new Error(`Activation ${n} has not been implemented for the WebGL backend.`)}class bT{constructor(t,e,s,r=!1,i=!1,a=!1,o=null,l=!1,u=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=s,this.enableShapeUniforms=Hn(this.outputShape.length);const h=Math.ceil((r?t[1]:t[2])/2),d=r?"i * 2, rc.y":"rc.y, i * 2",p=i?"rc.z, i * 2":"i * 2, rc.z",f=r?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],g=i?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"];let m="",x="";o&&(m=l?`vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n ${o}\n }`:u?`vec4 activation(vec4 a) {\n vec4 b = getLeakyreluAlphaAtOutCoords();\n ${o}\n }`:`vec4 activation(vec4 x) {\n ${o}\n }`,x="result = activation(result);");const y=a?"result += getBiasAtOutCoords();":"";a&&this.variableNames.push("bias"),l&&this.variableNames.push("preluActivationWeights"),u&&this.variableNames.push("leakyreluAlpha");let b="rc.x",v="rc.x";t[0]`The new shape (${l}) has ${u} elements and the old shape (${r.shape}) has ${o} elements. The new shape and old shape must have the same number of elements.`);const c=a.texData.get(r.dataId);return!c.isPacked||wh(r.shape,l)||null!==c.texture&&wh(c.shape,l)?(a.incRef(r.dataId),{dataId:r.dataId,shape:l,dtype:r.dtype}):function qW(n,t,e){const s=[Pa(n.shape),...Fa(n.shape)],r={dtype:n.dtype,shape:s,dataId:n.dataId},i=[Pa(t),...Fa(t)],a=new cT(i,s),u=e.runWebGLProgram(a,[r],n.dtype,[s],!0);return{dataId:u.dataId,shape:t,dtype:u.dtype}}(r,l,a)}const ZW={kernelName:Ou,backendName:"webgl",kernelFunc:Ne};class TT{constructor(t,e){this.variableNames=["x"];const{windowSize:s,batchSize:r,inSize:i,outSize:a}=t;this.outputShape=[r,a];const o=4*Math.floor(s/4),l=s%4;let u="sumValue += dot(values, ones);";if(null!=e){const h=1/e;u=`sumValue += dot(values * ${St(h)?h.toPrecision(2):h}, ones);`}let c="";i%s>0&&(c=`\n if (inIdx < 0 || inIdx >= ${i}) {\n return 0.0;\n }\n `),this.userCode=`\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n ${c}\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * ${s};\n\n float sumValue = 0.0;\n\n for (int i = 0; i < ${o}; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n ${u}\n }\n\n int inIdx = inOffset + ${o};\n if (${1===l}) {\n vec4 values = vec4(getValue(batch, inIdx), 0.0, 0.0, 0.0);\n\n ${u}\n } else if (${2===l}) {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1), 0.0, 0.0);\n\n ${u}\n } else if (${3===l}) {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2), 0.0);\n\n ${u}\n }\n setOutput(sumValue);\n }\n `}}class YW{constructor(t,e){this.variableNames=["x"];const{windowSize:s,batchSize:r,inSize:i,outSize:a}=t;this.outputShape=[r,a];let o="0.0",l="";"prod"===e?o="1.0":"min"===e?(o="1.0 / 1e-20",l="min"):"max"===e&&(o="-1.0 / 1e-20",l="max");let u=`${e}(${e}(${e}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;"sum"===e?u="sumValue":"prod"===e?u="prodValue":"all"===e?u="allValue":"any"===e&&(u="anyValue");const c=4*Math.floor(s/4),h=s%4;let d=`\n if (${"sum"===e}) {\n sumValue += dot(values, ones);\n } else if (${"prod"===e}) {\n vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);\n prodValue *= tmp[0] * tmp[1];\n } else {\n minMaxValue = ${l}(values, minMaxValue);\n if (${"min"===e} || ${"max"===e}) {\n minMaxValue = ${l}(values, minMaxValue);\n bvec4 isNaN = isnan(values);\n if (isNaN.r || isNaN.g || isNaN.b || isNaN.a) {\n minMaxValue = vec4(NAN);\n }\n }\n }\n `,p="vec4";"all"===e?(o="1.0",d="\n bool reducedAllValue = all(values);\n float floatedReducedAllValue = float(reducedAllValue);\n allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\n ",p="bvec4"):"any"===e&&(o="0.0",d="\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n ",p="bvec4");let f="";i%s>0&&(f=`\n if (inIdx < 0 || inIdx >= ${i}) {\n return initializationValue;\n }\n `),this.userCode=`\n const float initializationValue = ${o};\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n ${f}\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * ${s};\n\n vec4 minMaxValue = vec4(${o});\n float prodValue = 1.0;\n float sumValue = 0.0;\n float allValue = 1.0;\n float anyValue = 0.0;\n\n for (int i = 0; i < ${c}; i += 4) {\n int inIdx = inOffset + i;\n ${p} values = ${p}(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n ${d}\n }\n\n int inIdx = inOffset + ${c};\n if (${1===h}) {\n ${p} values = ${p}(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n ${d}\n } else if (${2===h}) {\n ${p} values = ${p}(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n ${d}\n } else if (${3===h}) {\n ${p} values = ${p}(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n ${d}\n }\n setOutput(${u});\n }\n `}}function Ji(n,t,e,s){const r=function QW(n){const t=[];for(;0===t.length||1!==t[t.length-1].outSize;){const e=t.length?t[t.length-1].outSize:n[1],s=_c(e);t.push({inSize:e,windowSize:s,outSize:Math.ceil(e/s)})}return t}(n.shape);let i=n;for(let a=0;a6)throw Error(`Transpose for rank ${t} is not yet supported`);const e=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],s=new Array(t);for(let r=0;r6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);const r=Ut(this.rank),i=uT("rc",this.rank),a=new Array(this.rank);for(let c=0;c`Error in matMul: inner shapes (${h}) and (${d}) of Tensors with shapes ${n.shape} and ${t.shape} and transposeA=${e} and transposeB=${s} must match.`);const w=e?[x,h,p]:[x,p,h],S=s?[y,f,d]:[y,d,f],I=Ne({inputs:{x:n},backend:r,attrs:{shape:w}}),k=Ne({inputs:{x:t},backend:r,attrs:{shape:S}}),D=[I,k],P=Math.max(x,y),B=e?I.shape[1]:I.shape[2],Y=null!=i,Q=null!=a,ee="leakyrelu"===l,J=null!=l?Pl(l,!0):null;let ae;if((1===p||1===f)&&B>1e3&&!1===(Y||Q||ee||null!=J)){let le=I,ge=k;e&&(le=es({inputs:{x:I},backend:r,attrs:{perm:[0,2,1]}}),D.push(le)),s&&(ge=es({inputs:{x:k},backend:r,attrs:{perm:[0,2,1]}}),D.push(ge));const Se=1===f;let be=le;1!==f&&(be=Ne({inputs:{x:le},backend:r,attrs:{shape:[P,B,1]}}),D.push(be));const De=1===f?2:1;let Ie=ge;Se&&(Ie=Ne({inputs:{x:ge},backend:r,attrs:{shape:[P,1,B]}}),D.push(Ie));const Le=ag({inputs:{a:be,b:Ie},backend:r});ae=kh({inputs:{x:Le},backend:r,attrs:{axis:De,keepDims:!0}}),D.push(Le)}else{const le=ls(n.dtype,t.dtype),ge=new bT(w,S,[P,p,f],e,s,Y,J,Q,ee),xe=[I,k];if(null!=i&&xe.push(i),Q&&xe.push(a),ee){const Se=r.makeTensorInfo([],"float32",Br(o,"float32"));xe.push(Se),D.push(Se)}ae=r.runWebGLProgram(ge,xe,le)}const te=Ne({inputs:{x:ae},backend:r,attrs:{shape:v}});D.push(ae);for(const le of D)r.disposeIntermediateTensorInfo(le);return te}const a4={kernelName:Ku,backendName:"webgl",kernelFunc:function i4(n){const{inputs:t,backend:e,attrs:s}=n,{a:r,b:i,bias:a,preluActivationWeights:o}=t,{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:h}=s;return Nh({a:r,b:i,transposeA:l,transposeB:u,backend:e,bias:a,preluActivationWeights:o,leakyreluAlpha:h,activation:c})}},CT="return abs(x);",l4={kernelName:In,backendName:"webgl",kernelFunc:function o4(n){const{inputs:t,backend:e}=n,{x:s}=t;if(e.shouldExecuteOnCPU([s])&&"complex64"!==s.dtype){const i=e.texData.get(s.dataId),a=oT(i.values);return e.makeTensorInfo(s.shape,s.dtype,a)}let r;return r=E().getBool("WEBGL_PACK_UNARY_OPERATIONS")?new hi(s.shape,CT):new xr(s.shape,CT),e.runWebGLProgram(r,[s],s.dtype)}},c4=Nt({opSnippet:Ts+"\n if (abs(x) > 1.) {\n return NAN;\n }\n return acos(x);\n"}),h4={kernelName:jn,backendName:"webgl",kernelFunc:c4},p4=Nt({opSnippet:Ts+"\n if (x < 1.0) return NAN;\nreturn log(x + sqrt(x * x - 1.0));"}),f4={kernelName:ps,backendName:"webgl",kernelFunc:p4},IT="return a + b;",m4=Ln({opSnippet:IT,packedOpSnippet:IT,supportsComplex:!0,cpuKernelImpl:_U}),g4={kernelName:oa,backendName:"webgl",kernelFunc:m4};class x4{constructor(t,e){this.outputShape=[],this.outputShape=t,this.variableNames=e.map((i,a)=>`T${a}`);const s=[];this.variableNames.forEach(i=>{s.push(`float v${i} = get${i}AtOutCoords();`)});const r=this.variableNames.map(i=>`v${i}`).join(" + ");this.userCode=`\n void main() {\n ${s.join("\n ")}\n\n float result = ${r};\n setOutput(result);\n }\n `}}class y4{constructor(t,e){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.variableNames=e.map((i,a)=>`T${a}`);const s=[];this.variableNames.forEach(i=>{s.push(`vec4 v${i} = get${i}AtOutCoords();`)});const r=this.variableNames.map(i=>`v${i}`).join(" + ");this.userCode=`\n void main() {\n ${s.join("\n ")}\n\n vec4 result = ${r};\n setOutput(result);\n }\n `}}const b4={kernelName:ed,backendName:"webgl",kernelFunc:function Ah(n){const{inputs:t,backend:e}=n,s=t;if(1===s.length)return hs({inputs:{x:s[0]},backend:e});if(s.length>E().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){const l=Math.floor(s.length/2),u=Ah({inputs:s.slice(0,l),backend:e}),c=Ah({inputs:s.slice(l),backend:e});return Ah({inputs:[u,c],backend:e})}const r=s.map(l=>l.dtype).reduce((l,u)=>ls(l,u)),i=s.map(l=>l.shape),o=E().getBool("WEBGL_PACK")?new y4(s[0].shape,i):new x4(s[0].shape,i);return e.runWebGLProgram(o,s,r)}},w4={kernelName:"All",backendName:"webgl",kernelFunc:function v4(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{axis:i,keepDims:a}=s,o=r.shape.length,l=pt(i,r.shape);let u=l;const c=rn(u,o);let h=r;null!=c&&(h=es({inputs:{x:r},backend:e,attrs:{perm:c}}),u=dn(u.length,o)),Fn("all",u,o);const[d,p]=An(h.shape,u),g=Ne({inputs:{x:h},backend:e,attrs:{shape:[-1,K(p)]}}),m=Ji(g,g.dtype,"all",e);let x;return x=Ne(a?{inputs:{x:m},backend:e,attrs:{shape:hn(d,l)}}:{inputs:{x:m},backend:e,attrs:{shape:d}}),e.disposeIntermediateTensorInfo(g),e.disposeIntermediateTensorInfo(m),null!=c&&e.disposeIntermediateTensorInfo(h),x}},T4={kernelName:"Any",backendName:"webgl",kernelFunc:function _4(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{axis:i,keepDims:a}=s,o=r.shape.length,l=pt(i,r.shape);let u=l;const c=rn(u,o);let h=r;null!=c&&(h=es({inputs:{x:r},backend:e,attrs:{perm:c}}),u=dn(u.length,o)),Fn("any",u,o);const[d,p]=An(h.shape,u),g=Ne({inputs:{x:h},backend:e,attrs:{shape:[-1,K(p)]}}),m=Ji(g,g.dtype,"any",e);let x;return x=Ne(a?{inputs:{x:m},backend:e,attrs:{shape:hn(d,l)}}:{inputs:{x:m},backend:e,attrs:{shape:d}}),e.disposeIntermediateTensorInfo(g),e.disposeIntermediateTensorInfo(m),null!=c&&e.disposeIntermediateTensorInfo(h),x}};class S4{constructor(t,e,s){this.variableNames=["A"];const{windowSize:r,batchSize:i,outSize:a}=t;s||this.variableNames.push("bestIndicesA"),this.outputShape=[i,a],this.userCode=`\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * ${r};\n\n int bestIndex = inOffset;\n float bestValue = getA(batch, bestIndex);\n\n for (int i = 0; i < ${r}; i++) {\n int inIdx = ${s?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));"};\n float candidate = getA(batch, inIdx);\n if (candidate ${"max"===e?">":"<"} bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n `}}class C4{constructor(t,e,s,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,T(t.length>2,()=>`Packed arg${s.charAt(0).toUpperCase()+s.slice(1)} supports only inputs with rank above 2.`);const a=Math.ceil(t[t.length-1]/e);this.outputShape=t.slice(0,-1),a>1&&this.outputShape.push(a),r||this.variableNames.push("bestIndicesA");const o=this.outputShape,l=o.length,u=Ut(l),c=Jn("coords",l);let h,d;if(1===a){d=l+1;const k=Ut(d);h=`\n ${k} sourceLocR = ${k}(${c.join()}, 0);\n ++${c[l-1]};\n ${k} sourceLocG = ${k}(${c.join()}, 0);\n ++${c[l-2]};\n ${k} sourceLocA = ${k}(${c.join()}, 0);\n --${c[l-1]};\n ${k} sourceLocB = ${k}(${c.join()}, 0);\n --${c[l-2]};`}else d=l,h=`\n ${u} sourceLocR = coords;\n ++${c[l-1]};\n ${u} sourceLocG = coords;\n ++${c[l-2]};\n ${u} sourceLocA = coords;\n --${c[l-1]};\n ${u} sourceLocB = coords;\n --${c[l-2]};`;const p=["x","y","z","w","u","v"].slice(0,d),f="."+p[d-1],g=p.map(k=>"int "+k),m=Jn("sourceLocR",d-1).concat("inIdx.r"),x=Jn("sourceLocG",d-1).concat("inIdx.g"),y=Jn("sourceLocB",d-1).concat("inIdx.b"),b=Jn("sourceLocA",d-1).concat("inIdx.a"),v="max"===s?"greaterThan":"lessThan",w=r?"":`\n inIdx = round(vec4(getBestIndicesAChannel(${m.join()}),\n getBestIndicesAChannel(${x.join()}),\n getBestIndicesAChannel(${y.join()}),\n getBestIndicesAChannel(${b.join()})));`,S=`vec4(\n getAChannel(${m.join()}),\n hasNextCol ? getAChannel(${x.join()}) : 0.,\n hasNextRow ? getAChannel(${y.join()}) : 0.,\n hasNextRow && hasNextCol ? getAChannel(${b.join()}) : 0.)`,I=r?"":`\n float getBestIndicesAChannel(${g.join()}) {\n return getChannel(getBestIndicesA(${p.join()}),\n vec2(${p.slice(-2).join()}));\n }`;this.userCode=`\n float getAChannel(${g.join()}) {\n return getChannel(getA(${p.join()}),\n vec2(${p.slice(-2).join()}));\n }\n ${I}\n void main() {\n ${u} coords = getOutputCoords();\n bool hasNextCol = ${c[l-1]} < ${o[l-1]-1};\n bool hasNextRow = ${c[l-2]} < ${o[l-2]-1};\n ${h}\n ivec4 srcIdx = ivec4(sourceLocR${f}, sourceLocG${f},\n sourceLocB${f}, sourceLocA${f}) * ${e};\n ivec4 inIdx = srcIdx;\n vec4 bestIndex = vec4(inIdx);\n vec4 bestValue = ${S};\n\n for (int i = 0; i < ${e}; i++) {\n inIdx = srcIdx;\n ${w}\n vec4 candidate = ${S};\n bvec4 nan = isnan(candidate);\n bvec4 replace = bvec4(\n vec4(${v}(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));\n\n bestValue = vec4(replace.x ? candidate.x : bestValue.x,\n replace.y ? candidate.y : bestValue.y,\n replace.z ? candidate.z : bestValue.z,\n replace.w ? candidate.w : bestValue.w);\n bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));\n srcIdx++;\n }\n setOutput(bestIndex);\n }\n `}}function ET(n,t,e,s=null){let r=t.shape[0],i=t.shape[1];null!=s&&(r=s.shape[0],i=s.shape[1]);const a=_c(i),o={windowSize:a,inSize:i,batchSize:r,outSize:Math.ceil(i/a)},l=new S4(o,e,null==s),u=[t];null!=s&&u.push(s);const c=n.runWebGLProgram(l,u,"int32");if(1===c.shape[1])return c;const h=ET(n,t,e,c);return n.disposeIntermediateTensorInfo(c),h}function kT(n,t,e,s=null){const r=null!=s?s.shape:t.shape,a=_c(r[r.length-1]),o=new C4(r,a,e,null==s),u=n.runWebGLProgram(o,null==s?[t]:[t,s],"int32");if(u.shape.length===t.shape.length){const c=kT(n,t,e,u);return n.disposeIntermediateTensorInfo(u),c}return u}function NT(n,t,e,s){const r=[e];if(Fn("arg"+s.charAt(0).toUpperCase()+s.slice(1),r,t.shape.length),!E().getBool("WEBGL_PACK_REDUCE")||t.shape.length<=2){const i=[],a=n.texData.get(t.dataId);let l=t;null!==a&&a.isPacked&&(l=n.unpackTensor(t),i.push(l));const[u,c]=An(l.shape,r),h=K(c),d=Ne({inputs:{x:l},backend:n,attrs:{shape:[-1,h]}});i.push(d);const p=ET(n,d,s);i.push(p);const f=Ne({inputs:{x:p},backend:n,attrs:{shape:u}});return i.forEach(g=>n.disposeIntermediateTensorInfo(g)),f}return kT(n,t,s)}const E4={kernelName:Kl,backendName:"webgl",kernelFunc:function I4(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{axis:i}=s;let a=pt(i,r.shape);const o=rn(a,r.shape.length);let l=r;const u=[];null!=o&&(l=es({inputs:{x:r},backend:e,attrs:{perm:o}}),u.push(l),a=dn(a.length,l.shape.length)),Fn("argMax",[a[0]],l.shape.length);const c=NT(e,l,a[0],"max");return u.forEach(h=>e.disposeIntermediateTensorInfo(h)),c}},N4={kernelName:ql,backendName:"webgl",kernelFunc:function k4(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{axis:i}=s;let a=pt(i,r.shape);const o=rn(a,r.shape.length);let l=r;const u=[];null!=o&&(l=es({inputs:{x:r},backend:e,attrs:{perm:o}}),u.push(l),a=dn(a.length,l.shape.length)),Fn("argMin",[a[0]],l.shape.length);const c=NT(e,l,a[0],"min");return u.forEach(h=>e.disposeIntermediateTensorInfo(h)),c}},R4=Nt({opSnippet:Ts+"\n if (abs(x) > 1.) {\n return NAN;\n }\n return asin(x);\n"}),$4={kernelName:Qa,backendName:"webgl",kernelFunc:R4},O4=Nt({opSnippet:Ts+"return log(x + sqrt(x * x + 1.0));"}),P4={kernelName:Ja,backendName:"webgl",kernelFunc:O4},L4=Nt({opSnippet:Ts+"\n return atan(x);\n"}),M4={kernelName:eo,backendName:"webgl",kernelFunc:L4},B4=Ln({opSnippet:ig+"\n return atan(a, b);\n",packedOpSnippet:"\n vec4 result = atan(a, b);\n bvec4 isNaNA = isnan(a);\n bvec4 isNaNB = isnan(b);\n bvec4 isNaN = bvec4(isNaNA.x || isNaNB.x, isNaNA.y || isNaNB.y, isNaNA.z || isNaNB.z, isNaNA.w || isNaNB.w);\n "+Qi+"\n return result;\n"}),U4={kernelName:no,backendName:"webgl",kernelFunc:B4},G4=Nt({opSnippet:Ts+"\n if ((x < -1.0) || (x > 1.0)) return NAN;\nreturn (log(1.0 + x) - log(1.0 - x)) / 2.0;"}),H4={kernelName:to,backendName:"webgl",kernelFunc:G4};class Fl{constructor(t,e,s,r=!1,i=!1){if(this.variableNames=["x"],"avg"===e&&s)throw new Error("Cannot compute positions for average pool.");const a=t.filterWidth,o=t.strideHeight,l=t.strideWidth,u=t.dilationHeight,c=t.dilationWidth,h=t.effectiveFilterHeight,d=t.effectiveFilterWidth,p=t.padInfo.top,f=t.padInfo.left;this.outputShape=t.outShape;const g="avg"===e;let y="0.0";if(g||(y="-1.0 / 1e-20"),s)return void(this.userCode=`\n const ivec2 strides = ivec2(${o}, ${l});\n const ivec2 pads = ivec2(${p}, ${f});\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n float avgValue = 0.0;\n\n for (int wR = 0; wR < ${h};\n wR += ${u}) {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ${t.inHeight}) {\n continue;\n }\n\n for (int wC = 0; wC < ${d};\n wC += ${c}) {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= ${t.inWidth}) {\n continue;\n }\n\n float value = getX(batch, xR, xC, d);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = ${r?i?`((batch * ${t.inHeight} + xR) * ${t.inWidth} + xC) * ${t.inChannels} + d`:`(xR * ${t.inWidth} + xC) * ${t.inChannels} + d`:`wR * ${d} + wC`};\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n `);let v=`${e}(${e}(${e}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;"avg"===e&&(v="avgValue / max(count, 1.0)");const w=4*Math.floor(a/4),S=a%4,I=`\n if (${g}) {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n `;this.userCode=`\n const ivec2 strides = ivec2(${o}, ${l});\n const ivec2 pads = ivec2(${p}, ${f});\n const float initializationValue = ${y};\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xR, int xC, int d) {\n if (xC < 0 || xC >= ${t.inWidth}) {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xR, xC, d);\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n vec4 minMaxValue = vec4(${y});\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < ${h};\n wR += ${u}) {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ${t.inHeight}) {\n continue;\n }\n\n for (int wC = 0; wC < ${w}; wC += 4) {\n int xC = xCCorner + wC * ${c};\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + ${c}, d),\n getValue(batch, xR, xC + 2 * ${c}, d),\n getValue(batch, xR, xC + 3 * ${c}, d)\n );\n\n ${I}\n }\n\n int xC = xCCorner + ${w};\n if (${1===S}) {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n ${I}\n } else if (${2===S}) {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + ${c}, d),\n initializationValue,\n initializationValue\n );\n\n ${I}\n } else if (${3===S}) {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + ${c}, d),\n getValue(batch, xR, xC + 2 * ${c}, d),\n initializationValue\n );\n\n ${I}\n }\n }\n setOutput(${v});\n }\n `}}class og{constructor(t,e,s,r=!1,i=!1){if(this.variableNames=["x"],"avg"===e&&s)throw new Error("Cannot compute positions for average pool.");const a=t.filterWidth,o=t.strideDepth,l=t.strideHeight,u=t.strideWidth,c=t.dilationDepth,h=t.dilationHeight,d=t.dilationWidth,p=t.effectiveFilterDepth,f=t.effectiveFilterHeight,g=t.effectiveFilterWidth,m=t.padInfo.front,x=t.padInfo.top,y=t.padInfo.left;this.outputShape=t.outShape;const b="avg"===e;let v="0.0";if(b||(v="-1.0 / 1e-20"),s)return void(this.userCode=`\n const ivec3 strides =\n ivec3(${o}, ${l}, ${u});\n const ivec3 pads = ivec3(${m}, ${x}, ${y});\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n\n for (int wD = 0; wD < ${p};\n wD += ${c}) {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= ${t.inDepth}) {\n continue;\n }\n\n for (int wR = 0; wR < ${f};\n wR += ${h}) {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ${t.inHeight}) {\n continue;\n }\n\n for (int wC = 0; wC < ${g};\n wC += ${d}) {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= ${t.inWidth}) {\n continue;\n }\n\n float value = getX(batch, xD, xR, xC, ch);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = ${r?i?`(((batch * ${t.inDepth} + xD) * ${t.inHeight} + xR) * ${t.inWidth} + xC) * ${t.inChannels} + ch`:`((xD * ${t.inHeight} + xR) * ${t.inWidth} + xC) * ${t.inChannels} + ch`:`wD * ${f} * ${g} +\n wR * ${g} + wC`};\n }\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n `);let S=`${e}(${e}(${e}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;"avg"===e&&(S="avgValue / max(count, 1.0)");const I=4*Math.floor(a/4),k=a%4,D=`\n if (${b}) {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n `;this.userCode=`\n const ivec3 strides =\n ivec3(${o}, ${l}, ${u});\n const ivec3 pads = ivec3(${m}, ${x}, ${y});\n const float initializationValue = ${v};\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xD, int xR, int xC, int ch) {\n if (xC < 0 || xC >= ${t.inWidth}) {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xD, xR, xC, ch);\n }\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch).\n // ? = to be determined\n vec4 minMaxValue = vec4(${v});\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wD = 0; wD < ${p};\n wD += ${c}) {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= ${t.inDepth}) {\n continue;\n }\n\n for (int wR = 0; wR < ${f};\n wR += ${h}) {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ${t.inHeight}) {\n continue;\n }\n\n for (int wC = 0; wC < ${I}; wC += 4) {\n int xC = xCCorner + wC * ${d};\n\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + ${d}, ch),\n getValue(batch, xD, xR, xC + 2 * ${d}, ch),\n getValue(batch, xD, xR, xC + 3 * ${d}, ch)\n );\n\n ${D}\n }\n\n int xC = xCCorner + ${I};\n if (${1===k}) {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n ${D}\n } else if (${2===k}) {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + ${d}, ch),\n initializationValue,\n initializationValue\n );\n\n ${D}\n } else if (${3===k}) {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + ${d}, ch),\n getValue(batch, xD, xR, xC + 2 * ${d}, ch),\n initializationValue\n );\n\n ${D}\n }\n }\n }\n setOutput(${S});\n }\n `}}const X4={kernelName:Zl,backendName:"webgl",kernelFunc:function j4(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t;Dl(r,"avgPool");const{filterSize:i,strides:a,pad:o,dimRoundingMode:l}=s;T(Pn(a,1),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${a} and dilations '1'`);const c=ks(r.shape,i,a,1,o,l);if(1===c.filterWidth&&1===c.filterHeight&&rt(c.inShape,c.outShape))return hs({inputs:{x:r},backend:e});const h=new Fl(c,"avg",!1);return e.runWebGLProgram(h,[r],"float32")}},q4={kernelName:Yl,backendName:"webgl",kernelFunc:function K4(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{filterSize:i,strides:a,pad:o,dimRoundingMode:l,dataFormat:u}=s,h=Tr(r.shape,i,a,[1,1,1],o,l,u),d=new og(h,"avg",!1);return e.runWebGLProgram(d,[r],"float32")}};class Z4{constructor(t){this.variableNames=["dy"],this.outputShape=t.inShape;const l=t.effectiveFilterHeight,u=t.effectiveFilterWidth;this.userCode=`\n const ivec2 pads = ivec2(${l-1-t.padInfo.top}, ${u-1-t.padInfo.left});\n const float avgMultiplier = float(${1/(t.filterHeight*t.filterWidth)});\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ${l};\n wR += ${t.dilationHeight}) {\n float dyR = float(dyRCorner + wR) / ${t.strideHeight}.0;\n\n if (dyR < 0.0 || dyR >= ${t.outHeight}.0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ${u};\n wC+= ${t.dilationWidth}) {\n float dyC = float(dyCCorner + wC) / ${t.strideWidth}.0;\n\n if (dyC < 0.0 || dyC >= ${t.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n setOutput(dotProd);\n }\n `}}class Y4{constructor(t){this.variableNames=["dy"],this.outputShape=t.inShape;const h=t.effectiveFilterDepth,d=t.effectiveFilterHeight,p=t.effectiveFilterWidth;this.userCode=`\n const ivec3 pads = ivec3(${h-1-t.padInfo.front}, ${d-1-t.padInfo.top}, ${p-1-t.padInfo.left});\n const float avgMultiplier = float(${1/(t.filterDepth*t.filterHeight*t.filterWidth)});\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < ${h};\n wD += ${t.dilationDepth}) {\n float dyD = float(dyDCorner + wD) / ${t.strideDepth}.0;\n\n if (dyD < 0.0 || dyD >= ${t.outDepth}.0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < ${d};\n wR += ${t.dilationHeight}) {\n float dyR = float(dyRCorner + wR) / ${t.strideHeight}.0;\n\n if (dyR < 0.0 || dyR >= ${t.outHeight}.0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ${p};\n wC += ${t.dilationWidth}) {\n float dyC = float(dyCCorner + wC) / ${t.strideWidth}.0;\n\n if (dyC < 0.0 || dyC >= ${t.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n }\n setOutput(dotProd);\n }\n `}}const J4={kernelName:rd,backendName:"webgl",kernelFunc:function Q4(n){const{inputs:t,backend:e,attrs:s}=n,{dy:r,input:i}=t,a=i,{filterSize:o,strides:l,pad:u,dimRoundingMode:c}=s,d=Tr(a.shape,o,l,[1,1,1],u,c),p=new Y4(d);return e.runWebGLProgram(p,[r],a.dtype)}},tG={kernelName:sd,backendName:"webgl",kernelFunc:function eG(n){const{inputs:t,backend:e,attrs:s}=n,{dy:r,input:i}=t,a=i;Dl([r,i],"avgPoolGrad");const{filterSize:o,strides:l,pad:u}=s,c=ks(a.shape,o,l,1,u),h=new Z4(c);return e.runWebGLProgram(h,[r],a.dtype)}},sG={kernelName:Ql,backendName:"webgl",kernelFunc:function nG(n){const{inputs:t,backend:e,attrs:s}=n,{a:r,b:i}=t,{transposeA:a,transposeB:o}=s;return Nh({a:r,b:i,transposeA:a,transposeB:o,backend:e})}};class rG{constructor(t,e,s,r,i,a){this.outputShape=[],this.variableNames=["x","mean","variance"],ht(t,e),ht(t,s);let o="0.0";null!=r&&(ht(t,r),this.variableNames.push("offset"),o="getOffsetAtOutCoords()");let l="1.0";null!=i&&(ht(t,i),this.variableNames.push("scale"),l="getScaleAtOutCoords()"),this.outputShape=t,this.userCode=`\n void main() {\n float x = getXAtOutCoords();\n float mean = getMeanAtOutCoords();\n float variance = getVarianceAtOutCoords();\n float offset = ${o};\n float scale = ${l};\n float inv = scale * inversesqrt(variance + float(${a}));\n setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));\n }\n `}}class iG{constructor(t,e,s,r,i,a){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],ht(t,e),ht(t,s);let o="vec4(0.0)";null!=r&&(ht(t,r),this.variableNames.push("offset"),o="getOffsetAtOutCoords()");let l="vec4(1.0)";null!=i&&(ht(t,i),this.variableNames.push("scale"),l="getScaleAtOutCoords()"),this.outputShape=t,this.userCode=`\n void main() {\n vec4 offset = ${o};\n vec4 scale = ${l};\n\n vec4 x = getXAtOutCoords();\n vec4 mean = getMeanAtOutCoords();\n vec4 variance = getVarianceAtOutCoords();\n\n vec4 inv = scale * inversesqrt(variance + vec4(${a}));\n\n setOutput((x - mean) * inv + offset);\n }\n `}}const aG={kernelName:cu,backendName:"webgl",kernelFunc:({inputs:n,backend:t,attrs:e})=>{const{x:s,mean:r,variance:i,offset:a,scale:o}=n;T(r.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),T(null==a||r.shape.length===a.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),T(null==o||r.shape.length===o.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon:l}=e;null==l&&(l=.001);const u=[s,r,i];let c=null;null!=a&&(c=a.shape,u.push(a));let h=null;null!=o&&(h=o.shape,u.push(o));const d=E().getBool("WEBGL_PACK_NORMALIZATION")?new iG(s.shape,r.shape,i.shape,c,h,l):new rG(s.shape,r.shape,i.shape,c,h,l);return t.runWebGLProgram(d,u,u[0].dtype)}};class oG{constructor(t){this.variableNames=["source"],this.outputShape=t,this.rank=t.length;const e=Ut(this.rank);this.customUniforms=[{name:"start",arrayIndex:this.rank,type:"int"}];const s=function lG(n){if(1===n)return"sourceLoc";if(n<=6)return lg.slice(0,n).map(t=>"sourceLoc."+t).join(",");throw Error(`Slicing for rank ${n} is not yet supported`)}(this.rank);let r;r=`\n ${e} sourceLoc;\n ${e} coords = getOutputCoords();\n ${t.map((a,o)=>`sourceLoc.${lg[o]} = start[${o}] + coords.${lg[o]};`).join("\n")}\n `,this.userCode=`\n void main() {\n ${r}\n setOutput(getSource(${s}));\n }\n `}}const lg=["x","y","z","w","u","v"];class uG{constructor(t){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.rank=t.length,this.customUniforms=[{name:"start",arrayIndex:this.rank,type:"int"}];const e=Ut(this.rank),s=Jn("coords",this.rank),r=Jn("sourceLoc",this.rank),i=1===this.rank?"sourceLoc":`vec2(${r.slice(-2).join()})`,a=`getChannel(getSource(${r.join()}), ${i})`,o=`\n result.x = ${a};\n if (++${s[this.rank-1]} < ${t[this.rank-1]}) {\n ++${r[this.rank-1]};\n result.y = ${a};\n --${r[this.rank-1]};\n }\n `,l=1===this.rank?"":`\n --${s[this.rank-1]};\n if (++${s[this.rank-2]} < ${t[this.rank-2]}) {\n ++${r[this.rank-2]};\n result.z = ${a};\n if (++${s[this.rank-1]} < ${t[this.rank-1]}) {\n ++${r[this.rank-1]};\n result.w = ${a};\n }\n }\n `,u=this.rank<=4?`sourceLoc = coords +\n ${e}(${t.map((c,h)=>`start[${h}]`).join()});`:t.map((c,h)=>`${r[h]} = ${s[h]} + start[${h}];`).join("\n");this.userCode=`\n void main() {\n ${e} coords = getOutputCoords();\n ${e} sourceLoc;\n ${u}\n vec4 result = vec4(0.);\n ${o}\n ${l}\n setOutput(result);\n }\n `}}function Wa(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{begin:i,size:a}=s,[o,l]=ac(r,i,a);if(Rp(r,o,l),0===K(l))return e.makeTensorInfo(l,r.dtype,[]);if(e.shouldExecuteOnCPU([r])||"string"===r.dtype){const h=e.texData.get(r.dataId),d=eW(h.values,o,l,r.shape,r.dtype);return e.makeTensorInfo(l,r.dtype,d)}const{isPacked:u}=e.texData.get(r.dataId),c=Dp(r.shape,o,l);if(u||!c){const h=E().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new uG(l):new oG(l);return e.runWebGLProgram(h,[r],r.dtype,[o])}return e.uploadToGPU(r.dataId),function cG(n,t,e,s){const r=s.texData.get(n.dataId),i=s.makeTensorInfo(e,n.dtype),a=s.texData.get(i.dataId);Object.assign(a,r),a.refCount=1,a.shape=e,a.dtype=n.dtype;let o=Op(t,Ue(n.shape));r.slice&&(o+=r.slice.flatOffset),a.slice={flatOffset:o,origDataId:r.slice&&r.slice.origDataId||n.dataId};const l=s.dataRefCount.get(a.slice.origDataId)||1;return s.dataRefCount.set(a.slice.origDataId,l+1),i}(r,o,l,e)}const hG={kernelName:Vu,backendName:"webgl",kernelFunc:Wa},dG={kernelName:Jl,backendName:"webgl",kernelFunc:n=>{const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{blockShape:i,crops:a}=s;T(r.shape.length<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");const o=i.reduce((y,b)=>y*b),l=pl(r.shape,i,o),u=fl(l.length,i.length),c=ml(r.shape,i,o),h=gf(a,i.length),d=xf(c,a,i.length),p=[],f=Ne({inputs:{x:r},backend:e,attrs:{shape:l}}),g=es({inputs:{x:f},backend:e,attrs:{perm:u}}),m=Ne({inputs:{x:g},backend:e,attrs:{shape:c}}),x=Wa({inputs:{x:m},backend:e,attrs:{begin:h,size:d}});return p.push(f),p.push(g),p.push(m),p.forEach(y=>e.disposeIntermediateTensorInfo(y)),x}},fG={kernelName:id,backendName:"webgl",kernelFunc:function pG(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,weights:i}=t,{size:a}=s,o=e.readSync(r.dataId),l=e.readSync(i.dataId),u=aT(o,l,i.dtype,i.shape,a);return e.makeTensorInfo([a],i.dtype,u)}},yG={kernelName:ad,backendName:"webgl",kernelFunc:function xG(n){const{inputs:t,backend:e}=n,{a:s,b:r}=t,i=E().getBool("WEBGL_PACK_BINARY_OPERATIONS"),a=E().getNumber("WEBGL_VERSION");if(e.shouldExecuteOnCPU([s,r])||1===a){const l=e.texData.get(s.dataId).values,u=e.texData.get(r.dataId).values,[c,h]=SU(s.shape,r.shape,l,u,s.dtype),d=e.makeTensorInfo(h,s.dtype);return e.texData.get(d.dataId).values=c,d}let o;return o=i?new Ba("\n int r = int(a.r) & int(b.r);\n int g = int(a.g) & int(b.g);\n int rb = int(a.b) & int(b.b);\n int ra = int(a.a) & int(b.a);\n return vec4(r, g, rb, ra);\n",s.shape,r.shape,!1):new Yi("\n return float(int(a.r) & int(b.r));\n",s.shape,r.shape),e.runWebGLProgram(o,[s,r],s.dtype)}},vG={kernelName:Fg,backendName:"webgl",kernelFunc:function bG(n){const{inputs:t,backend:e}=n,{s0:s,s1:r}=t,i=e.readSync(s.dataId),a=e.readSync(r.dataId),o=ht(Array.from(i),Array.from(a));return e.makeTensorInfo([o.length],"int32",Int32Array.from(o))}},AT=Ln({opSnippet:"return float(a != b);",cpuKernelImpl:HU,dtype:"bool"}),wG={kernelName:Eu,backendName:"webgl",kernelFunc:AT};function Ll(n){const{inputs:t,backend:e}=n,{input:s}=t;return hs({inputs:{x:e.texData.get(s.dataId).complexTensorInfos.real},backend:e})}const _G={kernelName:Od,backendName:"webgl",kernelFunc:Ll},CG={kernelName:so,backendName:"webgl",kernelFunc:function ug(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{dtype:i}=s;if("complex64"===i){if("complex64"===r.dtype)return hs({inputs:{x:r},backend:e});const a=Rn(r.shape),o=ug({inputs:{x:r},backend:e,attrs:{dtype:"float32"}}),l=di({inputs:{real:o,imag:a},backend:e});return a.dispose(),e.disposeIntermediateTensorInfo(o),l}if("complex64"===r.dtype){const a=Ll({inputs:{input:r},backend:e}),o=ug({inputs:{x:a},backend:e,attrs:{dtype:i}});return e.disposeIntermediateTensorInfo(a),o}if(!Ve(r.dtype,i)){const a=hs({inputs:{x:r},backend:e});return{dataId:a.dataId,shape:a.shape,dtype:i}}if(e.shouldExecuteOnCPU([r])){const a=e.texData.get(r.dataId).values,[o,l,u]=CU(a,r.shape,r.dtype,i);return e.makeTensorInfo(o,l,u)}if("int32"===i)return function SG(n,t){const e=new xr(n.shape,"return float(int(x));"),s=t.runWebGLProgram(e,[n],"int32");return{dataId:s.dataId,shape:s.shape,dtype:s.dtype}}(r,e);if("bool"===i){const a=e.makeTensorInfo([],"bool",Cn("bool",1)),l=AT({inputs:{a:r,b:a},backend:e});return e.disposeIntermediateTensorInfo(a),l}throw new Error(`Error in Cast: failed to cast ${r.dtype} to ${i}`)}},RT="return ceil(x);",IG=Nt({opSnippet:RT,packedOpSnippet:RT,cpuKernelImpl:IU}),EG={kernelName:ro,backendName:"webgl",kernelFunc:IG};class kG{constructor(t){this.variableNames=["A"],this.customUniforms=[{name:"minVal",type:"float"},{name:"maxVal",type:"float"}],this.outputShape=t,this.userCode="\n\n void main() {\n float value = getAAtOutCoords();\n if (isnan(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, minVal, maxVal));\n }\n "}}class NG{constructor(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"minVal",type:"float"},{name:"maxVal",type:"float"}],this.outputShape=t,this.userCode="\n void main() {\n vec4 value = getAAtOutCoords();\n\n if (any(isnan(value))) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, vec4(minVal), vec4(maxVal)));\n }\n "}}const RG={kernelName:ao,backendName:"webgl",kernelFunc:function AG(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{clipValueMin:i,clipValueMax:a}=s;let o;return o=E().getBool("WEBGL_PACK_CLIP")?new NG(r.shape):new kG(r.shape),e.runWebGLProgram(o,[r],r.dtype,[[i],[a]])}};class $G{constructor(t){this.variableNames=["real","imag"],this.outputShape=t,this.userCode="\n void main() {\n float re = abs(getRealAtOutCoords());\n float im = abs(getImagAtOutCoords());\n float mx = max(re, im);\n\n // sadly the length function in glsl is not underflow-safe\n // (at least not on Intel GPUs). So the safe solution is\n // to ensure underflow-safety in all cases.\n setOutput(\n mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))\n );\n }\n "}}function $T(n,t){return{dataId:t.dataId,dtype:t.dtype,shape:n.shape}}const OG={kernelName:eu,backendName:"webgl",kernelFunc:function DG(n){const{inputs:t,backend:e}=n,{x:s}=t,r=e.texData.get(s.dataId),i=new $G(s.shape),a=[$T(s,r.complexTensorInfos.real),$T(s,r.complexTensorInfos.imag)];return e.runWebGLProgram(i,a,a[0].dtype)}};class PG{constructor(t){this.outputShape=[],this.outputShape=or(t,1),this.variableNames=t.map((a,o)=>`T${o}`);const e=new Array(t.length-1);e[0]=t[0][1];for(let a=1;a`T${m}`);const l=new Array(t.length-1);l[0]=t[0][e];for(let g=1;g= ${l[g-1]}) {\n return getChannel(\n getT${g}(${Rh(o,u,m)}),\n vec2(${Rh(c,u,m)}));\n }`}const f=l[l.length-1];d+=`\n return getChannel(\n getT${l.length}(${Rh(o,u,f)}),\n vec2(${Rh(c,u,f)}));`,this.userCode=`\n float getValue(${o.map(g=>"int "+g)}) {\n ${d}\n }\n\n void main() {\n ${i} coords = getOutputCoords();\n vec4 result = vec4(getValue(${a}), 0., 0., 0.);\n\n ${a[r-1]} = ${a[r-1]} + 1;\n if (${a[r-1]} < ${s[r-1]}) {\n result.g = getValue(${a});\n }\n\n ${a[r-2]} = ${a[r-2]} + 1;\n if (${a[r-2]} < ${s[r-2]}) {\n result.a = getValue(${a});\n }\n\n ${a[r-1]} = ${a[r-1]} - 1;\n if (${a[r-2]} < ${s[r-2]} &&\n ${a[r-1]} < ${s[r-1]}) {\n result.b = getValue(${a});\n }\n setOutput(result);\n }\n `}}function Rh(n,t,e){const s=n.indexOf(t);return n.map((i,a)=>a===s?`${i} - ${e}`:i).join()}function $h(n){const{inputs:t,backend:e}=n,{input:s}=t;return hs({inputs:{x:e.texData.get(s.dataId).complexTensorInfos.imag},backend:e})}const LG={kernelName:Id,backendName:"webgl",kernelFunc:$h};function Ml(n,t,e){const s=n[0].dtype;if("complex64"===s){const p=n.map(y=>Ll({inputs:{input:y},backend:e})),f=n.map(y=>$h({inputs:{input:y},backend:e})),g=Ml(p,t,e),m=Ml(f,t,e),x=di({inputs:{real:g,imag:m},backend:e});return p.forEach(y=>e.disposeIntermediateTensorInfo(y)),f.forEach(y=>e.disposeIntermediateTensorInfo(y)),e.disposeIntermediateTensorInfo(g),e.disposeIntermediateTensorInfo(m),x}let r=e.shouldExecuteOnCPU(n);if("string"===s&&(r=!0),r){const p=n.map(v=>{const S=[-1,K(v.shape.slice(t))];return Ne({inputs:{x:v},backend:e,attrs:{shape:S}})}),f=p.map(v=>({vals:e.readSync(v.dataId),shape:v.shape})),g=or(p.map(v=>v.shape),1),x=EU(f,g,s,1===p[0].shape[0]),y=or(n.map(v=>v.shape),t),b=e.makeTensorInfo(y,s,x);return p.forEach(v=>e.disposeIntermediateTensorInfo(v)),b}const i=n.filter(p=>K(p.shape)>0),a=E().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&i[0].shape.length>1;if(1===i.length){const p=a?new xr(n[0].shape,ci):new hi(n[0].shape,ci);return e.runWebGLProgram(p,n,s)}const o=E().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER");if(i.length>o){const p=[];for(let g=0;gf.shape),t);return e.runWebGLProgram(p,i,s)}const{tensors2D:l,outShape:u}=function MG(n,t,e){const s=or(n.map(i=>i.shape),t);return{tensors2D:n.map(i=>Ne({inputs:{x:i},attrs:{shape:[-1,K(i.shape.slice(t))]},backend:e})),outShape:s}}(i,t,e),c=new PG(l.map(p=>p.shape)),h=e.runWebGLProgram(c,l,s);l.forEach(p=>e.disposeIntermediateTensorInfo(p));const d=Ne({inputs:{x:h},attrs:{shape:u},backend:e});return e.disposeIntermediateTensorInfo(h),d}function DT(n){const{inputs:t,backend:e,attrs:s}=n,{axis:r}=s,i=pt(r,t[0].shape)[0];pf(t.map(u=>u.shape),i);const o=or(t.map(u=>u.shape),i);if(0===K(o))return e.makeTensorInfo(o,t[0].dtype,[]);const l=t.filter(u=>K(u.shape)>0);return 1===l.length?hs({inputs:{x:l[0]},backend:e}):Ml(l,i,e)}const VG={kernelName:tu,backendName:"webgl",kernelFunc:DT};class OT{constructor(t,e=!1,s=null,r=!1,i=!1){this.variableNames=["x","W"],this.outputShape=t.outShape;const a=t.padInfo.top,o=t.padInfo.left,l=t.strideHeight,u=t.strideWidth,c=t.dilationHeight,h=t.dilationWidth,d=t.filterHeight,p=t.filterWidth,f=4*Math.floor(t.inChannels/4),g=t.inChannels%4,m="channelsLast"===t.dataFormat,x=m?1:2,y=m?2:3,b=m?3:1;let v="",w="";s&&(v=r?`float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n ${s}\n }`:i?`float activation(float a) {\n float b = getLeakyreluAlphaAtOutCoords();\n ${s}\n }`:`\n float activation(float x) {\n ${s}\n }\n `,w="result = activation(result);");const S=e?"result += getBiasAtOutCoords();":"";e&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),i&&this.variableNames.push("leakyreluAlpha"),this.userCode=`\n ${v}\n\n const ivec2 strides = ivec2(${l}, ${u});\n const ivec2 pads = ivec2(${a}, ${o});\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords[${b}];\n\n ivec2 xRCCorner =\n ivec2(coords[${x}], coords[${y}]) * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ${d}; wR++) {\n int xR = xRCorner + wR * ${c};\n\n if (xR < 0 || xR >= ${t.inHeight}) {\n continue;\n }\n\n for (int wC = 0; wC < ${p}; wC++) {\n int xC = xCCorner + wC * ${h};\n\n if (xC < 0 || xC >= ${t.inWidth}) {\n continue;\n }\n\n for (int d1 = 0; d1 < ${f}; d1 += 4) {\n vec4 wValues = vec4(\n getW(wR, wC, d1, d2),\n getW(wR, wC, d1 + 1, d2),\n getW(wR, wC, d1 + 2, d2),\n getW(wR, wC, d1 + 3, d2)\n );\n\n if (${m}) {\n vec4 xValues = vec4(\n getX(batch, xR, xC, d1),\n getX(batch, xR, xC, d1 + 1),\n getX(batch, xR, xC, d1 + 2),\n getX(batch, xR, xC, d1 + 3)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec4 xValues = vec4(\n getX(batch, d1, xR, xC),\n getX(batch, d1 + 1, xR, xC),\n getX(batch, d1 + 2, xR, xC),\n getX(batch, d1 + 3, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n\n if (${1===g}) {\n\n if (${m}) {\n dotProd +=\n getX(batch, xR, xC, ${f}) *\n getW(wR, wC, ${f}, d2);\n } else {\n dotProd +=\n getX(batch, ${f}, xR, xC) *\n getW(wR, wC, ${f}, d2);\n }\n\n } else if (${2===g}) {\n vec2 wValues = vec2(\n getW(wR, wC, ${f}, d2),\n getW(wR, wC, ${f} + 1, d2)\n );\n\n if (${m}) {\n vec2 xValues = vec2(\n getX(batch, xR, xC, ${f}),\n getX(batch, xR, xC, ${f} + 1)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec2 xValues = vec2(\n getX(batch, ${f}, xR, xC),\n getX(batch, ${f} + 1, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n } else if (${3===g}) {\n vec3 wValues = vec3(\n getW(wR, wC, ${f}, d2),\n getW(wR, wC, ${f} + 1, d2),\n getW(wR, wC, ${f} + 2, d2)\n );\n\n if (${m}) {\n vec3 xValues = vec3(\n getX(batch, xR, xC, ${f}),\n getX(batch, xR, xC, ${f} + 1),\n getX(batch, xR, xC, ${f} + 2)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec3 xValues = vec3(\n getX(batch, ${f}, xR, xC),\n getX(batch, ${f} + 1, xR, xC),\n getX(batch, ${f} + 2, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n }\n }\n }\n\n float result = dotProd;\n ${S}\n ${w}\n setOutput(result);\n }\n `}}class zG{constructor(t){this.variableNames=["x","W"],this.outputShape=t.outShape;const e=t.padInfo.front,s=t.padInfo.top,r=t.padInfo.left,i=t.strideDepth,a=t.strideHeight,o=t.strideWidth,l=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,h=t.filterDepth,d=t.filterHeight,p=t.filterWidth,f=4*Math.floor(t.inChannels/4),g=t.inChannels%4;this.userCode=`\n const ivec3 strides = ivec3(${i}, ${a}, ${o});\n const ivec3 pads = ivec3(${e}, ${s}, ${r});\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d2 = coords.u;\n\n ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xFCorner = xFRCCorner.x;\n int xRCorner = xFRCCorner.y;\n int xCCorner = xFRCCorner.z;\n\n // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get\n // y(yF, yR, yC, d2). ? = to be determined. : = across all\n // values in that axis.\n float dotProd = 0.0;\n for (int wF = 0; wF < ${h}; wF++) {\n int xF = xFCorner + wF * ${l};\n\n if (xF < 0 || xF >= ${t.inDepth}) {\n continue;\n }\n\n for (int wR = 0; wR < ${d}; wR++) {\n int xR = xRCorner + wR * ${u};\n\n if (xR < 0 || xR >= ${t.inHeight}) {\n continue;\n }\n\n for (int wC = 0; wC < ${p}; wC++) {\n int xC = xCCorner + wC * ${c};\n\n if (xC < 0 || xC >= ${t.inWidth}) {\n continue;\n }\n\n for (int d1 = 0; d1 < ${f}; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xF, xR, xC, d1),\n getX(batch, xF, xR, xC, d1 + 1),\n getX(batch, xF, xR, xC, d1 + 2),\n getX(batch, xF, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wF, wR, wC, d1, d2),\n getW(wF, wR, wC, d1 + 1, d2),\n getW(wF, wR, wC, d1 + 2, d2),\n getW(wF, wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if (${1===g}) {\n dotProd +=\n getX(batch, xF, xR, xC, ${f}) *\n getW(wF, wR, wC, ${f}, d2);\n } else if (${2===g}) {\n vec2 xValues = vec2(\n getX(batch, xF, xR, xC, ${f}),\n getX(batch, xF, xR, xC, ${f} + 1)\n );\n vec2 wValues = vec2(\n getW(wF, wR, wC, ${f}, d2),\n getW(wF, wR, wC, ${f} + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if (${3===g}) {\n vec3 xValues = vec3(\n getX(batch, xF, xR, xC, ${f}),\n getX(batch, xF, xR, xC, ${f} + 1),\n getX(batch, xF, xR, xC, ${f} + 2)\n );\n vec3 wValues = vec3(\n getW(wF, wR, wC, ${f}, d2),\n getW(wF, wR, wC, ${f} + 1, d2),\n getW(wF, wR, wC, ${f} + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n `}}class PT{constructor(t,e=!1,s=null,r=!1,i=!1){this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"pads",type:"ivec2"},{name:"strides",type:"ivec2"},{name:"dilations",type:"ivec2"},{name:"inDims",type:"ivec2"}],this.outputShape=t.outShape,this.enableShapeUniforms=Hn(this.outputShape.length);const a=t.padInfo.left,o=t.strideWidth,l=t.dilationWidth,u=t.filterHeight,c=t.filterWidth,h=c;let d="\n int xR; int xC; int xCOffset;\n vec4 wTexel; vec4 previous; vec4 final;";for(let m=0;m=0 && xR < inDims[0]) {\n ";for(let m=0;m<(h+1)/2;m++){const x=2*m;if(d+=`\n xC = xCCorner + ${x*l};\n `,1===o){if(x= 0 && xCOffset < inDims[1] && xTexelC${x}Ready == 0) {\n xTexelC${x} = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${x}.zw = vec2(0.0);\n }\n xTexelC${x}Ready = 1;\n }\n `,d+=1===l&&x>0?`\n xC${x} = vec4(xTexelC${x-2}.zw, xTexelC${x}.xy);\n `:`\n xCOffset = xC + 1 - 2;\n\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n previous.zw = vec2(0.0);\n }\n\n xC${x} = vec4(previous.zw, xTexelC${x}.xy);\n } else {\n xC${x} = vec4(0.0, 0.0, xTexelC${x}.xy);\n }\n `):d+=`\n if (xC >= 0 && xC < inDims[1] && xTexelC${x}Ready == 0) {\n xTexelC${x} = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC${x}.zw = vec2(0.0);\n }\n xTexelC${x}Ready = 1;\n }\n\n xC${x} = xTexelC${x};\n `,x+1= 0 && xCOffset < inDims[1] && xTexelC${x+1}Ready == 0) {\n xTexelC${x+1} = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${x+1}.zw = vec2(0.0);\n }\n xTexelC${x+1}Ready = 1;\n }\n `,d+=l>1?`\n xCOffset -= 2;\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n xC${x+1} = vec4(previous.zw, xTexelC${x+1}.xy);\n } else {\n xC${x+1} = vec4(0.0, 0.0, xTexelC${x+1}.xy);\n }\n `:`\n xC${x+1} = vec4(xTexelC${x}.zw, xTexelC${x+1}.xy);\n `):d+=1===y?`\n xC${x+1} = xTexelC${x};\n `:`\n xCOffset = xC + ${y};\n\n if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${x+1}Ready == 0) {\n xTexelC${x+1} = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${x+1}.zw = vec2(0.0);\n }\n xTexelC${x+1}Ready = 1;\n }\n\n xC${x+1} = xTexelC${x+1};\n `}}else x= 0 && xCOffset < inDims[1] && xTexelC${x}Ready == 0) {\n xTexelC${x} = getX(batch, xR, xCOffset, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${x}.zw = vec2(0.0);\n }\n xTexelC${x}Ready = 1;\n }\n\n if(xC + 1 >= 0 && xC + 1 < inDims[1] && xTexelC${x+1}Ready == 0) {\n xTexelC${x+1} = getX(batch, xR, xC + 1, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xC + 2 >= inDims[1]) {\n xTexelC${x+1}.zw = vec2(0.0);\n }\n xTexelC${x+1}Ready = 1;\n }\n\n xC${x} = vec4(xTexelC${x}.zw, xTexelC${x+1}.zw);\n `,x+1= 0 && xCOffset < inDims[1]) {\n final = getX(batch, xR, xCOffset, d1);\n }\n xC${x+1} = vec4(xTexelC${x+1}.xy, final.xy);\n `)):(d+=`\n if(xC >= 0 && xC < inDims[1] && xTexelC${x}Ready == 0) {\n xTexelC${x} = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC${x}.zw = vec2(0.0);\n }\n xTexelC${x}Ready = 1;\n }\n\n xCOffset = xC + strides[1];\n if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${x+1}Ready == 0) {\n xTexelC${x+1} = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${x+1}.zw = vec2(0.);\n }\n xTexelC${x+1}Ready = 1;\n }\n\n xC${x} = vec4(\n xTexelC${x}.xy, xTexelC${x+1}.xy);\n `,x+1= 0) {\n // Use custom imod instead mod. On Intel GPU, mod may generate\n // unexpected value.\n // https://github.com/tensorflow/tfjs/issues/5447\n offsetX = imod(blockIndex, outWidth) * stride[1] - pad[1];\n d1 = offsetX + dilation[1] * (imod(pos, itemsPerBlockRow) /\n inChannels);\n\n if(d1 < inputShape[${o}] && d1 >= 0) {\n\n ch = imod(pos, inChannels);\n\n if (${i}) {\n innerDims = vec2(d1, ch);\n result[${2*c+h}] = getChannel(\n getA(rc.x, d0, int(innerDims.x),\n int(innerDims.y)), innerDims);\n } else {\n innerDims = vec2(d0, d1);\n result[${2*c+h}] = getChannel(\n getA(rc.x, ch, int(innerDims.x),\n int(innerDims.y)), innerDims);\n }\n }\n }\n }\n `;this.userCode=`\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0);\n\n int blockIndex, pos, offsetY, d0, offsetX, d1, ch;\n vec2 innerDims;\n\n ${u}\n\n ${r.output} = result;\n }\n `}}function Dh(n,t){const e=n.length;return e>=3?t?[...n.slice(0,-3),n[e-3]*n[e-2],n[e-1]]:[...n.slice(0,-3),n[e-3],n[e-2]*n[e-1]]:!t&&1===e&&n[0]>1?[n[0],1]:null}function FT({x:n,filter:t,convInfo:e,backend:s,bias:r=null,preluActivationWeights:i=null,leakyreluAlpha:a=0,activation:o=null}){const l=n.shape,u=s.texData.get(n.dataId),c=e.inChannels,h=l[0]*l[1]*l[2],d=e.outChannels,p="channelsLast"===e.dataFormat,g=!1;let m;const x=[];if(null!=i){const v=Dh(i.shape,p);null!=v&&(i=Ne({inputs:{x:i},backend:s,attrs:{shape:v}}),x.push(i))}if(null!=r){const v=Dh(r.shape,p);null!=v&&(r=Ne({inputs:{x:r},backend:s,attrs:{shape:v}}),x.push(r))}if((1!==h&&1!==d||!(c>1e3))&&u.isPacked&&p&&null!=u.texture&&l[2]%2!=0&&rt(u.shape.slice(-3),l.slice(-3))){const w={dataId:n.dataId,shape:[1,l[0]*l[1]*(l[2]+1),e.inChannels],dtype:n.dtype},S=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,T(wh(u.shape,w.shape),()=>`packed reshape ${u.shape} to ${w.shape} isn't free`);const I=Ne({inputs:{x:t},backend:s,attrs:{shape:[1,e.inChannels,e.outChannels]}});x.push(I);const k=Nh({a:w,b:I,backend:s,transposeA:!1,transposeB:g,bias:r,activation:o,preluActivationWeights:i,leakyreluAlpha:a}),D=s.texData.get(k.dataId);T(D.isPacked,()=>"batchMatMul result is expected to be packed"),u.shape=S,D.shape=e.outShape,m=hs({inputs:{x:k},backend:s}),m.shape=e.outShape,x.push(k)}else{const v=e.outHeight*e.outWidth,w=Ne({inputs:{x:n},backend:s,attrs:{shape:p?[e.batchSize,v,e.inChannels]:[e.batchSize,e.inChannels,v]}}),S=Ne({inputs:{x:t},backend:s,attrs:{shape:[1,e.inChannels,e.outChannels]}}),I=Nh({a:p?w:S,b:p?S:w,transposeA:!p,transposeB:g,backend:s,bias:r,activation:o,preluActivationWeights:i,leakyreluAlpha:a});m=Ne({inputs:{x:I},backend:s,attrs:{shape:e.outShape}}),x.push(w),x.push(S),x.push(I)}for(const v of x)s.disposeIntermediateTensorInfo(v);return m}function LT({x:n,filter:t,convInfo:e,backend:s,bias:r=null,preluActivationWeights:i=null,leakyreluAlpha:a=0,activation:o=null}){const{filterWidth:l,filterHeight:u,inChannels:c,outWidth:h,outHeight:d,dataFormat:p}=e,f="channelsLast"===p,g=l*u*c,m=d*h,x=[e.batchSize,g,m],v=[];if(null!=i){const te=Dh(i.shape,f);null!=te&&(i=Ne({inputs:{x:i},backend:s,attrs:{shape:te}}),v.push(i))}if(null!=r){const te=Dh(r.shape,f);null!=te&&(r=Ne({inputs:{x:r},backend:s,attrs:{shape:te}}),v.push(r))}const w=Ne({inputs:{x:t},backend:s,attrs:{shape:[1,g,K(t.shape)/g]}});v.push(w);const S=new BG(x,e),k=s.runWebGLProgram(S,[n],"float32",[n.shape,[e.padInfo.top,e.padInfo.left],[e.strideHeight,e.strideWidth],[e.dilationHeight,e.dilationWidth],[e.inChannels],[e.filterWidth*e.inChannels],[e.outWidth]]),D=Ne({inputs:{x:k},backend:s,attrs:{shape:x}});v.push(k),v.push(D);const P=null!=r,B=null!=i,Y="leakyrelu"===o,Q=o?Pl(o,!0):null,ee=new bT(f?D.shape:w.shape,f?w.shape:D.shape,f?[e.batchSize,m,e.outChannels]:[e.batchSize,e.outChannels,m],!0,!1,P,Q,B,Y),J=f?[D,w]:[w,D];if(r&&J.push(r),B&&J.push(i),Y){const te=s.makeTensorInfo([],"float32",Br(a,"float32"));J.push(te),v.push(te)}const se=s.runWebGLProgram(ee,J,"float32"),ae=Ne({inputs:{x:se},backend:s,attrs:{shape:e.outShape}});v.push(se);for(const te of v)s.disposeIntermediateTensorInfo(te);return ae}const WG={kernelName:nu,backendName:"webgl",kernelFunc:function UG(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,filter:i}=t,{strides:a,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=s,h=Sr(l),d=Nn(r.shape,i.shape,a,u,o,c,!1,h);let p;if(1!==d.filterHeight||1!==d.filterWidth||1!==d.dilationHeight||1!==d.dilationWidth||1!==d.strideHeight||1!==d.strideWidth||"SAME"!==d.padInfo.type&&"VALID"!==d.padInfo.type)if(d.strideWidth<=2&&"channelsLast"===h&&E().getBool("WEBGL_EXP_CONV")){const g=new PT(d);p=e.runWebGLProgram(g,[r,i],"float32",[[d.padInfo.top,d.padInfo.left],[d.strideHeight,d.strideWidth],[d.dilationHeight,d.dilationWidth],[d.inHeight,d.inWidth]])}else if(E().getBool("WEBGL_CONV_IM2COL"))p=LT({x:r,filter:i,convInfo:d,backend:e});else{const g=new OT(d);p=e.runWebGLProgram(g,[r,i],"float32")}else p=FT({x:r,filter:i,convInfo:d,backend:e});const f=Ne({inputs:{x:p},backend:e,attrs:{shape:d.outShape}});return e.disposeIntermediateTensorInfo(p),f}};class GG{constructor(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape,this.userCode=`\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int d2 = coords.w;\n\n // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int b = 0; b < ${t.batchSize}; b++) {\n for (int yR = 0; yR < ${t.outHeight}; yR++) {\n int xR = wR + yR * ${t.strideHeight} - ${t.padInfo.top};\n\n if (xR < 0 || xR >= ${t.inHeight}) {\n continue;\n }\n\n for (int yC = 0; yC < ${t.outWidth}; yC++) {\n int xC = wC + yC * ${t.strideWidth} - ${t.padInfo.left};\n\n if (xC < 0 || xC >= ${t.inWidth}) {\n continue;\n }\n\n ${"channelsLast"===t.dataFormat?"float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);":"float dyValue = getDy(b, d2, yR, yC);\n float xValue = getX(b, d1, xR, xC);\n dotProd += (xValue * dyValue);"}\n }\n }\n }\n setOutput(dotProd);\n }\n `}}class HG{constructor(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;const e=t.filterHeight,s=t.filterWidth,a="channelsLast"===t.dataFormat;this.userCode=`\n const ivec2 pads = ivec2(${e-1-t.padInfo.top}, ${s-1-t.padInfo.left});\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[${a?3:1}];\n\n ivec2 dyCorner = ivec2(coords[${a?1:2}], coords[${a?2:3}]) - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ${e}; wR++) {\n float dyR = float(dyRCorner + wR) / ${t.strideHeight}.0;\n\n if (dyR < 0.0 || dyR >= ${t.outHeight}.0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = ${e} - 1 - wR;\n\n for (int wC = 0; wC < ${s}; wC++) {\n float dyC = float(dyCCorner + wC) / ${t.strideWidth}.0;\n\n if (dyC < 0.0 || dyC >= ${t.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = ${s} - 1 - wC;\n\n for (int d2 = 0; d2 < ${t.outChannels}; d2++) {\n\n if (${a}) {\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n } else {\n float xValue = getDy(batch, d2, idyR, idyC);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n `}}class jG{constructor(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape,this.userCode=`\n void main() {\n ivec5 coords = getOutputCoords();\n int wF = coords.x;\n int wR = coords.y;\n int wC = coords.z;\n int d1 = coords.w;\n int d2 = coords.u;\n\n float dotProd = 0.0;\n\n for (int b = 0; b < ${t.batchSize}; b++) {\n for (int yF = 0; yF < ${t.outDepth}; yF++) {\n int xF = wF + yF * ${t.strideDepth} - ${t.padInfo.front};\n\n if (xF < 0 || xF >= ${t.inDepth}) {\n continue;\n }\n\n for (int yR = 0; yR < ${t.outHeight}; yR++) {\n int xR = wR + yR * ${t.strideHeight} - ${t.padInfo.top};\n\n if (xR < 0 || xR >= ${t.inHeight}) {\n continue;\n }\n\n for (int yC = 0; yC < ${t.outWidth}; yC++) {\n int xC = wC + yC * ${t.strideWidth} - ${t.padInfo.left};\n\n if (xC < 0 || xC >= ${t.inWidth}) {\n continue;\n }\n\n float dyValue = getDy(b, yF, yR, yC, d2);\n float xValue = getX(b, xF, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n `}}class XG{constructor(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;const e=t.filterDepth,s=t.filterHeight,r=t.filterWidth;this.userCode=`\n const ivec3 pads = ivec3(${e-1-t.padInfo.front}, ${s-1-t.padInfo.top}, ${r-1-t.padInfo.left});\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d1 = coords.u;\n\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyFCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n float dotProd = 0.0;\n for (int wF = 0; wF < ${e}; wF++) {\n float dyF = float(dyFCorner + wF) / ${t.strideDepth}.0;\n\n if (dyF < 0.0 || dyF >= ${t.outDepth}.0 || fract(dyF) > 0.0) {\n continue;\n }\n int idyF = int(dyF);\n\n int wFPerm = ${e} - 1 - wF;\n\n for (int wR = 0; wR < ${s}; wR++) {\n float dyR = float(dyRCorner + wR) / ${t.strideHeight}.0;\n\n if (dyR < 0.0 || dyR >= ${t.outHeight}.0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = ${s} - 1 - wR;\n\n for (int wC = 0; wC < ${r}; wC++) {\n float dyC = float(dyCCorner + wC) / ${t.strideWidth}.0;\n\n if (dyC < 0.0 || dyC >= ${t.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = ${r} - 1 - wC;\n\n for (int d2 = 0; d2 < ${t.outChannels}; d2++) {\n float xValue = getDy(batch, idyF, idyR, idyC, d2);\n float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n }\n setOutput(dotProd);\n }\n `}}const qG={kernelName:ld,backendName:"webgl",kernelFunc:function KG(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,dy:i}=t,{strides:a,pad:o,dataFormat:l,dimRoundingMode:u,filterShape:c}=s,h=Sr(l),d=Nn(r.shape,c,a,1,o,u,!1,h),p=new GG(d);return e.runWebGLProgram(p,[r,i],"float32")}};class ZG{constructor(t){this.variableNames=["dy","W"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"strides",type:"vec2"}],this.outputShape=t.inShape,this.enableShapeUniforms=Hn(this.outputShape.length);const e=t.filterHeight,s=t.filterWidth;this.userCode=`\n const ivec2 pads = ivec2(${e-1-t.padInfo.top}, ${s-1-t.padInfo.left});\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n\n ivec2 dyCorner = ivec2(coords[1], coords[2]) - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n vec4 result = vec4(0.);\n for (int wR = 0; wR < ${e}; wR++) {\n float dyR = float(dyRCorner + wR) / strides[0];\n if (dyR < 0.0 || dyR >= ${t.outHeight}.0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n int wRPerm = ${e} - 1 - wR;\n\n for (int wC = 0; wC < ${s}; wC++) {\n int wCPerm = ${s} - 1 - wC;\n\n float dyC = float(dyCCorner + wC) / strides[1];\n bool idyCVal = (dyC >= 0.0) && (dyC < ${t.outWidth}.0)\n && (fract(dyC) == 0.0);\n int idyC = int(dyC);\n\n float dyC2 = float(dyCCorner + wC + 1) / strides[1];\n bool idyCVal2 = (dyC2 >= 0.0) && (dyC2 < ${t.outWidth}.0)\n && (fract(dyC2) == 0.0);\n int idyC2 = int(dyC2);\n\n if (idyCVal && idyCVal2) {\n for (int d2 = 0; d2 < ${t.outChannels}; d2 += 2) {\n vec4 wValue = getW(wRPerm, wCPerm, d1, d2);\n vec4 dySample = getDy(batch, idyR, idyC, d2);\n vec4 dySample2 = (idyC / 2 == idyC2 / 2) ?\n dySample : getDy(batch, idyR, idyC2, d2);\n\n vec2 dyValue = mod(float(idyC), 2.) == 0. ?\n dySample.xy : dySample.zw;\n result.xy += vec2(dot(dyValue, wValue.xy),\n dot(dyValue, wValue.zw));\n\n dyValue = mod(float(idyC2), 2.) == 0. ?\n dySample2.xy : dySample2.zw;\n result.zw += vec2(dot(dyValue, wValue.xy),\n dot(dyValue, wValue.zw));\n }\n } else if (idyCVal) {\n for (int d2 = 0; d2 < ${t.outChannels}; d2 += 2) {\n vec4 wValue = getW(wRPerm, wCPerm, d1, d2);\n vec4 dySample = getDy(batch, idyR, idyC, d2);\n vec2 dyValue = mod(float(idyC), 2.) == 0. ?\n dySample.xy : dySample.zw;\n result.xy += vec2(dot(dyValue, wValue.xy),\n dot(dyValue, wValue.zw));\n }\n } else if (idyCVal2) {\n for (int d2 = 0; d2 < ${t.outChannels}; d2 += 2) {\n vec4 wValue = getW(wRPerm, wCPerm, d1, d2);\n vec4 dySample = getDy(batch, idyR, idyC2, d2);\n vec2 dyValue = mod(float(idyC2), 2.) == 0. ?\n dySample.xy : dySample.zw;\n result.zw += vec2(dot(dyValue, wValue.xy),\n dot(dyValue, wValue.zw));\n }\n }\n }\n }\n setOutput(result);\n }\n `}}const QG={kernelName:su,backendName:"webgl",kernelFunc:function YG(n){const{inputs:t,backend:e,attrs:s}=n,{dy:r,filter:i}=t,{inputShape:a,strides:o,pad:l,dataFormat:u,dimRoundingMode:c}=s,h=Sr(u),d=Nn(a,i.shape,o,1,l,c,!1,h);if(E().getBool("WEBGL_PACK_CONV2DTRANSPOSE")&&"channelsLast"===h){const p=[[d.strideHeight,d.strideWidth]],f=new ZG(d);return e.runWebGLProgram(f,[r,i],"float32",p)}{const p=new HG(d);return e.runWebGLProgram(p,[r,i],"float32")}}},eH={kernelName:ru,backendName:"webgl",kernelFunc:function JG(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,filter:i}=t,{strides:a,pad:o,dilations:l}=s,u=qr(r.shape,i.shape,a,l,o),c=new zG(u);return e.runWebGLProgram(c,[r,i],"float32")}},nH={kernelName:ud,backendName:"webgl",kernelFunc:function tH(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,dy:i}=t,{strides:a,pad:o,filterShape:l}=s,u=qr(r.shape,l,a,1,o),c=new jG(u);return e.runWebGLProgram(c,[r,i],"float32")}},rH={kernelName:cd,backendName:"webgl",kernelFunc:function sH(n){const{inputs:t,backend:e,attrs:s}=n,{dy:r,filter:i}=t,{pad:a,strides:o,inputShape:l}=s,u=qr(l,i.shape,o,1,a),c=new XG(u);return e.runWebGLProgram(c,[r,i],"float32")}},oH=Nt({opSnippet:Ua+"\n return cos(x);\n",packedOpSnippet:`\n vec4 result = cos(x);\n bvec4 isNaN = isnan(x);\n ${Qi}\n return result;\n`}),lH={kernelName:oo,backendName:"webgl",kernelFunc:oH},uH=Nt({opSnippet:"\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n"}),cH={kernelName:lo,backendName:"webgl",kernelFunc:uH};class hH{constructor(t,e,s,r,i){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];const[a,o,l,u]=t,[c]=e,[h,d]=s;this.outputShape=[c,h,d,u];const p="bilinear"===r?1:0,[f,g]=[o-1+".0",l-1+".0"],[m,x,y]=h>1?[""+(o-1)/(h-1),"(y2-y1) * height_ratio",`y1*${f} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${f}`],[b,v,w]=d>1?[""+(l-1)/(d-1),"(x2-x1) * width_ratio",`x1*${g} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${g}`];this.userCode=`\n const float height_ratio = float(${m});\n const float width_ratio = float(${b});\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int y = coords[1];\n int x = coords[2];\n int d = coords[3];\n\n // get box vals\n float y1 = getBoxes(b,0);\n float x1 = getBoxes(b,1);\n float y2 = getBoxes(b,2);\n float x2 = getBoxes(b,3);\n\n // get image in batch index\n int bInd = round(getBoxInd(b));\n if(bInd < 0 || bInd >= ${a}) {\n return;\n }\n\n float height_scale = ${x};\n float width_scale = ${v};\n\n float in_y = ${y};\n if( in_y < 0.0 || in_y > ${f} ) {\n setOutput(float(${i}));\n return;\n }\n float in_x = ${w};\n if( in_x < 0.0 || in_x > ${g} ) {\n setOutput(float(${i}));\n return;\n }\n\n vec2 sourceFracIndexCR = vec2(in_x,in_y);\n if(${p} == 1) {\n // Compute the four integer indices.\n ivec2 sourceFloorCR = ivec2(sourceFracIndexCR);\n ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR));\n\n float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d);\n float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d);\n float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d);\n float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d);\n\n vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR);\n\n float top = topLeft + (topRight - topLeft) * fracCR.x;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;\n float newValue = top + (bottom - top) * fracCR.y;\n setOutput(newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestCR = ivec2(floor(\n sourceFracIndexCR + vec2(0.5,0.5)));\n float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d);\n setOutput(newValue);\n }\n }\n `}}const dH={kernelName:dd,backendName:"webgl",kernelFunc:n=>{const{inputs:t,backend:e,attrs:s}=n,{image:r,boxes:i,boxInd:a}=t,{cropSize:o,method:l,extrapolationValue:u}=s,c=new hH(r.shape,i.shape,o,l,u);return e.runWebGLProgram(c,[r,i,a],"float32")}};var Oh=function(n){return n.Prod="*",n.Sum="+",n}(Oh||{});class MT{constructor(t,e,s,r){this.op=t,this.outputShape=e,this.variableNames=["x"],this.customUniforms=[{name:"index",type:"float"}];const i=this.outputShape.length,o=s?this.op===Oh.Prod?"1.0":"0.0":`getX(${VT(i,"coords",this.op)})`,l=this.outputShape[this.outputShape.length-1];let u="",c="";s?(u=r?"end != "+(l-1):"end != 0",c=r?"end + 1":"end - 1"):(u=r?`end + pow2 < ${l}`:"end >= pow2",c=r?"end + pow2":"end - pow2"),this.userCode=`\n void main() {\n ${Ut(i)} coords = getOutputCoords();\n int end = ${zT(i,"coords",this.op)};\n float val = ${o};\n int pow2 = int(pow(2.0, index));\n if (${u}) {\n int idx = ${c};\n ${zT(i,"coords",this.op)} = idx;\n val ${this.op}= getX(${VT(i,"coords",this.op)});\n }\n setOutput(val);\n }\n `}}function VT(n,t,e){if(1===n)return`${t}`;if(2===n)return`${t}.x, ${t}.y`;if(3===n)return`${t}.x, ${t}.y, ${t}.z`;if(4===n)return`${t}.x, ${t}.y, ${t}.z, ${t}.w`;throw new Error(`Cumulative ${e} for rank ${n} is not yet supported`)}function zT(n,t,e){if(1===n)return`${t}`;if(2===n)return`${t}.y`;if(3===n)return`${t}.z`;if(4===n)return`${t}.w`;throw new Error(`Cumulative ${e} for rank ${n} is not yet supported`)}function BT(n,t,e,s,r,i){const a=t.shape.length,o=rn([s],a);let l=t;null!=o&&(l=es({inputs:{x:t},backend:e,attrs:{perm:o}}));const u=dn(1,a)[0];if(u!==a-1)throw new Error(`WebGL cumprod shader expects an inner-most axis=${t.shape.length-1} but got axis=${s}`);const c=l.shape[u];let h=hs({inputs:{x:l},backend:e});for(let d=0;d<=Math.ceil(Math.log2(c))-1;d++){const p=new MT(n,l.shape,!1,i),g=h;h=e.runWebGLProgram(p,[h],h.dtype,[[d]]),e.disposeIntermediateTensorInfo(g)}if(r){const d=new MT(n,l.shape,r,i),p=h;h=e.runWebGLProgram(d,[h],h.dtype),e.disposeIntermediateTensorInfo(p)}if(null!=o){const p=es({inputs:{x:h},backend:e,attrs:{perm:Yr(o)}});return e.disposeIntermediateTensorInfo(h),e.disposeIntermediateTensorInfo(l),p}return h}const fH={kernelName:hd,backendName:"webgl",kernelFunc:function pH(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{axis:i,exclusive:a,reverse:o}=s;return BT(Oh.Prod,r,e,i,a,o)}},gH={kernelName:iu,backendName:"webgl",kernelFunc:function mH(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{axis:i,exclusive:a,reverse:o}=s;return BT(Oh.Sum,r,e,i,a,o)}},yH={kernelName:pd,backendName:"webgl",kernelFunc:function xH(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,weights:i}=t,{size:a,binaryOutput:o}=s;if(1===r.shape.length){const l=e.readSync(r.dataId),u=e.readSync(i.dataId),c=aT(l,u,i.dtype,i.shape,a);return e.makeTensorInfo([a],i.dtype,c)}if(2===r.shape.length){const l=e.bufferSync(r),u=e.bufferSync(i),c=TU(l,u,a,o);return e.makeTensorInfo(c.shape,i.dtype,c.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${r.shape.length}.`)}};class bH{constructor(t,e,s){this.variableNames=["x"],this.outputShape=[],this.outputShape=t,this.blockSize=e,this.dataFormat=s,this.userCode=`\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = ${this.getHeightCoordString()};\n int w = ${this.getWidthCoordString()};\n int d = ${this.getDepthCoordString()};\n\n int in_h = h / ${e};\n int offset_h = imod(h, ${e});\n int in_w = w / ${e};\n int offset_w = imod(w, ${e});\n int offset_d = (offset_h * ${e} + offset_w) *\n ${this.getOutputDepthSize()};\n int in_d = d + offset_d;\n\n float result = ${this.getInputSamplingString()};\n setOutput(result);\n }\n `}getHeightCoordString(){return"NHWC"===this.dataFormat?"coords[1]":"coords[2]"}getWidthCoordString(){return"NHWC"===this.dataFormat?"coords[2]":"coords[3]"}getDepthCoordString(){return"NHWC"===this.dataFormat?"coords[3]":"coords[1]"}getOutputDepthSize(){return"NHWC"===this.dataFormat?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return"NHWC"===this.dataFormat?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}}const wH={kernelName:fd,backendName:"webgl",kernelFunc:function vH(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{blockSize:i,dataFormat:a}=s,o=r.shape[0],h=("NHWC"===a?r.shape[1]:r.shape[2])*i,d=("NHWC"===a?r.shape[2]:r.shape[3])*i,p=("NHWC"===a?r.shape[3]:r.shape[1])/(i*i),g=new bH("NHWC"===a?[o,h,d,p]:[o,p,h,d],i,a);return e.runWebGLProgram(g,[r],r.dtype)}};class UT{constructor(t,e=!1,s=null,r=!1,i=!1){this.variableNames=["x","W"],this.customUniforms=[{name:"pads",type:"ivec2"},{name:"strides",type:"ivec2"},{name:"dilations",type:"ivec2"},{name:"inDims",type:"ivec2"}],this.outputShape=t.outShape,this.enableShapeUniforms=Hn(this.outputShape.length);const a=t.filterHeight,o=t.filterWidth,l=t.outChannels/t.inChannels;let u="",c="";s&&(u=r?`float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n ${s}\n }`:i?`float activation(float a) {\n float b = getLeakyreluAlphaAtOutCoords();\n ${s}\n }`:`\n float activation(float x) {\n ${s}\n }\n `,c="result = activation(result);");const h=e?"result += getBiasAtOutCoords();":"";e&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),i&&this.variableNames.push("leakyreluAlpha"),this.userCode=`\n ${u}\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / ${l};\n int q = d2 - d1 * ${l};\n\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations.\n for (int wR = 0; wR < ${a}; wR++) {\n int xR = xRCorner + wR * dilations[0];\n\n if (xR < 0 || xR >= inDims[0]) {\n continue;\n }\n\n for (int wC = 0; wC < ${o}; wC++) {\n int xC = xCCorner + wC * dilations[1];\n\n if (xC < 0 || xC >= inDims[1]) {\n continue;\n }\n\n float xVal = getX(batch, xR, xC, d1);\n float wVal = getW(wR, wC, d1, q);\n dotProd += xVal * wVal;\n }\n }\n\n float result = dotProd;\n ${h}\n ${c}\n setOutput(result);\n }\n `}}class WT{constructor(t,e=!1,s=null,r=!1,i=!1){this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"pads",type:"ivec2"},{name:"strides",type:"ivec2"},{name:"dilations",type:"ivec2"},{name:"inDims",type:"ivec2"}],this.outputShape=t.outShape,this.enableShapeUniforms=Hn(this.outputShape.length);const a=t.outChannels/t.inChannels,o=t.padInfo.left,l=t.strideWidth,u=t.dilationWidth,c=t.filterHeight,h=t.filterWidth,d=h;let p="\n int xR; int xC; int xCOffset;\n vec4 wTexel; vec4 previous; vec4 final;";for(let x=0;x=0 && xR < inDims[0]) {\n ";for(let x=0;x<(d+1)/2;x++){const y=2*x;if(p+=`\n xC = xCCorner + ${y*u};\n `,1===l){if(y= 0 && xCOffset < inDims[1] && xTexelC${y}Ready == 0) {\n xTexelC${y} = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${y}.zw = vec2(0.0);\n }\n xTexelC${y}Ready = 1;\n }\n `,p+=1===u&&y>0?`\n xC${y} = vec4(xTexelC${y-2}.zw, xTexelC${y}.xy);\n `:`\n xCOffset = xC + 1 - 2;\n\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n previous.zw = vec2(0.0);\n }\n\n xC${y} = vec4(previous.zw, xTexelC${y}.xy);\n } else {\n xC${y} = vec4(0.0, 0.0, xTexelC${y}.xy);\n }\n `):p+=`\n if (xC >= 0 && xC < inDims[1] && xTexelC${y}Ready == 0) {\n xTexelC${y} = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC${y}.zw = vec2(0.0);\n }\n xTexelC${y}Ready = 1;\n }\n\n xC${y} = xTexelC${y};\n `,y+1= 0 && xCOffset < inDims[1] && xTexelC${y+1}Ready == 0) {\n xTexelC${y+1} = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${y+1}.zw = vec2(0.0);\n }\n xTexelC${y+1}Ready = 1;\n }\n `,p+=u>1?`\n xCOffset -= 2;\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n xC${y+1} = vec4(previous.zw, xTexelC${y+1}.xy);\n } else {\n xC${y+1} = vec4(0.0, 0.0, xTexelC${y+1}.xy);\n }\n `:`\n xC${y+1} = vec4(xTexelC${y}.zw, xTexelC${y+1}.xy);\n `):p+=1===b?`\n xC${y+1} = xTexelC${y};\n `:`\n xCOffset = xC + ${b};\n\n if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${y+1}Ready == 0) {\n xTexelC${y+1} = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${y+1}.zw = vec2(0.0);\n }\n xTexelC${y+1}Ready = 1;\n }\n\n xC${y+1} = xTexelC${y+1};\n `}}else y= 0 && xCOffset < inDims[1] && xTexelC${y}Ready == 0) {\n xTexelC${y} = getX(batch, xR, xCOffset, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${y}.zw = vec2(0.0);\n }\n xTexelC${y}Ready = 1;\n }\n\n if(xC + 1 >= 0 && xC + 1 < inDims[1] && xTexelC${y+1}Ready == 0) {\n xTexelC${y+1} = getX(batch, xR, xC + 1, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xC + 2 >= inDims[1]) {\n xTexelC${y+1}.zw = vec2(0.0);\n }\n xTexelC${y+1}Ready = 1;\n }\n\n xC${y} = vec4(xTexelC${y}.zw, xTexelC${y+1}.zw);\n `,y+1= 0 && xCOffset < inDims[1]) {\n final = getX(batch, xR, xCOffset, d1);\n }\n xC${y+1} = vec4(xTexelC${y+1}.xy, final.xy);\n `)):(p+=`\n if(xC >= 0 && xC < inDims[1] && xTexelC${y}Ready == 0) {\n xTexelC${y} = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC${y}.zw = vec2(0.0);\n }\n xTexelC${y}Ready = 1;\n }\n\n xCOffset = xC + strides[1];\n if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${y+1}Ready == 0) {\n xTexelC${y+1} = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${y+1}.zw = vec2(0.);\n }\n xTexelC${y+1}Ready = 1;\n }\n\n xC${y} = vec4(\n xTexelC${y}.xy, xTexelC${y+1}.xy);\n `,y+1`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${a} and dilations '${c}'`);const h=Nn(r.shape,i.shape,a,c,o,u,!0);let d;return d=E().getBool("WEBGL_PACK_DEPTHWISECONV")&&h.strideWidth<=2&&h.outChannels/h.inChannels==1?new WT(h):new UT(h),e.runWebGLProgram(d,[r,i],"float32",[[h.padInfo.top,h.padInfo.left],[h.strideHeight,h.strideWidth],[h.dilationHeight,h.dilationWidth],[h.inHeight,h.inWidth]])}};class SH{constructor(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape,this.userCode=`\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int dm = coords.w;\n int d2 = d1 * ${t.outChannels/t.inChannels} + dm;\n\n float dotProd = 0.0;\n\n // TO DO: Vec4 over the batch size\n for (int b = 0; b < ${t.batchSize}; b++) {\n for (int yR = 0; yR < ${t.outHeight}; yR++) {\n int xR = wR + yR * ${t.strideHeight} - ${t.padInfo.top};\n\n if (xR < 0 || xR >= ${t.inHeight}) {\n continue;\n }\n\n for (int yC = 0; yC < ${t.outWidth}; yC++) {\n int xC = wC + yC * ${t.strideWidth} - ${t.padInfo.left};\n\n if (xC < 0 || xC >= ${t.inWidth}) {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n `}}class CH{constructor(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;const e=t.filterHeight,s=t.filterWidth,l=t.outChannels/t.inChannels;this.userCode=`\n const ivec2 pads = ivec2(${e-1-t.padInfo.top}, ${s-1-t.padInfo.left});\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n float dotProd = 0.0;\n\n for (int wR = 0; wR < ${e}; wR++) {\n float dyR = float(dyRCorner + wR) / ${t.strideHeight}.0;\n\n if (dyR < 0.0 || dyR >= ${t.outHeight}.0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = ${e} - 1 - wR;\n\n for (int wC = 0; wC < ${s}; wC++) {\n float dyC = float(dyCCorner + wC) / ${t.strideWidth}.0;\n\n if (dyC < 0.0 || dyC >= ${t.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = ${s} - 1 - wC;\n\n // TO DO: Vec4 over the channelMul\n for (int dm = 0; dm < ${l}; dm++) {\n int d2 = d1 * ${l} + dm;\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, dm);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n `}}const EH={kernelName:md,backendName:"webgl",kernelFunc:function IH(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,dy:i}=t,{strides:a,dilations:o,pad:l,dimRoundingMode:u,filterShape:c}=s,h=Nn(r.shape,c,a,o,l,u,!0),d=new SH(h);return e.runWebGLProgram(d,[r,i],"float32")}},NH={kernelName:gd,backendName:"webgl",kernelFunc:function kH(n){const{inputs:t,backend:e,attrs:s}=n,{dy:r,filter:i}=t,{strides:a,dilations:o,pad:l,dimRoundingMode:u,inputShape:c}=s,h=Nn(c,i.shape,a,o,l,u,!0),d=new CH(h);return e.runWebGLProgram(d,[r,i],"float32")}};class AH{constructor(t){this.variableNames=["X"],this.outputShape=[t,t],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0;\n setOutput(val);\n }\n "}}const $H={kernelName:"Diag",backendName:"webgl",kernelFunc:function RH(n){const{inputs:t,backend:e}=n,{x:s}=t,r=[...s.shape,...s.shape],i=K(s.shape),a=Ne({inputs:{x:s},backend:e,attrs:{shape:[i]}}),o=new AH(i),l=e.runWebGLProgram(o,[a],a.dtype),u=Ne({inputs:{x:l},backend:e,attrs:{shape:r}});return e.disposeIntermediateTensorInfo(a),e.disposeIntermediateTensorInfo(l),u}};class DH{constructor(t){this.variableNames=["x","W"],this.outputShape=t.outShape;const{inHeight:e,inWidth:s,padInfo:r,strideHeight:i,strideWidth:a,filterHeight:o,filterWidth:l,dilationHeight:u,dilationWidth:c}=t,{top:h,left:d}=r;this.userCode=`\n const ivec2 strides = ivec2(${i}, ${a});\n const ivec2 pads = ivec2(${h}, ${d});\n const float neg_infinity = -3.4e38;\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n int d1 = coords.w;\n ivec2 outTopLeftCorner =\n coords.yz * strides - pads;\n int hBeg = outTopLeftCorner.x;\n int wBeg = outTopLeftCorner.y;\n\n float curVal = neg_infinity;\n for (int h = 0; h < ${o}; h++) {\n int hIn = hBeg + h * ${u};\n\n if (hIn >= 0 && hIn < ${e}) {\n for (int w = 0; w < ${l}; w++) {\n int wIn = wBeg + w * ${c};\n\n if (wIn >= 0 && wIn < ${s}) {\n float xVal = getX(batch, hIn, wIn, d1);\n float wVal = getW(h, w, d1);\n\n float val = xVal + wVal;\n if (val > curVal) {\n curVal = val;\n }\n }\n }\n }\n }\n\n float result = curVal;\n setOutput(result);\n }\n `}}const PH={kernelName:ou,backendName:"webgl",kernelFunc:function OH(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,filter:i}=t,{strides:a,pad:o,dilations:l}=s,u=tl(r.shape,i.shape,a,o,"NHWC",l);let c;const h=new DH(u);c=e.runWebGLProgram(h,[r,i],"float32");const d=Ne({inputs:{x:c},backend:e,attrs:{shape:u.outShape}});return e.disposeIntermediateTensorInfo(c),d}},LH={kernelName:vd,backendName:"webgl",kernelFunc:function FH(n){const{inputs:t,backend:e,attrs:s}=n,{equation:r}=s,i=t,{allDims:a,summedDims:o,idDims:l}=Ef(r,i.length);Nf(a.length,l,i);const{path:u,steps:c}=Af(o,l),h=c.length;let d=null,p=a.length;const f=[];for(let g=0;g=0&&(d=kh({inputs:{x:d},backend:e,attrs:{axis:u[g]-(a.length-p),keepDims:!1}}),f.push(d)),p--)}for(const g of f)g!==d&&e.disposeIntermediateTensorInfo(g);return d}},MH=Nt({opSnippet:"return (x >= 0.0) ? x : (exp(x) - 1.0);",packedOpSnippet:"\n vec4 result;\n\n result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n return result;\n"}),VH={kernelName:co,backendName:"webgl",kernelFunc:MH},UH={kernelName:wd,backendName:"webgl",kernelFunc:n=>{const{inputs:t,backend:e}=n,{dy:s,y:r}=t,i=E().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Ba("\n vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));\n return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));\n",s.shape,r.shape):new Yi("return (b >= 0.0) ? a : a * (b + 1.0);",s.shape,r.shape);return e.runWebGLProgram(i,[s,r],s.dtype)}},WH=Ln({opSnippet:"return float(a == b);",packedOpSnippet:"\n return vec4(equal(a, b));\n",dtype:"bool",cpuKernelImpl:kU}),GH={kernelName:lu,backendName:"webgl",kernelFunc:WH},jH=Nt({opSnippet:`\n // Error function is calculated approximately with elementary function.\n // See "Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables", Abramowitz and Stegun.\n float p = ${bf};\n float a1 = ${vf};\n float a2 = ${wf};\n float a3 = ${_f};\n float a4 = ${Tf};\n float a5 = ${Sf};\n\n float sign = sign(x);\n x = abs(x);\n float t = 1.0 / (1.0 + p * x);\n return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x));\n`}),XH={kernelName:ho,backendName:"webgl",kernelFunc:jH},GT=Nt({opSnippet:Ua+"\n return exp(x);\n",packedOpSnippet:"\n vec4 result = exp(x);\n bvec4 isNaN = isnan(x);\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n",cpuKernelImpl:NU,dtype:"float32"}),qH={kernelName:po,backendName:"webgl",kernelFunc:GT};function cg(n){const{inputs:t,attrs:e,backend:s}=n,{dim:r}=e,{input:i}=t,a=i.shape.length,o=i.shape.slice();let l=r;return r<0&&(T(-(a+1)<=r,()=>`Axis must be in the interval [${-(a+1)}, ${a}]`),l=a+r+1),o.splice(l,0,1),Ne({inputs:{x:i},backend:s,attrs:{shape:o}})}const ZH={kernelName:uu,backendName:"webgl",kernelFunc:cg},HT="return exp(x) - 1.0;",YH=Nt({opSnippet:HT,packedOpSnippet:HT,cpuKernelImpl:AU}),QH={kernelName:fo,backendName:"webgl",kernelFunc:YH};class jT{constructor(t,e,s){this.variableNames=["real","imag"];const r=e[1];this.outputShape=e;const i=s?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,a=s?`${r}.0`:"1.0";let o;if("real"===t)o="return real * expR - imag * expI;";else{if("imag"!==t)throw new Error(`FFT component must be either "real" or "imag", got ${t}.`);o="return real * expI + imag * expR;"}this.userCode=`\n const float exponentMultiplier = ${i};\n\n float unaryOpComplex(float real, float expR, float imag, float expI) {\n ${o}\n }\n\n float mulMatDFT(int batch, int index) {\n float indexRatio = float(index) / float(${r});\n float exponentMultiplierTimesIndexRatio =\n exponentMultiplier * indexRatio;\n\n float result = 0.0;\n\n for (int i = 0; i < ${r}; i++) {\n // x = (-2|2 * PI / N) * index * i;\n float x = exponentMultiplierTimesIndexRatio * float(i);\n float expR = cos(x);\n float expI = sin(x);\n float real = getReal(batch, i);\n float imag = getImag(batch, i);\n\n result +=\n unaryOpComplex(real, expR, imag, expI) / ${a};\n }\n\n return result;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n setOutput(mulMatDFT(coords[0], coords[1]));\n }\n `}}function XT(n,t,e){const s=e.texData.get(n.dataId),r=K(n.shape),i=n.shape[n.shape.length-1],o=Ne({inputs:{x:n},backend:e,attrs:{shape:[r/i,i]}}),l=o.shape,u=new jT("real",l,t),c=new jT("imag",l,t),h=[{dataId:s.complexTensorInfos.real.dataId,dtype:s.complexTensorInfos.real.dtype,shape:l},{dataId:s.complexTensorInfos.imag.dataId,dtype:s.complexTensorInfos.imag.dtype,shape:l}],d=e.runWebGLProgram(u,h,"float32"),p=e.runWebGLProgram(c,h,"float32"),f=di({inputs:{real:d,imag:p},backend:e});e.disposeIntermediateTensorInfo(d),e.disposeIntermediateTensorInfo(p);const g=Ne({inputs:{x:f},backend:e,attrs:{shape:n.shape}});return e.disposeIntermediateTensorInfo(o),e.disposeIntermediateTensorInfo(f),g}const ej={kernelName:"FFT",backendName:"webgl",kernelFunc:function JH(n){const{inputs:t,backend:e}=n,{input:s}=t;return XT(s,!1,e)}};class tj{constructor(t,e){this.outputShape=[],this.customUniforms=[{name:"value",type:"float"}],this.variableNames=["x"],this.outputShape=t,this.userCode="\n void main() {\n // Input can be obtained from uniform value.\n setOutput(value);\n }\n "}}function Vl(n){const{backend:t,attrs:e}=n,{shape:s,value:r}=e;let{dtype:i}=e;if(i=i||vr(r),"string"===i){const a=$t(i,K(s));return a.fill(r),t.makeTensorInfo(s,i,a)}{const a=new tj(s,r);return t.runWebGLProgram(a,[],i,[[r]])}}const nj={kernelName:Td,backendName:"webgl",kernelFunc:Vl};class sj{constructor(t){this.variableNames=["Image"],this.outputShape=[];const e=t[2];this.outputShape=t,this.userCode=`\n void main() {\n ivec4 coords = getOutputCoords();\n int x = coords[2];\n\n int coordX = ${e} - x - 1;\n float outputValue;\n if(coordX >= 0 && coordX < ${e}) {\n outputValue = getImage(coords[0], coords[1], coordX, coords[3]);\n } else {\n outputValue = getImage(coords[0], coords[1], coords[2], coords[3]);\n }\n setOutput(outputValue);\n }\n `}}const rj={kernelName:Sd,backendName:"webgl",kernelFunc:({inputs:n,backend:t})=>{const{image:e}=n,s=t,r=new sj(e.shape);return s.runWebGLProgram(r,[e],e.dtype)}},KT="return floor(x);",ij=Nt({opSnippet:KT,packedOpSnippet:KT,cpuKernelImpl:RU}),aj={kernelName:mo,backendName:"webgl",kernelFunc:ij},oj=Ln({opSnippet:"\n float s = sign(a) * sign(b);\n int ia = round(a);\n int ib = round(b);\n if (ib != 0) {\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n return float(idiv(ia, ib, s));\n } else {\n return NAN;\n }\n",packedOpSnippet:"\n ivec4 ia = round(a);\n ivec4 ib = round(b);\n bvec4 cond = notEqual(ib, ivec4(0));\n ivec4 result = ivec4(0);\n vec4 s = sign(a) * sign(b);\n\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n if (cond[0]) {\n result[0] = idiv(ia[0], ib[0], s[0]);\n }\n if (cond[1]) {\n result[1] = idiv(ia[1], ib[1], s[1]);\n }\n if (cond[2]) {\n result[2] = idiv(ia[2], ib[2], s[2]);\n }\n if (cond[3]) {\n result[3] = idiv(ia[3], ib[3], s[3]);\n }\n return vec4(result);\n",dtype:"int32"}),lj={kernelName:go,backendName:"webgl",kernelFunc:oj};class uj{constructor(t){this.variableNames=["A"];const e=Qn(),[s,r]=t;this.outputShape=t,this.userCode=`\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${r}.0, ${s}.0);\n\n vec4 values = ${e.texture2D}(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n setOutput(floor(value * 255.0 + 0.5));\n }\n `}}class cj{constructor(t){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;const e=Qn(),[s,r]=t;this.outputShape=t,this.userCode=`\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n\n vec4 result = vec4(0.);\n\n for(int row=0; row<=1; row++) {\n for(int col=0; col<=1; col++) {\n texC = coords[1] + row;\n depth = coords[2] + col;\n\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${r}.0, ${s}.0);\n vec4 values = ${e.texture2D}(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n result[row * 2 + col] = floor(value * 255.0 + 0.5);\n }\n }\n\n ${e.output} = result;\n }\n `}}const hj={kernelName:"FromPixels",backendName:"webgl",kernelFunc:function dj(n){const{inputs:t,backend:e,attrs:s}=n;let{pixels:r}=t;const{numChannels:i}=s,a=typeof HTMLVideoElement<"u"&&r instanceof HTMLVideoElement,o=typeof HTMLImageElement<"u"&&r instanceof HTMLImageElement,[l,u]=a?[r.videoWidth,r.videoHeight]:[r.width,r.height],c=[u,l],h=[u,l,i];if(o||a){const g=E().getBool("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU");(null==Ga||g!==hg)&&(hg=g,Ga=document.createElement("canvas").getContext("2d",{willReadFrequently:hg})),Ga.canvas.width=l,Ga.canvas.height=u,Ga.drawImage(r,0,0,l,u),r=Ga.canvas}const d=e.makeTensorInfo(c,"int32");e.texData.get(d.dataId).usage=Fs.PIXELS,e.gpgpu.uploadPixelDataToTexture(e.getTexture(d.dataId),r);const p=E().getBool("WEBGL_PACK")?new cj(h):new uj(h),f=e.runWebGLProgram(p,[d],"int32");return e.disposeData(d.dataId),f}};let Ga,hg=E().getBool("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU");const fj={kernelName:qu,backendName:"webgl",kernelFunc:function pj(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,filter:i,bias:a,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=s,g=Sr(c),m=Nn(r.shape,i.shape,l,h,u,d,!1,g);let x;const y=[],b=null!=a,v=null!=o,w="leakyrelu"===p,S=()=>{const k=[r,i],D=(P,B)=>{if("NCHW"===B&&1===P.shape.length&&1!==P.shape[0]){const Y=Ne({inputs:{x:P},backend:e,attrs:{shape:[P.shape[0],1,1]}});return y.push(Y),Y}return P};if(b&&k.push(D(a,c)),v&&k.push(D(o,c)),w){const P=e.makeTensorInfo([],"float32",Br(f,"float32"));k.push(P),y.push(P)}return k};if(1!==m.filterHeight||1!==m.filterWidth||1!==m.dilationHeight||1!==m.dilationWidth||1!==m.strideHeight||1!==m.strideWidth||"SAME"!==m.padInfo.type&&"VALID"!==m.padInfo.type)if(m.strideWidth<=2&&"channelsLast"===g&&E().getBool("WEBGL_EXP_CONV")){const k=p?Pl(p,!0):null,D=new PT(m,b,k,v,w),P=[[m.padInfo.top,m.padInfo.left],[m.strideHeight,m.strideWidth],[m.dilationHeight,m.dilationWidth],[m.inHeight,m.inWidth]],B=S();x=e.runWebGLProgram(D,B,"float32",P)}else if(E().getBool("WEBGL_CONV_IM2COL"))x=LT({x:r,filter:i,convInfo:m,backend:e,bias:a,activation:p,preluActivationWeights:o,leakyreluAlpha:f});else{const k=p?Pl(p,!1):null,D=new OT(m,b,k,v,w),P=S();x=e.runWebGLProgram(D,P,"float32")}else x=FT({x:r,filter:i,convInfo:m,backend:e,bias:a,activation:p,preluActivationWeights:o,leakyreluAlpha:f});const I=Ne({inputs:{x},backend:e,attrs:{shape:m.outShape}});return y.push(x),y.forEach(k=>e.disposeIntermediateTensorInfo(k)),I}},gj={kernelName:Zu,backendName:"webgl",kernelFunc:function mj(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,filter:i,bias:a,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dimRoundingMode:h,activation:d,leakyreluAlpha:p}=s,f=[];let g=c;null==g&&(g=[1,1]),T(Pn(l,g),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${l} and dilations '${g}'`);const m=Nn(r.shape,i.shape,l,g,u,h,!0),x=E().getBool("WEBGL_PACK_DEPTHWISECONV")&&m.strideWidth<=2&&m.outChannels/m.inChannels==1,y=d?Pl(d,x):null,b=[r,i],v=null!=a,w=null!=o,S="leakyrelu"===d;if(v&&b.push(a),w&&b.push(o),S){const P=e.makeTensorInfo([],"float32",Br(p,"float32"));b.push(P),f.push(P)}let I;I=x?new WT(m,v,y,w,S):new UT(m,v,y,w,S);const D=e.runWebGLProgram(I,b,"float32",[[m.padInfo.top,m.padInfo.left],[m.strideHeight,m.strideWidth],[m.dilationHeight,m.dilationWidth],[m.inHeight,m.inWidth]]);return f.forEach(P=>e.disposeIntermediateTensorInfo(P)),D}};class xj{constructor(t,e,s,r){this.sliceDim=t,this.strides=e,this.paramsShape=r,this.variableNames=["x","indices"],this.outputShape=s;const i=Ut(s.length);let a="\n int index;";for(let o=0;o= ${this.paramsShape[o]};\n flattenIndex += index * ${this.strides[o]};`;this.userCode=`\n void main() {\n ${i} coords = getOutputCoords();\n int flattenIndex = 0;\n bool out_of_bounds = false;\n\n ${a}\n\n setOutput(out_of_bounds ? 0.0 : getX(flattenIndex, coords[1]));\n }\n `}}const bj={kernelName:Mg,backendName:"webgl",kernelFunc:function yj(n){const{inputs:t,backend:e}=n,{params:s,indices:r}=t,i=r.shape,a=i[i.length-1],o=K(s.shape),[l,u,c,h]=yf(s,r),d=Ne({inputs:{x:r},backend:e,attrs:{shape:[u,a]}}),p=Ne({inputs:{x:s},backend:e,attrs:{shape:[K(s.shape)/c,c]}});if(e.shouldExecuteOnCPU([s,r])||"string"===s.dtype){const x=e.readSync(r.dataId),y=e.bufferSync(s),b=$U(x,y,s.dtype,u,a,c,h,s.shape,o);return e.makeTensorInfo(l,s.dtype,b.values)}const f=new xj(a,h,[u,c],s.shape),g=e.runWebGLProgram(f,[p,d],p.dtype),m=Ne({inputs:{x:g},backend:e,attrs:{shape:l}});return e.disposeIntermediateTensorInfo(d),e.disposeIntermediateTensorInfo(p),e.disposeIntermediateTensorInfo(g),m}};class vj{constructor(t,e){this.variableNames=["A","indices"],this.outputShape=e,this.rank=e.length;const s=Ut(this.rank),r=function wj(n){const e=["resRC.x","resRC.y","resRC.z","resRC.w"],s=[];for(let r=0;r= 0) && (index < ${t[2]}) ? 1.0 : 0.0;\n setOutput(inBounds * getA(${r}));\n }\n `}}function qT(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,indices:i}=t,{axis:a,batchDims:o}=s,l=pt(a,r.shape)[0];if(E().get("DEBUG")){const y=e.readSync(i.dataId),b=r.shape[l];for(let v=0;v=0,()=>`GatherV2: the index value ${w} is not in [0, ${b-1}]`)}}const u=Of(r,i,l,o),c=K(i.shape),h=[],d=Ne({inputs:{x:r},backend:e,attrs:{shape:[u.batchSize,u.outerSize,u.dimSize,u.sliceSize]}}),p=Ne({inputs:{x:i},backend:e,attrs:{shape:[u.batchSize,c/u.batchSize]}});h.push(d),h.push(p);const f=[u.batchSize,u.outerSize,c/u.batchSize,u.sliceSize];if(e.shouldExecuteOnCPU([r,i])||"string"===r.dtype){const y=e.bufferSync(p),b=e.bufferSync(d),v=DU(b,y,f);return h.forEach(w=>e.disposeIntermediateTensorInfo(w)),e.makeTensorInfo(u.outputShape,v.dtype,v.values)}const g=new vj(d.shape,f),m=e.runWebGLProgram(g,[d,p],d.dtype);h.push(m);const x=Ne({inputs:{x:m},backend:e,attrs:{shape:u.outputShape}});return h.forEach(y=>e.disposeIntermediateTensorInfo(y)),x}const _j={kernelName:hu,backendName:"webgl",kernelFunc:qT},Tj=Ln({opSnippet:"return float(a > b);",packedOpSnippet:"\n return vec4(greaterThan(a, b));\n",cpuKernelImpl:OU,dtype:"bool"}),Sj={kernelName:du,backendName:"webgl",kernelFunc:Tj},Cj=Ln({opSnippet:"return float(a >= b);",packedOpSnippet:"\n return vec4(greaterThanEqual(a, b));\n",dtype:"bool",cpuKernelImpl:PU}),Ij={kernelName:xo,backendName:"webgl",kernelFunc:Cj},kj={kernelName:Cd,backendName:"webgl",kernelFunc:function Ej(n){const{inputs:t,backend:e}=n,{input:s}=t;return XT(s,!0,e)}},Nj=Nt({opSnippet:"return float(!isnan(x) && !isinf(x));",dtype:"bool"}),Aj={kernelName:bo,backendName:"webgl",kernelFunc:Nj},Rj=Nt({opSnippet:"return float(isinf(x));",dtype:"bool"}),$j={kernelName:vo,backendName:"webgl",kernelFunc:Rj},Dj=Nt({opSnippet:"return float(isnan(x));",dtype:"bool"}),Oj={kernelName:wo,backendName:"webgl",kernelFunc:Dj},Pj=Ln({opSnippet:"return float(a < b);",packedOpSnippet:"\n return vec4(lessThan(a, b));\n",cpuKernelImpl:FU,dtype:"bool"}),Fj={kernelName:fu,backendName:"webgl",kernelFunc:Pj},Lj=Ln({opSnippet:"return float(a <= b);",packedOpSnippet:"\n return vec4(lessThanEqual(a, b));\n",cpuKernelImpl:LU,dtype:"bool"}),Mj={kernelName:mu,backendName:"webgl",kernelFunc:Lj},zj={kernelName:Vg,backendName:"webgl",kernelFunc:function Vj(n){const{backend:t,attrs:e}=n,{start:s,stop:r,num:i}=e,a=MU(s,r,i);return t.makeTensorInfo([a.length],"float32",a)}},Uj=Nt({opSnippet:Ua+"\n return x < 0.0 ? 0./0. : log(x);\n",packedOpSnippet:"\n vec4 result = log(x);\n bvec4 isNaN = isnan(x);\n result.r = isNaN.r ? x.r : (x.r < 0.0 ? 0./0. : result.r);\n result.g = isNaN.g ? x.g : (x.g < 0.0 ? 0./0. : result.g);\n result.b = isNaN.b ? x.b : (x.b < 0.0 ? 0./0. : result.b);\n result.a = isNaN.a ? x.a : (x.a < 0.0 ? 0./0. : result.a);\n return result;\n",cpuKernelImpl:VU}),Wj={kernelName:_o,backendName:"webgl",kernelFunc:Uj},Hj=Nt({opSnippet:Ua+"\n return log(1.0 + x);\n"}),jj={kernelName:To,backendName:"webgl",kernelFunc:Hj},Xj=Ln({opSnippet:"return float(a >= 1.0 && b >= 1.0);",packedOpSnippet:"\n return vec4(\n vec4(greaterThanEqual(a, vec4(1.0))) *\n vec4(greaterThanEqual(b, vec4(1.0))));\n",dtype:"bool"}),Kj={kernelName:gu,backendName:"webgl",kernelFunc:Xj},qj=Nt({opSnippet:"return float(!(x >= 1.0));"}),Zj={kernelName:xu,backendName:"webgl",kernelFunc:qj},Yj=Ln({opSnippet:"return float(a >= 1.0 || b >= 1.0);",packedOpSnippet:"\n return min(\n vec4(greaterThanEqual(a, vec4(1.0))) +\n vec4(greaterThanEqual(b, vec4(1.0))),\n vec4(1.0));\n",dtype:"bool"}),Qj={kernelName:yu,backendName:"webgl",kernelFunc:Yj};class Jj{constructor(t,e,s,r,i){this.variableNames=["x"],this.outputShape=[];const a=e,o=t[3]-1;let l;this.outputShape=t;const u=`float(${s}) + float(${r}) * sum`;l=.5===i?`inversesqrt(${u})`:1===i?`1.0/(${u})`:`exp(log(${u}) * float(-${i}));`,this.userCode=`\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n int d = coords[3];\n float x = getX(b, r, c, d);\n float sum = 0.0;\n for (int j = -${a}; j <= ${a}; j++) {\n int idx = d + j;\n if (idx >= 0 && idx <= ${o}) {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * ${l};\n setOutput(val);\n }\n `}}class e5{constructor(t,e,s,r,i){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;const a=e,o=t[3]-1;let l;this.outputShape=t;const u=`float(${s}) + float(${r}) * sum`;l=.5===i?`inversesqrt(${u})`:1===i?`1.0/(${u})`:`exp(log(${u}) * float(-${i}));`,this.userCode=`\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords.x;\n int r = coords.y;\n int c = coords.z;\n int d = coords.w;\n\n bool hasNextCol = d < ${this.outputShape[3]};\n bool hasNextRow = c < ${this.outputShape[2]};\n\n vec4 sum = vec4(0.);\n vec4 xFragAtOutputCoords = getX(b, r, c, d);\n\n vec4 xAtOutputCoords = vec4(\n getChannel(xFragAtOutputCoords, vec2(c, d)),\n hasNextCol ?\n getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0,\n hasNextRow ?\n getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0,\n (hasNextRow && hasNextCol) ?\n getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0\n );\n\n int firstChannel = d - ${a};\n vec2 cache = vec2(0.);\n if(firstChannel >= 0){\n vec4 firstChannelFrag = getX(b, r, c, firstChannel);\n cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel));\n if(hasNextRow){\n cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel));\n }\n }\n\n ivec2 depth = ivec2(d, d + 1);\n for (int j = - ${a}; j <= ${a}; j++) {\n ivec2 idx = depth + j;\n bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));\n bvec2 belowUpperBound = lessThanEqual(idx, ivec2(${o}));\n\n bool depthInRange = aboveLowerBound.x && belowUpperBound.x;\n bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y;\n\n if(depthInRange || depthPlusOneInRange){\n vec4 z = vec4(0.);\n vec4 xFragAtCurrentDepth;\n z.xz = cache.xy;\n if(depthPlusOneInRange && hasNextCol){\n xFragAtCurrentDepth = idx.y != d ?\n getX(b, r, c, idx.y) : xFragAtOutputCoords;\n z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y));\n if(hasNextRow){\n z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y));\n }\n }\n cache.xy = z.yw;\n sum += z * z;\n }\n }\n vec4 result = xAtOutputCoords * ${l};\n setOutput(result);\n }\n `}}const t5={kernelName:bu,backendName:"webgl",kernelFunc:n=>{const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{depthRadius:i,bias:a,alpha:o,beta:l}=s,u=E().getBool("WEBGL_PACK_NORMALIZATION")?new e5(r.shape,i,a,o,l):new Jj(r.shape,i,a,o,l);return e.runWebGLProgram(u,[r],r.dtype)}};class n5{constructor(t,e,s,r,i){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=t,this.depth=t[3],this.depthRadius=e,this.bias=s,this.alpha=r,this.beta=i,this.userCode=`\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n\n float result = 0.0;\n for (int d = 0; d < ${this.depth}; ++d) {\n int depthBegin = int(max(0.0, float(d - ${e})));\n int depthEnd = int(min(float(${this.depth}),\n float(d + ${e} + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = ${this.depth};\n\n float norm = 0.0;\n for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd) {\n norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n }\n else {\n break;\n }\n }\n\n norm = float(${r}) * norm + float(${s});\n\n for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd){\n float dyi = -2.0 * float(${r})\n * float(${i})\n * getInputImage(b, r, c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * ${i});\n }\n if (k == coords[3]) {\n dyi *= getDy(b, r, c, d);\n result += dyi;\n }\n }\n else {\n break;\n }\n }\n }\n setOutput(result);\n }\n `}}const s5={kernelName:Ed,backendName:"webgl",kernelFunc:n=>{const{inputs:t,backend:e,attrs:s}=n,{x:r,y:i,dy:a}=t,{depthRadius:o,bias:l,alpha:u,beta:c}=s,h=new n5(r.shape,o,l,u,c);return e.runWebGLProgram(h,[r,i,a],r.dtype)}};function ZT(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{reductionIndices:i,keepDims:a}=s,o=r.shape.length,l=pt(i,r.shape);let u=l;const c=rn(u,o),h=null!=c,d=e.shouldExecuteOnCPU([r]);let p=r;if(h){if(d){const b=e.texData.get(p.dataId).values,v=new Array(o);for(let I=0;I`Error in maxPool: Either strides or dilations must be 1. Got strides ${a} and dilations '1'`);const c=ks(r.shape,i,a,1,o,l);if(1===c.filterWidth&&1===c.filterHeight&&rt(c.inShape,c.outShape))return hs({inputs:{x:r},backend:e});const h=new Fl(c,"max",!1);return e.runWebGLProgram(h,[r],r.dtype)}},p5={kernelName:_u,backendName:"webgl",kernelFunc:function d5(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{filterSize:i,strides:a,pad:o,dataFormat:l,dimRoundingMode:u}=s,h=Tr(r.shape,i,a,[1,1,1],o,u,l),d=new og(h,"max",!1);return e.runWebGLProgram(d,[r],r.dtype)}};class f5{constructor(t){this.variableNames=["dy","maxPos"],this.outputShape=t.inShape;const i=t.effectiveFilterHeight,a=t.effectiveFilterWidth;this.userCode=`\n const ivec2 pads = ivec2(${i-1-t.padInfo.top}, ${a-1-t.padInfo.left});\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ${i};\n wR += ${t.dilationHeight}) {\n float dyR = float(dyRCorner + wR) / ${t.strideHeight}.0;\n\n if (dyR < 0.0 || dyR >= ${t.outHeight}.0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ${a}; wC++) {\n float dyC = float(dyCCorner + wC) / ${t.strideWidth}.0;\n\n if (dyC < 0.0 || dyC >= ${t.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n int maxPosValue = ${i*a-1} - int(getMaxPos(b, idyR, idyC, d));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue = wR * ${a} + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n `}}class m5{constructor(t){this.variableNames=["dy","maxPos"],this.outputShape=t.inShape;const l=t.effectiveFilterDepth,u=t.effectiveFilterHeight,c=t.effectiveFilterWidth;this.userCode=`\n const ivec3 pads = ivec3(${l-1-t.padInfo.front}, ${u-1-t.padInfo.top}, ${c-1-t.padInfo.left});\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < ${l};\n wD += ${t.dilationDepth}) {\n float dyD = float(dyDCorner + wD) / ${t.strideDepth}.0;\n\n if (dyD < 0.0 || dyD >= ${t.outDepth}.0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < ${u};\n wR += ${t.dilationHeight}) {\n float dyR = float(dyRCorner + wR) / ${t.strideHeight}.0;\n\n if (dyR < 0.0 || dyR >= ${t.outHeight}.0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ${c};\n wC += ${t.dilationWidth}) {\n float dyC = float(dyCCorner + wC) / ${t.strideWidth}.0;\n\n if (dyC < 0.0 || dyC >= ${t.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n int maxPosValue = ${l*u*c-1} -\n int(getMaxPos(batch, idyD, idyR, idyC, ch));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue =\n wD * ${u} * ${c} +\n wR * ${c} + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n }\n setOutput(dotProd);\n }\n `}}const x5={kernelName:Nd,backendName:"webgl",kernelFunc:function g5(n){const{inputs:t,backend:e,attrs:s}=n,{dy:r,input:i}=t,a=i,{filterSize:o,strides:l,pad:u,dimRoundingMode:c}=s,d=Tr(a.shape,o,l,[1,1,1],u,c),p=new og(d,"max",!0),f=e.runWebGLProgram(p,[a],a.dtype),g=new m5(d),m=e.runWebGLProgram(g,[r,f],a.dtype);return e.disposeIntermediateTensorInfo(f),m}},b5={kernelName:kd,backendName:"webgl",kernelFunc:function y5(n){const{inputs:t,backend:e,attrs:s}=n,{dy:r,input:i,output:a}=t,o=i;Dl([i,a],"maxPoolGrad");const{filterSize:l,strides:u,pad:c,dimRoundingMode:h}=s,d=ks(o.shape,l,u,1,c,h),f=new Fl(d,"max",!0),g=e.runWebGLProgram(f,[o],o.dtype),m=new f5(d),x=e.runWebGLProgram(m,[r,g],o.dtype);return e.disposeIntermediateTensorInfo(g),x}},w5={kernelName:zg,backendName:"webgl",kernelFunc:({inputs:n,attrs:t,backend:e})=>{const{x:s}=n,{filterSize:r,strides:i,pad:a,includeBatchInIndex:o}=t,l=e;T(4===s.shape.length,()=>`Error in maxPool: input must be rank 4 but got rank ${s.shape.length}.`);const u=[1,1];T(Pn(i,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);const c=ks(s.shape,r,i,u,a),[h,d]=function v5(n,t,e,s){let r=new Fl(e,"max",!1);const i=s.runWebGLProgram(r,[n],"float32");return r=new Fl(e,"max",!0,!0,t),[i,s.runWebGLProgram(r,[n],"float32")]}(s,o,c,l);return[h,d]}},T5={kernelName:Tu,backendName:"webgl",kernelFunc:({inputs:n,attrs:t,backend:e})=>{const{x:s}=n,{keepDims:r,axis:i}=t,a=e,o=s.shape.length,l=pt(i,s.shape);let u=l;const c=rn(u,o),h=null!=c,d=a.shouldExecuteOnCPU([s]),p=[];let f=s;if(h){if(d){const v=a.texData.get(f.dataId).values,w=new Array(o);for(let k=0;kc[0]+t[h]+c[1]);const r=t.length,i=Ut(r),a=e.map(c=>c[0]).join(","),o=e.map((c,h)=>c[0]+t[h]).join(","),l=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r),u="reflect"===s?0:1;this.userCode=1!==r?`\n ${i} start = ${i}(${a});\n ${i} end = ${i}(${o});\n\n void main() {\n ${i} outC = getOutputCoords();\n for (int i = 0; i < ${r}; i++) {\n if (outC[i] < start[i]) {\n outC[i] = start[i] * 2 - outC[i] - ${u};\n } else if(outC[i] >= end[i]) {\n outC[i] = (end[i] - 1) * 2 - outC[i] + ${u};\n }\n }\n ${i} coords = outC - start;\n setOutput(getX(${l}));\n }\n `:`\n int start = ${a};\n int end = ${o};\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start) {\n outC = start * 2 - outC - ${u};\n } else if(outC >= end) {\n outC = (end - 1) * 2 - outC + ${u};\n }\n setOutput(getX(outC - start));\n }\n `}}class R5{constructor(t,e,s){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e.map((f,g)=>f[0]+t[g]+f[1]);const r=t.length,i=Ut(r),a=e.map(f=>f[0]).join(","),o=e.map((f,g)=>f[0]+t[g]).join(","),l=Jn("rc",r),u=Jn("source",r),c=`${l[r-1]} < ${this.outputShape[r-1]}`,h=1===r?"source":`vec2(${u.slice(-2).join()})`,d="reflect"===s?0:1;let p="";if(1===r){const f=`\n ${i} source = rc;\n if (source < start) {\n source = start * 2 - source - ${d};\n } else if (source >= end) {\n source = (end - 1) * 2 - source + ${d};\n }\n source -= start;\n `;p=`\n ${i} rc = outputLoc;\n ${f}\n result[0] = getChannel(getX(${u.join()}), ${h});\n ${l[r-1]} += 1;\n if(${c}) {\n ${f}\n result[1] = getChannel(getX(${u.join()}), ${h});\n }\n `}else{const f=`\n ${i} source = rc;\n ${i} lt = ${i}(lessThan(source, start));\n ${i} gte = ${i}(greaterThanEqual(source, end));\n ${i} orig = 1 - (lt + gte);\n source = orig * source +\n lt * (start * 2 - source - ${d}) +\n gte * ((end - 1) * 2 - source + ${d});\n source -= start;\n `;p=`\n ${i} rc = outputLoc;\n ${f}\n result[0] = getChannel(getX(${u.join()}), ${h});\n ${l[r-1]} += 1;\n if(${c}) {\n ${f}\n result[1] = getChannel(getX(${u.join()}), ${h});\n }\n rc = outputLoc;\n ${l[r-2]} += 1;\n if(${l[r-2]} < ${this.outputShape[r-2]}) {\n ${f}\n result[2] = getChannel(getX(${u.join()}), ${h});\n ${l[r-1]} += 1;\n if(${c}) {\n ${f}\n result[3] = getChannel(getX(${u.join()}), ${h});\n }\n }\n `}this.userCode=`\n const ${i} start = ${i}(${a});\n const ${i} end = ${i}(${o});\n\n void main() {\n ${i} outputLoc = getOutputCoords();\n vec4 result = vec4(0.);\n ${p}\n setOutput(result);\n }\n `}}const $5={kernelName:Cu,backendName:"webgl",kernelFunc:({inputs:n,backend:t,attrs:e})=>{const{x:s}=n,{paddings:r,mode:i}=e,a=E().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new R5(s.shape,r,i):new A5(s.shape,r,i);return t.runWebGLProgram(a,[s],s.dtype)}},P5=Ln({opSnippet:"if (b == 0.0) return NAN;\n return mod(a, b);",packedOpSnippet:"\n vec4 result = mod(a, b);\n bvec4 isNaN = equal(b, vec4(0.0));\n "+Qi+"\n return result;\n"}),F5={kernelName:Io,backendName:"webgl",kernelFunc:P5};class L5{constructor(t,e,s){this.variableNames=["probs"],this.customUniforms=[{name:"seed",type:"float"}],this.outputShape=[t,s],this.userCode=`\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n\n float r = random(seed);\n float cdf = 0.0;\n\n for (int i = 0; i < ${e-1}; i++) {\n cdf += getProbs(batch, i);\n\n if (r < cdf) {\n setOutput(float(i));\n return;\n }\n }\n\n // If no other event happened, last event happened.\n setOutput(float(${e-1}));\n }\n `}}const YT=Ln({opSnippet:"\nif (a == b) {\n return 1.0;\n};\nreturn a / b;",packedOpSnippet:"\n // vec4 one = vec4(equal(a, b));\n // return one + (vec4(1.0) - one) * a / b;\n vec4 result = a / b;\n if(a.x == b.x) {\n result.x = 1.;\n }\n if(a.y == b.y) {\n result.y = 1.;\n }\n if(a.z == b.z) {\n result.z = 1.;\n }\n if(a.w == b.w) {\n result.w = 1.;\n }\n\n return result;\n",checkOutOfBounds:!0}),M5={kernelName:uo,backendName:"webgl",kernelFunc:YT},QT="return a - b;",JT=Ln({opSnippet:QT,packedOpSnippet:QT,supportsComplex:!0,cpuKernelImpl:uW}),V5={kernelName:Uo,backendName:"webgl",kernelFunc:JT};function e1(n){const{inputs:t,backend:e,attrs:s}=n,{logits:r}=t,{dim:i}=s,a=pt([i],r.shape),o=ZT({inputs:{x:r},backend:e,attrs:{reductionIndices:a,keepDims:!1}}),l=hn(o.shape,a),u=Ne({inputs:{x:o},backend:e,attrs:{shape:l}}),c=JT({inputs:{a:r,b:u},backend:e}),h=GT({inputs:{x:c},backend:e}),d=kh({inputs:{x:h},backend:e,attrs:{axis:a,keepDims:!1}}),p=Ne({inputs:{x:d},backend:e,attrs:{shape:l}}),f=YT({inputs:{a:h,b:p},backend:e});return e.disposeIntermediateTensorInfo(o),e.disposeIntermediateTensorInfo(u),e.disposeIntermediateTensorInfo(c),e.disposeIntermediateTensorInfo(h),e.disposeIntermediateTensorInfo(d),e.disposeIntermediateTensorInfo(p),f}const z5={kernelName:Wu,backendName:"webgl",kernelFunc:e1},U5={kernelName:Bg,backendName:"webgl",kernelFunc:function B5(n){const{inputs:t,backend:e,attrs:s}=n,{logits:r}=t,{numSamples:i,seed:a,normalized:o}=s,l=o?r:e1({inputs:{logits:r},backend:e,attrs:{dim:r.shape.length-1}}),h=new L5(l.shape[0],l.shape[1],i),p=e.runWebGLProgram(h,[l],"int32",[[a]]);return o||e.disposeIntermediateTensorInfo(l),p}},W5=Ts+"\n return -x;\n",j5={kernelName:Iu,backendName:"webgl",kernelFunc:function H5(n){const{inputs:t,backend:e}=n,{x:s}=t;if(e.shouldExecuteOnCPU([s])){const i=e.texData.get(s.dataId),[a,o]=GU(i.values,s.shape,s.dtype);return e.makeTensorInfo(o,s.dtype,a)}let r;return r=E().getBool("WEBGL_PACK_UNARY_OPERATIONS")?new hi(s.shape,"\n vec4 result = -x;\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n"):new xr(s.shape,W5),e.runWebGLProgram(r,[s],s.dtype)}},X5=af,q5={kernelName:Ad,backendName:"webgl",kernelFunc:function K5(n){fs("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");const{inputs:t,backend:e,attrs:s}=n,{boxes:r,scores:i}=t,{maxOutputSize:a,iouThreshold:o,scoreThreshold:l}=s,u=e.readSync(r.dataId),c=e.readSync(i.dataId),{selectedIndices:h}=X5(u,c,a,o,l);return e.makeTensorInfo([h.length],"int32",new Int32Array(h))}},Z5=of,Q5={kernelName:Rd,backendName:"webgl",kernelFunc:function Y5(n){fs("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");const{inputs:t,backend:e,attrs:s}=n,{boxes:r,scores:i}=t,{maxOutputSize:a,iouThreshold:o,scoreThreshold:l,padToMaxOutputSize:u}=s,c=e.readSync(r.dataId),h=e.readSync(i.dataId),{selectedIndices:d,validOutputs:p}=Z5(c,h,a,o,l,u);return[e.makeTensorInfo([d.length],"int32",new Int32Array(d)),e.makeTensorInfo([],"int32",new Int32Array([p]))]}},J5=lf,tX={kernelName:$d,backendName:"webgl",kernelFunc:function eX(n){fs("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");const{inputs:t,backend:e,attrs:s}=n,{boxes:r,scores:i}=t,{maxOutputSize:a,iouThreshold:o,scoreThreshold:l,softNmsSigma:u}=s,c=e.readSync(r.dataId),h=e.readSync(i.dataId),d=a,p=o,f=l,g=u,{selectedIndices:m,selectedScores:x}=J5(c,h,d,p,f,g);return[e.makeTensorInfo([m.length],"int32",new Int32Array(m)),e.makeTensorInfo([x.length],"float32",new Float32Array(x))]}};class nX{constructor(t,e,s,r){this.variableNames=["indices"],this.outputShape=[t,e],this.userCode=`\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float(${r}), float(${s}),\n float(index == coords.y)));\n }\n `}}const sX={kernelName:Nu,backendName:"webgl",kernelFunc:n=>{const{inputs:t,backend:e,attrs:s}=n,{indices:r}=t,{dtype:i,depth:a,onValue:o,offValue:l}=s,u=K(r.shape),c=new nX(u,a,o,l),h=Ne({inputs:{x:r},backend:e,attrs:{shape:[u]}}),d=e.runWebGLProgram(c,[h],i);e.disposeIntermediateTensorInfo(h);const f=Ne({inputs:{x:d},backend:e,attrs:{shape:[...r.shape,a]}});return e.disposeIntermediateTensorInfo(d),f}};function Ph(n){const{inputs:t,backend:e}=n,{x:s}=t;if("complex64"===s.dtype){const r=Ll({inputs:{input:s},backend:e}),i=Ph({inputs:{x:r},backend:e}),a=$h({inputs:{input:s},backend:e}),o=Ph({inputs:{x:a},backend:e}),l=di({inputs:{real:i,imag:o},backend:e});return e.disposeIntermediateTensorInfo(r),e.disposeIntermediateTensorInfo(i),e.disposeIntermediateTensorInfo(a),e.disposeIntermediateTensorInfo(o),l}return Vl({attrs:{shape:s.shape,dtype:s.dtype,value:"string"===s.dtype?"":0},backend:e})}const rX={kernelName:Xu,backendName:"webgl",kernelFunc:Ph},iX={kernelName:ku,backendName:"webgl",kernelFunc:function t1(n){const{inputs:t,backend:e}=n,{x:s}=t;if("string"===s.dtype)throw new Error("onesLike is not supported under string dtype");if("complex64"===s.dtype){const r=Ll({inputs:{input:s},backend:e}),i=t1({inputs:{x:r},backend:e}),a=$h({inputs:{input:s},backend:e}),o=Ph({inputs:{x:a},backend:e}),l=di({inputs:{real:i,imag:o},backend:e});return e.disposeIntermediateTensorInfo(r),e.disposeIntermediateTensorInfo(i),e.disposeIntermediateTensorInfo(a),e.disposeIntermediateTensorInfo(o),l}return Vl({attrs:{shape:s.shape,dtype:s.dtype,value:1},backend:e})}},oX={kernelName:Au,backendName:"webgl",kernelFunc:function aX(n){const{inputs:t,backend:e,attrs:s}=n,{axis:r}=s;if(1===t.length)return cg({inputs:{input:t[0]},backend:e,attrs:{dim:r}});const i=t[0].shape,a=t[0].dtype;t.forEach(c=>{Me(i,c.shape,"All tensors passed to stack must have matching shapes"),T(a===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});const o=[],u=DT({inputs:t.map(c=>{const h=cg({inputs:{input:c},backend:e,attrs:{dim:r}});return o.push(h),h}),backend:e,attrs:{axis:r}});return o.forEach(c=>e.disposeIntermediateTensorInfo(c)),u}};class lX{constructor(t,e,s){this.variableNames=["x"],this.customUniforms=[{name:"value",type:"float"}],this.outputShape=e.map((u,c)=>u[0]+t[c]+u[1]);const r=t.length,i=Ut(r),a=e.map(u=>u[0]).join(","),o=e.map((u,c)=>u[0]+t[c]).join(","),l=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r);this.userCode=1!==r?`\n ${i} start = ${i}(${a});\n ${i} end = ${i}(${o});\n\n void main() {\n ${i} outC = getOutputCoords();\n if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\n setOutput(value);\n } else {\n ${i} coords = outC - start;\n setOutput(getX(${l}));\n }\n }\n `:`\n int start = ${a};\n int end = ${o};\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start || outC >= end) {\n setOutput(value);\n } else {\n setOutput(getX(outC - start));\n }\n }\n `}}class uX{constructor(t,e,s){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"value",type:"float"}],this.outputShape=e.map((g,m)=>g[0]+t[m]+g[1]);const r=t.length,i=Ut(r),a=e.map(g=>g[0]).join(","),o=e.map((g,m)=>g[0]+t[m]).join(","),l=Jn("rc",r),u=Jn("source",r),c=`${l[r-1]} < ${this.outputShape[r-1]}`,h=1===r?"source":`vec2(${u.slice(-2).join()})`,d=[`${i} rc = outputLoc;`,`${l[r-1]} += 1;\n if(${c}) {\n `,1===r?"":`}\n rc = outputLoc;\n ${l[r-2]} += 1;\n if(${l[r-2]} < ${this.outputShape[r-2]}) {`,1===r?"":` ${l[r-1]} += 1;\n if(${c}) {`],p=1===r?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))";let f="";for(let g=0,m=1===r?2:4;g{const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{paddings:i,constantValue:a}=s;if(0===K(r.shape))return Vl({backend:e,attrs:{shape:i.map((c,h)=>c[0]+r.shape[h]+c[1]),value:a,dtype:r.dtype}});const o=E().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new uX(r.shape,i,a):new lX(r.shape,i,a);return e.runWebGLProgram(o,[r],r.dtype,[[a]])},cX={kernelName:Ru,backendName:"webgl",kernelFunc:n1},pX=Ln({opSnippet:"\n if(a < 0.0 && floor(b) < b){\n return NAN;\n }\n if (b == 0.0) {\n return 1.0;\n }\n return (round(mod(b, 2.0)) != 1) ?\n pow(abs(a), b) : sign(a) * pow(abs(a), b);\n",packedOpSnippet:"\n // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise.\n vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1)));\n vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);\n vec4 result = multiplier * pow(abs(a), b);\n\n // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS\n bvec4 isExpZero = equal(b, vec4(0.0));\n result.r = isExpZero.r ? 1.0 : result.r;\n result.g = isExpZero.g ? 1.0 : result.g;\n result.b = isExpZero.b ? 1.0 : result.b;\n result.a = isExpZero.a ? 1.0 : result.a;\n\n bvec4 isNaN1 = lessThan(a, vec4(0.0));\n bvec4 isNaN2 = lessThan(floor(b), b);\n bvec4 isNaN = bvec4(isNaN1.x && isNaN2.x, isNaN1.y && isNaN2.y, isNaN1.z && isNaN2.z, isNaN1.w && isNaN2.w);\n "+Qi+"\n return result;\n"}),fX={kernelName:ko,backendName:"webgl",kernelFunc:pX},gX={kernelName:Du,backendName:"webgl",kernelFunc:function mX(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{axis:i,keepDims:a}=s,o=r.shape.length,l=[],u=pt(i,r.shape);let c=u;const h=rn(c,o);let p,d=r;if(null!=h&&(d=es({inputs:{x:r},backend:e,attrs:{perm:h}}),c=dn(c.length,o),l.push(d)),Fn("prod",c,o),e.shouldExecuteOnCPU([d])){const f=e.texData.get(d.dataId).values,{outVals:g,outShape:m,outDtype:x}=jU(d.shape,d.dtype,f,c);p=e.makeTensorInfo(m,x,g)}else{const[f,g]=An(d.shape,c),m=K(g),x=Ne({inputs:{x:d},backend:e,attrs:{shape:[-1,m]}}),b=Ji(x,np(r.dtype),"prod",e);p=Ne({inputs:{x:b},backend:e,attrs:{shape:f}}),l.push(x),l.push(b)}if(a){l.push(p);const f=hn(p.shape,u);p=Ne({inputs:{x:p},backend:e,attrs:{shape:f}})}return l.forEach(f=>e.disposeIntermediateTensorInfo(f)),p}},yX={kernelName:Ug,backendName:"webgl",kernelFunc:function xX(n){const{inputs:t,backend:e,attrs:s}=n,{paramsNestedSplits:r,paramsDenseValues:i,indices:a}=t,{outputRaggedRank:o}=s,l=r.map(x=>e.readSync(x.dataId)),u=r.map(x=>x.shape),c=e.readSync(i.dataId),h=e.readSync(a.dataId),[d,p,f]=XU(l,u,c,i.shape,i.dtype,h,a.shape,o),g=d.map(x=>e.makeTensorInfo([x.length],"int32",x)),m=e.makeTensorInfo(f,i.dtype,p);return g.concat([m])}},vX={kernelName:Wg,backendName:"webgl",kernelFunc:function bX(n){const{inputs:t,backend:e}=n,{starts:s,limits:r,deltas:i}=t,a=e.readSync(s.dataId),o=e.readSync(r.dataId),l=e.readSync(i.dataId),[u,c]=KU(a,s.shape,s.dtype,o,r.shape,l,i.shape);return[e.makeTensorInfo([u.length],"int32",u),e.makeTensorInfo([c.length],s.dtype,c)]}},_X={kernelName:Gg,backendName:"webgl",kernelFunc:function wX(n){const{inputs:t,backend:e,attrs:s}=n,{shape:r,values:i,defaultValue:a,rowPartitionTensors:o}=t,{rowPartitionTypes:l}=s,u=e.readSync(r.dataId),c=e.readSync(i.dataId),h=e.readSync(a.dataId),d=o.map(m=>e.readSync(m.dataId)),p=o.map(m=>m.shape),[f,g]=qU(u,r.shape,c,i.shape,i.dtype,h,a.shape,d,p,l);return e.makeTensorInfo(f,i.dtype,g)}},s1=n=>{const{backend:t,attrs:e}=n,{start:s,stop:r,step:i,dtype:a}=e,o=ZU(s,r,i,a);return t.makeTensorInfo([o.length],a,o)},TX={kernelName:Dd,backendName:"webgl",kernelFunc:s1},SX=Nt({opSnippet:"return 1.0 / x;"}),CX={kernelName:No,backendName:"webgl",kernelFunc:SX},EX=Nt({opSnippet:Ts+"\n return (x < 0.0) ? 0.0 : x;\n",packedOpSnippet:"\n vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n"}),kX={kernelName:Ao,backendName:"webgl",kernelFunc:EX},AX=Nt({opSnippet:Ts+"\n return (x < 0.0) ? 0.0 : min(6.0, x);\n",packedOpSnippet:"\n vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n"}),RX={kernelName:Ro,backendName:"webgl",kernelFunc:AX};class $X{constructor(t,e,s,r,i){this.variableNames=["A"],this.outputShape=[];const[a,o,l,u]=t;this.outputShape=[a,e,s,u];const c=[r&&e>1?o-1:o,r&&s>1?l-1:l],h=[r&&e>1?e-1:e,r&&s>1?s-1:s];let d;d=i?"(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":"vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=`\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n ${c[0]/h[0]},\n ${c[1]/h[1]});\n const vec2 inputShapeRC = vec2(${o}.0, ${l}.0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = ${d};\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(max(sourceFracIndexRC, vec2(0.0)));\n ivec2 sourceCeilRC = ivec2(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n\n setOutput(newValue);\n }\n `}}class DX{constructor(t,e,s,r,i){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];const[a,o,l,u]=t;this.outputShape=[a,e,s,u];const c=[r&&e>1?o-1:o,r&&s>1?l-1:l],h=[r&&e>1?e-1:e,r&&s>1?s-1:s];let d;d=i?"(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":"vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=`\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n ${c[0]/h[0]},\n ${c[1]/h[1]},\n ${c[1]/h[1]});\n const vec3 inputShapeRC = vec3(${o}.0, ${l}.0,\n ${l}.0);\n\n float getAValue(int b, int r, int c, int d) {\n return getChannel(getA(b, r, c, d), vec2(c, d));\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n // Calculate values for next column in yRC.z.\n ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n // Fractional source index.\n vec3 sourceFracIndexRC = ${d};\n\n // Compute the four integer indices.\n ivec3 sourceFloorRC = ivec3(max(sourceFracIndexRC, vec3(0.0)));\n ivec3 sourceCeilRC = ivec3(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n // Should we calculate next column and row elements in 2x2 packed cell.\n bool hasNextCol = d < ${u-1};\n bool hasNextRow = coords.z < ${s-1};\n\n // In parallel, construct four corners for all four components in\n // packed 2x2 cell.\n vec4 topLeft = vec4(\n getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 bottomLeft = vec4(\n getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 topRight = vec4(\n getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec4 bottomRight = vec4(\n getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);\n\n vec4 top = mix(topLeft, topRight, fracRC.yyzz);\n vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);\n vec4 newValue = mix(top, bottom, fracRC.x);\n\n setOutput(newValue);\n }\n `}}const PX={kernelName:Fu,backendName:"webgl",kernelFunc:function OX(n){const{inputs:t,backend:e,attrs:s}=n,{images:r}=t,{alignCorners:i,halfPixelCenters:a,size:o}=s,[l,u]=o,c=E().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new DX(r.shape,l,u,i,a):new $X(r.shape,l,u,i,a);return e.runWebGLProgram(c,[r],"float32")}};class FX{constructor(t,e,s){this.variableNames=["dy"],this.outputShape=[],this.outputShape=e;const[,r,i]=e,[,a,o]=t,l=[s&&a>1?r-1:r,s&&o>1?i-1:i],u=[s&&a>1?a-1:a,s&&o>1?o-1:o],c=l[0]/u[0],h=l[1]/u[1],d=1/c,p=1/h,f=2*Math.ceil(d)+2,g=2*Math.ceil(p)+2;this.userCode=`\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float(${c});\n const float widthScale = float(${h});\n\n const float invHeightScale = float(${d});\n const float invWidthScale = float(${p});\n\n const int winHeight = int(${f});\n const int winWidth = int(${g});\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(startRLerp - float(winHeight / 2));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(startCLerp - float(winWidth / 2));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= ${a}) {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= ${o}) {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), ${r-1}.0));\n float dxRLerp = dxR - float(topDxRIndex);\n float inverseDxRLerp = 1.0 - dxRLerp;\n\n float dxC = float(dyC) * widthScale;\n int leftDxCIndex = int(floor(dxC));\n int rightDxCIndex = int(min(ceil(dxC), ${i-1}.0));\n float dxCLerp = dxC - float(leftDxCIndex);\n float inverseDxCLerp = 1.0 - dxCLerp;\n\n if (r == topDxRIndex && c == leftDxCIndex) {\n // topLeft\n accumulator +=\n getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n }\n\n if (r == topDxRIndex && c == rightDxCIndex) {\n // topRight\n accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n }\n\n if (r == bottomDxRIndex && c == leftDxCIndex) {\n // bottomLeft\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n }\n\n if (r == bottomDxRIndex && c == rightDxCIndex) {\n // bottomRight\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n `}}const MX={kernelName:Fd,backendName:"webgl",kernelFunc:function LX(n){const{inputs:t,backend:e,attrs:s}=n,{images:r,dy:i}=t,{alignCorners:a}=s,o=new FX(i.shape,r.shape,a);return e.runWebGLProgram(o,[i],i.dtype)}};class VX{constructor(t,e,s,r,i){this.variableNames=["A"],this.outputShape=[];const[a,o,l,u]=t;this.outputShape=[a,e,s,u];const c=[r&&e>1?o-1:o,r&&s>1?l-1:l],h=[r&&e>1?e-1:e,r&&s>1?s-1:s];let p;p=i?"max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":"vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=`\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n ${c[0]/h[0]},\n ${c[1]/h[1]});\n const vec2 inputShapeRC = vec2(${o}.0, ${l}.0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = ${p};\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${r?"0.5":"0.0"})));\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n `}}class zX{constructor(t,e,s,r,i){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];const[a,o,l,u]=t;this.outputShape=[a,e,s,u];const c=[r&&e>1?o-1:o,r&&s>1?l-1:l],h=[r&&e>1?e-1:e,r&&s>1?s-1:s];let p;p=i?"max((vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC, vec3(0.0))":"vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=`\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n ${c[0]/h[0]},\n ${c[1]/h[1]},\n ${c[1]/h[1]});\n const vec3 inputShapeRC = vec3(${o}.0, ${l}.0,\n ${l}.0);\n\n float getAValue(int b, int r, int c, int d) {\n return getChannel(getA(b, r, c, d), vec2(c, d));\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n // Calculate values for next column in yRC.z.\n ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n // Fractional source index.\n vec3 sourceFracIndexRC = ${p};\n\n // Compute the coordinators of nearest neighbor point.\n ivec3 sourceNearestRC = ivec3(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${r?"0.5":"0.0"})));\n\n // Should we calculate next column and row elements in 2x2 packed cell.\n bool hasNextCol = d < ${u-1};\n bool hasNextRow = coords.z < ${s-1};\n\n vec4 newValue = vec4(\n getAValue(b, sourceNearestRC.x, sourceNearestRC.y, d),\n hasNextCol ? getAValue(b, sourceNearestRC.x, sourceNearestRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceNearestRC.x, sourceNearestRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceNearestRC.x, sourceNearestRC.z, d + 1) : 0.0);\n\n setOutput(newValue);\n }\n `}}const UX={kernelName:Pu,backendName:"webgl",kernelFunc:function BX(n){const{inputs:t,backend:e,attrs:s}=n,{images:r}=t,{alignCorners:i,halfPixelCenters:a,size:o}=s,[l,u]=o,c=E().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new zX(r.shape,l,u,i,a):new VX(r.shape,l,u,i,a);return e.runWebGLProgram(c,[r],r.dtype)}};class WX{constructor(t,e,s){this.variableNames=["dy"],this.outputShape=[],this.outputShape=e;const[,r,i]=e,[,a,o]=t,l=[s&&a>1?r-1:r,s&&o>1?i-1:i],u=[s&&a>1?a-1:a,s&&o>1?o-1:o],c=l[0]/u[0],h=l[1]/u[1],d=1/c,p=1/h,f=2*Math.ceil(d)+2,g=2*Math.ceil(p)+2;this.userCode=`\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float(${c});\n const float widthScale = float(${h});\n\n const float invHeightScale = float(${d});\n const float invWidthScale = float(${p});\n\n const int winHeight = int(${f});\n const int winWidth = int(${g});\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= ${a}) {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= ${o}) {\n continue;\n }\n\n float sourceFracRow =\n float(${l[0]}) *\n (float(dyR) / float(${u[0]}));\n\n float sourceFracCol =\n float(${l[1]}) *\n (float(dyC) / float(${u[1]}));\n\n int sourceNearestRow = int(min(\n float(int(${r}) - 1),\n ${s} ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int(${i}) - 1),\n ${s} ? float(round(sourceFracCol)) :\n float(floor(sourceFracCol))));\n\n if (r == sourceNearestRow && c == sourceNearestCol) {\n accumulator += getDy(b, dyR, dyC, d);\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n `}}const HX={kernelName:Pd,backendName:"webgl",kernelFunc:function GX(n){const{inputs:t,backend:e,attrs:s}=n,{images:r,dy:i}=t,{alignCorners:a}=s,o=new WX(i.shape,r.shape,a);return e.runWebGLProgram(o,[i],i.dtype)}};class jX{constructor(t,e){this.variableNames=["x"];const s=t.length;if(s>4)throw new Error(`WebGL backend: Reverse of rank-${s} tensor is not yet supported`);if(this.outputShape=t,1===s)return void(this.userCode=`\n void main() {\n int coord = getOutputCoords();\n setOutput(getX(${t[0]} - coord - 1));\n }\n `);const i=t.map((o,l)=>(o=>-1!==e.indexOf(o)&&1!==t[o]?`${t[o]} - coords[${o}] - 1`:`coords[${o}]`)(l)).join(","),a=Ut(s);this.userCode=`\n void main() {\n ${a} coords = getOutputCoords();\n setOutput(getX(${i}));\n }\n `}}class XX{constructor(t,e){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;const s=t.length;if(s>4)throw new Error(`WebGL backend: Reverse of rank-${s} tensor is not yet supported`);this.outputShape=t;const r=Jn("rc",s),i=`${r[s-1]} + 1 < ${this.outputShape[s-1]}`,a=`${r[s-2]} + 1 < ${this.outputShape[s-2]}`,o=Ut(s);function d(f){const g=t.map((y,b)=>function p(f,g){return-1!==e.indexOf(f)&&1!==t[f]?`${t[f]} - ${g[f]} - 1`:`${g[f]}`}(b,f));return`getChannel(getX(${g.join(",")}), vec2(${g.slice(-2).join(",")}))`}this.userCode=1===s?`\n void main(){\n int rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = getChannel(getX(${t[0]} - rc - 1),\n ${t[0]} - rc - 1);\n if(${i}){\n result.g = getChannel(getX(${t[0]} - (rc + 1) - 1),\n ${t[0]} - (rc + 1) - 1);\n }\n setOutput(result);\n }\n `:`\n void main() {\n ${o} rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = ${function l(f){return d(f)}(r.slice())};\n if(${i}){\n result.g = ${function u(f){return f[s-1]="("+f[s-1]+" + 1)",d(f)}(r.slice())};\n }\n if(${a}) {\n result.b = ${function c(f){return f[s-2]="("+f[s-2]+" + 1)",d(f)}(r.slice())};\n if(${i}) {\n result.a = ${function h(f){return f[s-1]="("+f[s-1]+" + 1)",f[s-2]="("+f[s-2]+" + 1)",d(f)}(r.slice())};\n }\n }\n setOutput(result);\n }\n `}}const qX={kernelName:Lu,backendName:"webgl",kernelFunc:function KX(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{dims:i}=s,a=r.shape.length,o=pt(i,r.shape);if(0===a)return hs({inputs:{x:r},backend:e});const l=E().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new XX(r.shape,o):new jX(r.shape,o);return e.runWebGLProgram(l,[r],r.dtype)}};class ZX{constructor(t,e){this.variableNames=["Image"],this.outputShape=[],this.customUniforms=[{name:"params",type:"vec4"}];const s=t[1],r=t[2];this.outputShape=t;let i="";i="number"==typeof e?`float outputValue = ${e.toFixed(2)};`:`\n vec3 fill = vec3(${e.join(",")});\n float outputValue = fill[coords[3]];`,this.userCode=`\n void main() {\n ivec4 coords = getOutputCoords();\n int x = coords[2];\n int y = coords[1];\n float coordXFloat = (float(x) - params[0]) * params[3] -\n (float(y) - params[1]) * params[2];\n float coordYFloat = (float(x) - params[0]) * params[2] +\n (float(y) - params[1]) * params[3];\n int coordX = int(round(coordXFloat + params[0]));\n int coordY = int(round(coordYFloat + params[1]));\n ${i}\n if(coordX >= 0 && coordX < ${r} && coordY >= 0 && coordY < ${s}) {\n outputValue = getImage(coords[0], coordY, coordX, coords[3]);\n }\n setOutput(outputValue);\n }\n `}}const YX={kernelName:Zd,backendName:"webgl",kernelFunc:({inputs:n,attrs:t,backend:e})=>{const{image:s}=n,{radians:r,fillValue:i,center:a}=t,o=e,l=new ZX(s.shape,i),[u,c]=mf(a,s.shape[1],s.shape[2]),h=[[u,c,Math.sin(r),Math.cos(r)]];return o.runWebGLProgram(l,[s],s.dtype,h)}},QX=Nt({opSnippet:"\n // OpenGL ES does not support round function.\n // The algorithm is based on banker's rounding.\n float base = floor(x);\n if ((x - base) < 0.5) {\n return floor(x);\n } else if ((x - base) > 0.5) {\n return ceil(x);\n } else {\n if (mod(base, 2.0) == 0.0) {\n return base;\n } else {\n return base + 1.0;\n }\n }\n"}),JX={kernelName:$o,backendName:"webgl",kernelFunc:QX},e6=Nt({opSnippet:"return inversesqrt(x);",cpuKernelImpl:YU}),t6={kernelName:Do,backendName:"webgl",kernelFunc:e6};class dg{constructor(t,e,s,r,i,a,o=!0,l=!1){this.variableNames=["updates","indices","defaultValue"],this.outputShape=a;const u=Ut(i.length),c=Ut(a.length);let h="";1===s?h="i":2===s&&(h="i, j");let p="";1===r?p="i":2===r&&(p="i, coords[1]");let g="";l&&(g="coords[0], coords[1]"),this.userCode=`\n ${u} strides = ${u}(${i});\n\n void main() {\n ${c} coords = getOutputCoords();\n float sum = 0.0;\n bool found = false;\n for (int i = 0; i < ${t}; i++) {\n int flattenedIndex = 0;\n for (int j = 0; j < ${e}; j++) {\n int index = round(getIndices(${h}));\n flattenedIndex += index * ${e>1?"strides[j]":"strides"};\n }\n if (flattenedIndex == coords[0]) {\n sum += getUpdates(${p});\n found = true;\n }\n }\n setOutput(mix(getDefaultValue(${g}), sum, float(found)));\n }\n `}}class n6{constructor(t,e,s,r,i,a,o=!0,l=!1){this.variableNames=["updates","indices","defaultValue"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=a;const u=Ut(i.length),c=Ut(a.length);let h="";1===s?h="i":2===s&&(h="i, j");let p="";1===r?p="i":2===r&&(p="i, coords[1]");let g="";l&&(g="coords[0], coords[1]"),this.userCode=`\n ${u} strides = ${u}(${i});\n\n void main() {\n ${c} coords = getOutputCoords();\n vec4 sum = vec4(0.);\n vec4 found = vec4(0.);\n for (int i = 0; i < ${t}; i+=2) {\n ivec2 flattenedIndex = ivec2(0);\n for (int j = 0; j < ${e}; j+=2) {\n ivec4 index = round(getIndices(${h}));\n flattenedIndex += index.xz * ${e>1?"strides[j]":"strides"};\n if (j + 1 < ${e}) {\n flattenedIndex += index.yw * ${e>1?"strides[j + 1]":"strides"};\n }\n }\n if (flattenedIndex[0] == coords[0] || flattenedIndex[1] == coords[0] ||\n flattenedIndex[0] == coords[0] + 1 || flattenedIndex[1] == coords[0] + 1) {\n vec4 updVals = getUpdates(${p});\n if (flattenedIndex[0] == coords[0]) {\n sum.xy += updVals.xy;\n found.xy = vec2(1.);\n } else if (flattenedIndex[0] == coords[0] + 1) {\n sum.zw += updVals.xy;\n found.zw = vec2(1.);\n }\n if (flattenedIndex[1] == coords[0]) {\n sum.xy += updVals.zw;\n found.xy = vec2(1.);\n } else if (flattenedIndex[1] == coords[0] + 1) {\n sum.zw += updVals.zw;\n found.zw = vec2(1.);\n }\n }\n }\n setOutput(mix(getDefaultValue(${g}), sum, found));\n }\n `}}const r6={kernelName:Hg,backendName:"webgl",kernelFunc:function s6(n){const{inputs:t,backend:e,attrs:s}=n,{indices:r,updates:i}=t,{shape:a}=s,{sliceRank:o,numUpdates:l,sliceSize:u,strides:c,outputSize:h}=Mi(0,r,a),d=[h/u,u];if(0===h)return e.makeTensorInfo(a,r.dtype);const p=Ne({inputs:{x:r},backend:e,attrs:{shape:[l,o]}}),f=Ne({inputs:{x:i},backend:e,attrs:{shape:[l,u]}}),g=e.makeTensorInfo([],"float32",new Float32Array([0]));let m;m=E().getBool("WEBGL_PACK")?new n6(l,o,p.shape.length,f.shape.length,c,d):new dg(l,o,p.shape.length,f.shape.length,c,d);const x=e.runWebGLProgram(m,[f,p,g],f.dtype),y=Ne({inputs:{x},backend:e,attrs:{shape:a}});return e.disposeIntermediateTensorInfo(p),e.disposeIntermediateTensorInfo(f),e.disposeIntermediateTensorInfo(x),e.disposeIntermediateTensorInfo(g),y}};class i6{constructor(t,e,s,r){this.variableNames=["sortedSequence","values"],this.customUniforms=[{name:"numInputs",type:"int"}],this.outputShape=[t,s];const a=`for (int i = 0; i < ${Math.ceil(Math.log2(e+1))}; ++i) { if (left >= right) break;`,o=2===E().getNumber("WEBGL_VERSION")?"while (left < right) {":a;this.userCode=`\n int findBound(int batch, float value) {\n int left = 0;\n int right = numInputs;\n int mid;\n ${o}\n mid = (left + right) / 2;\n if (getSortedSequence(batch, mid) ${"left"===r?"<":"<="} value) {\n left = mid + 1;\n } else {\n right = mid;\n }\n }\n return right;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int valueIndex = coords[1];\n\n float value = getValues(batch, valueIndex);\n\n setOutput(float(findBound(batch, value)));\n }\n `}}const o6={kernelName:Xg,backendName:"webgl",kernelFunc:function a6(n){const{inputs:t,backend:e,attrs:s}=n,{sortedSequence:r,values:i}=t,{side:a}=s,o=new i6(r.shape[0],r.shape[1],i.shape[1],a);return e.runWebGLProgram(o,[r,i],"int32",[[r.shape[1]]])}};class l6{constructor(t,e,s){let r,i;if(this.variableNames=["c","a","b"],this.outputShape=e,s>4)throw Error(`Where for rank ${s} is not yet supported`);if(1===s)i="resRC",r="resRC";else{const o=["resRC.x","resRC.y","resRC.z","resRC.w"],l=[],u=[];for(let c=0;c= 1.0) {\n setOutput(getA(${i}));\n } else {\n setOutput(getB(${i}));\n }\n }\n `}}const c6={kernelName:Mu,backendName:"webgl",kernelFunc:function u6(n){const{inputs:t,backend:e}=n,{condition:s,t:r,e:i}=t,a=new l6(s.shape.length,r.shape,r.shape.length);return e.runWebGLProgram(a,[s,r,i],ls(r.dtype,i.dtype))}},d6=Nt({opSnippet:`\n // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\n // see: https://arxiv.org/abs/1706.02515\n float scaleAlpha = ${Tc};\n float scale = ${Sc};\n return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n`}),p6={kernelName:Oo,backendName:"webgl",kernelFunc:d6},m6=Nt({opSnippet:Ua+"\n return 1.0 / (1.0 + exp(-1.0 * x));\n",packedOpSnippet:"\n vec4 result = 1.0 / (1.0 + exp(-1.0 * x));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n",cpuKernelImpl:JU}),g6={kernelName:Mo,backendName:"webgl",kernelFunc:m6},x6=Nt({opSnippet:"\n if (isnan(x)) { return 0.0; }\n return sign(x);\n"}),y6={kernelName:Lo,backendName:"webgl",kernelFunc:x6},w6=Nt({opSnippet:Ua+"\n return sin(x);\n",packedOpSnippet:`\n vec4 result = sin(x);\n bvec4 isNaN = isnan(x);\n ${Qi}\n return result;\n`}),_6={kernelName:Po,backendName:"webgl",kernelFunc:w6},T6=Nt({opSnippet:"\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n"}),S6={kernelName:Fo,backendName:"webgl",kernelFunc:T6},C6=Nt({opSnippet:"\n float epsilon = 1.1920928955078125e-7;\n float threshold = log(epsilon) + 2.0;\n\n bool too_large = x > -threshold;\n bool too_small = x < threshold;\n\n float result;\n float exp_x = exp(x);\n\n if (too_large){\n result = x;\n }\n else if (too_small){\n result = exp_x;\n }\n else{\n result = log(exp_x + 1.0);\n }\n return result;\n"}),I6={kernelName:Vo,backendName:"webgl",kernelFunc:C6},E6={kernelName:Bu,backendName:"webgl",kernelFunc:n=>{const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{blockShape:i,paddings:a}=s;T(r.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");const o=i.reduce((x,y)=>x*y),l=[[0,0]];l.push(...a);for(let x=1+i.length;xe.disposeIntermediateTensorInfo(x)),m}},N6={kernelName:Ld,backendName:"webgl",kernelFunc:function k6(n){const{inputs:t,backend:e}=n,{indices:s,values:r,denseShape:i,defaultValue:a}=t;if(1!==i.shape.length)throw new Error(`Dense shape must be a vector, saw:\n ${i.shape}`);if(2!==s.shape.length)throw new Error(`Indices must be a matrix, saw:\n ${s.shape}`);if(1!==r.shape.length)throw new Error(`Values must be a vector, saw:\n ${r.shape}`);if(0!==a.shape.length)throw new Error(`Default value must be a scalar, saw:\n ${a.shape}`);const o=e.readSync(s.dataId),l=e.readSync(r.dataId),u=e.readSync(i.dataId),c=e.readSync(a.dataId)[0],[h,d,p,f,g]=tW(o,s.shape,s.dtype,l,r.dtype,u,c);return[e.makeTensorInfo(d,s.dtype,h),e.makeTensorInfo([d[0]],r.dtype,p),e.makeTensorInfo([f.length],"bool",new Uint8Array(f.map(m=>Number(m)))),e.makeTensorInfo([g.length],s.dtype,new Int32Array(g))]}},R6={kernelName:Md,backendName:"webgl",kernelFunc:function A6(n){const{inputs:t,backend:e}=n,{inputIndices:s,inputShape:r,newShape:i}=t;if(2!==s.shape.length)throw new Error(`Input indices should be a matrix but received shape ${s.shape}`);if(1!==r.shape.length)throw new Error(`Input shape should be a vector but received shape ${r.shape}`);if(1!==i.shape.length)throw new Error(`Target shape should be a vector but received shape ${i.shape}`);const a=Array.from(e.readSync(r.dataId)),o=e.readSync(s.dataId),l=Array.from(e.readSync(i.dataId)),[u,c,h]=nW(o,s.shape,s.dtype,a,l);return[e.makeTensorInfo(c,s.dtype,u),e.makeTensorInfo([h.length],i.dtype,new Int32Array(h))]}},D6={kernelName:Vd,backendName:"webgl",kernelFunc:function $6(n){const{inputs:t,backend:e}=n,{data:s,indices:r,segmentIds:i}=t;if(s.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==r.shape.length)throw new Error(`Indices should be a vector but received shape\n ${r.shape}`);if(1!==i.shape.length)throw new Error(`Segment ids should be a vector but received shape\n ${i.shape}`);const a=e.readSync(s.dataId),o=e.readSync(r.dataId),l=e.readSync(i.dataId),[u,c]=lT(a,s.shape,s.dtype,o,l,!0);return e.makeTensorInfo(c,s.dtype,u)}},P6={kernelName:zd,backendName:"webgl",kernelFunc:function O6(n){const{inputs:t,backend:e}=n,{data:s,indices:r,segmentIds:i}=t;if(s.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==r.shape.length)throw new Error(`Indices should be a vector but received shape\n ${r.shape}`);if(1!==i.shape.length)throw new Error(`Segment ids should be a vector but received shape\n ${i.shape}`);const a=e.readSync(s.dataId),o=e.readSync(r.dataId),l=e.readSync(i.dataId),[u,c]=lT(a,s.shape,s.dtype,o,l);return e.makeTensorInfo(c,s.dtype,u)}},L6={kernelName:Kg,backendName:"webgl",kernelFunc:function F6(n){const{inputs:t,backend:e,attrs:s}=n,{sparseIndices:r,sparseValues:i,defaultValue:a}=t,{outputShape:o}=s,{sliceRank:l,numUpdates:u,sliceSize:c,strides:h,outputSize:d}=Mi(0,r,o),p=!1;if("string"===i.dtype){const x=e.bufferSync(r),y=e.bufferSync(i),b=Wr(e.readSync(a.dataId)[0]),v=QU(x,y,o,d,c,u,l,h,b,p);return e.makeTensorInfo(o,v.dtype,v.values)}const f=new dg(u,l,r.shape.length,i.shape.length,h,[d,1],p),g=e.runWebGLProgram(f,[i,r,a],i.dtype),m=Ne({inputs:{x:g},backend:e,attrs:{shape:o}});return e.disposeIntermediateTensorInfo(g),m}},V6={kernelName:Uu,backendName:"webgl",kernelFunc:function M6(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{numOrSizeSplits:i,axis:a}=s,o=pt(a,r.shape)[0],l=$f(r,i,o),c=new Array(r.shape.length).fill(0),h=r.shape.slice();return l.map(d=>{const p=[...h];p[o]=d;const f=Wa({inputs:{x:r},backend:e,attrs:{begin:c,size:p}});return c[o]+=d,f})}},r1="return sqrt(x);",z6=Nt({opSnippet:r1,packedOpSnippet:r1,cpuKernelImpl:sW}),B6={kernelName:zo,backendName:"webgl",kernelFunc:z6},W6={kernelName:Bd,backendName:"webgl",kernelFunc:Nt({opSnippet:"return x * x;"})},i1="return (a - b) * (a - b);",G6=Ln({opSnippet:i1,packedOpSnippet:i1}),H6={kernelName:Bo,backendName:"webgl",kernelFunc:G6},X6={kernelName:Gu,backendName:"webgl",kernelFunc:function j6(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t;if("string"!==r.dtype)throw new Error("Input must be of datatype string");const a=Ar(e.readSync(r.dataId)),o=rW(a,"string",s);return e.makeTensorInfo(r.shape,"string",o)}},q6={kernelName:jo,backendName:"webgl",kernelFunc:function K6({inputs:n,attrs:t,backend:e}){const{x:s}=n,i=new xr(s.shape,Ts+`\n return x > 0.0 ? 1.0 : float(${t.alpha});\n `);return e.runWebGLProgram(i,[s],s.dtype)}};class Z6{constructor(t,e,s){this.variableNames=["x"],this.outputShape=s;const r=s.length,i=Ut(s.length),a=Ut(s.length);let o="";if(1===r)o="coords * strides + begin";else{let l=0;o=s.map((u,c)=>(l++,1===s.length?`coords * strides[${c}] + begin[${c}]`:`coords[${l-1}] * strides[${c}] + begin[${c}]`)).join(",")}this.userCode=`\n ${i} begin = ${i}(${t});\n ${i} strides = ${i}(${e});\n\n void main() {\n ${a} coords = getOutputCoords();\n setOutput(getX(${o}));\n }\n `}}const Q6={kernelName:Ud,backendName:"webgl",kernelFunc:function Y6(n){const{inputs:t,backend:e,attrs:s}=n,{x:r}=t,{begin:i,end:a,strides:o,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=s,{finalShapeSparse:p,finalShape:f,isIdentity:g,sliceDim0:m,isSimpleSlice:x,begin:y,end:b,strides:v}=Pp(r.shape,i,a,o,l,u,c,h,d);let w;if(g)w=Ne({inputs:{x:r},backend:e,attrs:{shape:f}});else if(m||x){T(r.shape.length>=1,()=>`Input must have rank at least 1, got: ${r.shape.length}`);const I=$p(y,b,v),k=Wa({inputs:{x:r},backend:e,attrs:{begin:y,size:I}});w=Ne({inputs:{x:k},backend:e,attrs:{shape:f}}),e.disposeIntermediateTensorInfo(k)}else if(e.shouldExecuteOnCPU([r])){const k=e.readSync(r.dataId),D=vt(r.shape,r.dtype,k),P=iW(p,D,v,y);w=e.makeTensorInfo(f,r.dtype,P.values)}else{const k=new Z6(y,v,p);w=e.runWebGLProgram(k,[r],r.dtype)}const S=Ne({inputs:{x:w},backend:e,attrs:{shape:f}});return e.disposeIntermediateTensorInfo(w),S}},eK={kernelName:Wd,backendName:"webgl",kernelFunc:function J6(n){const{inputs:t,backend:e,attrs:s}=n,{separator:r,nGramWidths:i,leftPad:a,rightPad:o,padWidth:l,preserveShortSequences:u}=s,{data:c,dataSplits:h}=t,d=e.readSync(c.dataId),p=e.readSync(h.dataId),[f,g]=aW(d,p,r,i,a,o,l,u);return[e.makeTensorInfo([f.length],"string",f),e.makeTensorInfo(h.shape,"int32",g)]}},nK={kernelName:Gd,backendName:"webgl",kernelFunc:function tK(n){const{inputs:t,backend:e,attrs:s}=n,{skipEmpty:r}=s,{input:i,delimiter:a}=t;if("string"!==i.dtype)throw new Error("Input must be of datatype string");if(1!==i.shape.length)throw new Error(`Input must be a vector, got shape: ${i.shape}`);if(0!==a.shape.length)throw new Error(`Delimiter must be a scalar, got shape: ${a.shape}`);const o=e.readSync(i.dataId),l=e.readSync(a.dataId)[0],[u,c,h]=oW(o,l,r),d=c.length;return[e.makeTensorInfo([d,2],"int32",u),e.makeTensorInfo([d],"string",c),e.makeTensorInfo([2],"int32",new Int32Array(h))]}},rK={kernelName:Hd,backendName:"webgl",kernelFunc:function sK(n){const{inputs:t,backend:e,attrs:s}=n,{numBuckets:r}=s,{input:i}=t;if("string"!==i.dtype)throw new Error("Input must be of datatype string");if(r<=0)throw new Error("Number of buckets must be at least 1");const a=e.readSync(i.dataId),o=lW(a,r);return e.makeTensorInfo(i.shape,"int32",o)}},iK=Nt({opSnippet:"return tan(x);"}),aK={kernelName:Wo,backendName:"webgl",kernelFunc:iK},oK=Nt({opSnippet:"\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n"}),lK={kernelName:Go,backendName:"webgl",kernelFunc:oK},cK={kernelName:jg,backendName:"webgl",kernelFunc:function uK(n){const{inputs:t,backend:e}=n,{tensor:r,indices:i,updates:a}=t,{sliceRank:o,numUpdates:l,sliceSize:u,strides:c,outputSize:h}=Mi(0,i,r.shape),d=[h/u,u];if(0===h)return e.makeTensorInfo(r.shape,i.dtype);const p=Ne({inputs:{x:i},backend:e,attrs:{shape:[l,o]}}),f=Ne({inputs:{x:a},backend:e,attrs:{shape:[l,u]}}),g=Ne({inputs:{x:r},backend:e,attrs:{shape:d}}),m=new dg(l,o,p.shape.length,f.shape.length,c,d,!1,!0),x=e.runWebGLProgram(m,[f,p,g],g.dtype),y=Ne({inputs:{x},backend:e,attrs:{shape:r.shape}});return e.disposeIntermediateTensorInfo(p),e.disposeIntermediateTensorInfo(f),e.disposeIntermediateTensorInfo(g),e.disposeIntermediateTensorInfo(x),y}};class hK{constructor(t,e){this.variableNames=["A"];const s=new Array(t.length);for(let a=0;a5)throw Error(`Tile for rank ${t} is not yet supported`);if(1===t)return`imod(resRC, ${n[0]})`;const e=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],s=[];for(let r=0;r5){const l=e.readSync(r.dataId),u="string"===r.dtype?l.map(d=>Wr(d)):l,c=vt(r.shape,r.dtype,u),h=cW(c,i);return e.makeTensorInfo(h.shape,h.dtype,h.values)}const a=new hK(r.shape,i);return e.runWebGLProgram(a,[r],r.dtype)}const pK={kernelName:Ho,backendName:"webgl",kernelFunc:a1};class fK{constructor(t){this.variableNames=["x","indices"],this.customUniforms=[{name:"n",type:"int"},{name:"firstPass",type:"int"},{name:"negativeInf",type:"float"},{name:"dir",type:"int"},{name:"inc",type:"int"}],this.outputShape=t,this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int elemIdx = coords[1];\n\n // We compare elements pair-wise within a group of size 2 * inc.\n // The comparing rule for each group alternates between ascending\n // and descending. Within each group, we compare each pair at\n // positions i and i+inc. To decide whether an element at position i\n // is x0 or x1, we mod it by 2 * inc, if the result is smaller than\n // inc, it is in the first half of the group, we denote it as x0,\n // otherwise we denote it as x1.\n // For example, as shown in the Bitonic top K paper referenced above,\n // Figure5(a) shows that element[1] is in the\n // second half of the group when group size is 2, but it is in the\n // first half of the group when group size is 4.\n\n bool isFirstInPair = imod(elemIdx, 2 * inc) < inc;\n int i = isFirstInPair ? elemIdx : elemIdx - inc;\n\n int i0 = firstPass == 1 ? i : int(getIndices(batch, i));\n int i1 = firstPass == 1 ? i + inc : int(getIndices(batch, i + inc));\n float x0 = i0 < n ? getX(batch, i0) : negativeInf;\n float x1 = i1 < n ? getX(batch, i1) : negativeInf;\n\n // Denotes which direction indices are in (ascending or descending).\n bool reverse = imod(elemIdx, 2 * dir) >= dir;\n bool isGreater = x0 > x1 || (x0 == x1 && i1 > i0);\n if (reverse == isGreater) { // Elements in opposite order of direction\n int iTemp = i0;\n i0 = i1;\n i1 = iTemp;\n }\n if (isFirstInPair) {\n setOutput(float(i0));\n } else {\n setOutput(float(i1));\n }\n }\n "}}class mK{constructor(t){this.variableNames=["x","indices"],this.customUniforms=[{name:"n",type:"int"},{name:"firstPass",type:"int"},{name:"k",type:"int"}],this.outputShape=t,this.userCode="\n void main() {\n // Takes max of indices (0, k), (1, k + 1), (2, k + 2) ...\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int elemIdx = coords[1];\n\n // The output size is half of the previous size.\n // If the previous sequence is | | | | _ _ _ _ | | | | _ _ _ _ (k=4),\n // we only need to output the indices at positions |, the indices at\n // positions _ can be thrown away, see Figure5(b) After Phase 2\n // (Merge phase) in the Bitonic Top K paper referenced above.\n // For example, the paper shows we only need to output the orange bars.\n // The output sequence should look like this | | | | | | | |.\n // Because the sequence is halved, to map the output index back\n // to the previous sequence to find the corresponding value,\n // we need to double the index. When we double the index,\n // we basically interpolate a position, so 2i looks like\n // | _ | _ | _ | _ | _ | _ | _. We move the | to the first k position\n // of each 2k positions by - elemIdx % k. E.g. for output at\n // index 4,5,6,7, we want to get the corresponding element at\n // original index 8,9,10,11, for output at index 8,9,10,11,\n // we want to get the corresponding element at original index\n // 16,17,18,19, so on and so forth.\n\n int i = elemIdx < k ? elemIdx : (elemIdx * 2 - imod(elemIdx, k));\n int i0 = firstPass == 1 ? i : int(getIndices(batch, i));\n int i1 = firstPass == 1 ? i + k : int(getIndices(batch, i + k));\n\n float x0 = getX(batch, i0);\n float x1 = i1 < n ? getX(batch, i1) : x0;\n\n setOutput(x0 >= x1 ? float(i0) : float(i1));\n }\n "}}function ea(n,t){null!==t&&n.disposeIntermediateTensorInfo(t)}function o1(n){let t=1;for(;tl){const P=e.readSync(r.dataId),[B,Y]=hW(P,u,r.dtype,i,a);return[e.makeTensorInfo(B.shape,B.dtype,B.values),e.makeTensorInfo(Y.shape,Y.dtype,Y.values)]}if(0===i)return u[u.length-1]=0,[e.makeTensorInfo(u,r.dtype,[]),e.makeTensorInfo(u,"int32",[])];if(1===c)return[r,Vl({attrs:{shape:u,dtype:"int32",value:0},backend:e})];const h=e.texData.get(r.dataId),d=null!==h&&h.isPacked,p=d?e.unpackTensor(r):r,g=K(u)/c,m=Ne({inputs:{x:p},attrs:{shape:[g,c]},backend:e});d&&ea(e,p);const x=o1(i),y=o1(c);let b=null;const v=()=>null===b?[m,m]:[m,b],w=(P,B,Y)=>{const Q=v(),ee=new fK(Y),ae=b;b=e.runWebGLProgram(ee,Q,"int32",[[c],[null===b?1:0],[Number.NEGATIVE_INFINITY],[P],[B]]),ea(e,ae)};for(let P=1;P=1;Y/=2)w(B,Y,[g,y])}for(let P=y;P>x;P/=2){const B=v(),Y=new mK([g,P/2]),J=b;b=e.runWebGLProgram(Y,B,"int32",[[c],[null===b?1:0],[x]]),ea(e,J);const se=x/2,ae=2*se;for(let te=se;te>=1;te/=2)w(ae,te,b.shape)}let S=b;b=Wa({inputs:{x:b},backend:e,attrs:{begin:0,size:[g,i]}}),ea(e,S);let I=qT({inputs:{x:m,indices:b},backend:e,attrs:{axis:1,batchDims:1}});ea(e,m);const k=u.slice(0,-1);k.push(i),S=b,b=Ne({inputs:{x:b},attrs:{shape:k},backend:e}),ea(e,S);const D=I;return I=Ne({inputs:{x:I},attrs:{shape:k},backend:e}),ea(e,D),[I,b]}};class yK{constructor(t,e,s,r,i,a){this.variableNames=["Image","Transforms"],this.outputShape=a;const o="nearest"===s?1:2;let l;switch(r){case"constant":default:l=1;break;case"reflect":l=2;break;case"wrap":l=3;break;case"nearest":l=4}this.userCode=`\n float mapCoord(float outCoord, float len) {\n float inCoord = outCoord;\n if(${l} == 2) {\n if (inCoord < 0.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz2 = 2.0 * len;\n if (inCoord < sz2) {\n inCoord = sz2 * float(int(float(-inCoord / sz2))) +\n inCoord;\n }\n inCoord = inCoord < -len ? inCoord + sz2 : -inCoord - 1.0;\n }\n } else if (inCoord > len - 1.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz2 = 2.0 * len;\n inCoord -= sz2 * float(int(float(inCoord / sz2)));\n if (inCoord >= len) {\n inCoord = sz2 - inCoord - 1.0;\n }\n }\n }\n return clamp(inCoord, 0.0, len - 1.0);\n } else if (${l} == 3) {\n if (inCoord < 0.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz = len - 1.0;\n inCoord += len * (float(int(float(-inCoord / sz))) + 1.0);\n }\n } else if (inCoord > len - 1.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz = len - 1.0;\n inCoord -= len * float(int(float(inCoord / sz)));\n }\n }\n return clamp(inCoord, 0.0, len - 1.0);\n } else if (${l} == 4) {\n return clamp(outCoord, 0.0, len - 1.0);\n } else {\n return outCoord;\n }\n }\n\n float readWithFillValue(int batch, int coordY, int coordX,\n int channel) {\n float outputValue;\n if (0 <= coordY && coordY < ${t} && 0 <= coordX && coordX < ${e}) {\n outputValue = getImage(batch, coordY, coordX, channel);\n } else {\n outputValue = float(${i});\n }\n return outputValue;\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n float outputValue;\n int batch = coords[0];\n int x = coords[2];\n int y = coords[1];\n int channel = coords[3];\n float xf = float(x);\n float yf = float(y);\n float a1 = getTransforms(batch, 0);\n float a2 = getTransforms(batch, 1);\n float a3 = getTransforms(batch, 2);\n float b1 = getTransforms(batch, 3);\n float b2 = getTransforms(batch, 4);\n float b3 = getTransforms(batch, 5);\n float c1 = getTransforms(batch, 6);\n float c2 = getTransforms(batch, 7);\n float projection = c1 * xf + c2 * yf + 1.0;\n if (projection == 0.0) {\n outputValue = float(${i});\n } else {\n float inX = (a1 * xf + a2 * yf + a3) / projection;\n float inY = (b1 * xf + b2 * yf + b3) / projection;\n float mapX = mapCoord(inX, float(${e}));\n float mapY = mapCoord(inY, float(${t}));\n\n if (${o} == 1) {\n int coordY = int(round(mapY));\n int coordX = int(round(mapX));\n outputValue = readWithFillValue(batch, coordY, coordX,\n channel);\n } else {\n float yFloor = floor(mapY);\n float xFloor = floor(mapX);\n float yCeil = yFloor + 1.0;\n float xCeil = xFloor + 1.0;\n float valueYFloor = (xCeil - mapX) *\n readWithFillValue(batch, int(yFloor), int(xFloor), channel) +\n (mapX - xFloor) *\n readWithFillValue(batch, int(yFloor), int(xCeil), channel);\n float valueYCeil = (xCeil - mapX) *\n readWithFillValue(batch, int(yCeil), int(xFloor), channel) +\n (mapX - xFloor) *\n readWithFillValue(batch, int(yCeil), int(xCeil), channel);\n outputValue = (yCeil - mapY) * valueYFloor +\n (mapY - yFloor) * valueYCeil;\n }\n }\n setOutput(outputValue);\n }\n `}}const vK={kernelName:Xd,backendName:"webgl",kernelFunc:function bK(n){const{inputs:t,backend:e,attrs:s}=n,{image:r,transforms:i}=t,{interpolation:a,fillMode:o,fillValue:l,outputShape:u}=s,[c,h,d,p]=r.shape,[f,g]=u??[h,d],x=new yK(h,d,a,o,l,[c,f,g,p]);return e.runWebGLProgram(x,[r,i],"float32")}},_K={kernelName:Kd,backendName:"webgl",kernelFunc:function wK(n){const{inputs:t,attrs:e,backend:s}=n,{axis:r}=e,{x:i}=t;Dl(i,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");const a=s.readSync(i.dataId),{outputValues:o,outputShape:l,indices:u}=dW(a,r,i.shape,i.dtype);return[s.makeTensorInfo(l,i.dtype,o),s.makeTensorInfo([u.length],"int32",u)]}},SK={kernelName:Hu,backendName:"webgl",kernelFunc:function TK(n){const{inputs:t,backend:e,attrs:s}=n,{value:r}=t;let{axis:i}=s;i<0&&(i+=r.shape.length);const a=r,o=a.shape.length,l=r.shape[i],u=new Array(o-1);let c=0;for(let g=0;ge.disposeIntermediateTensorInfo(g)),f}};class CK{constructor(t,e){this.variableNames=["x","segmentIds"];const s=t.windowSize,r=t.batchSize,i=t.inSize,a=t.numSegments,o=a*Math.ceil(i/s);this.outputShape=[r,o];const c=4*Math.floor(s/4),h=s%4,d="\n sumValue += dot(values, segFilter);\n ";let p="";i%s>0&&(p=`\n if (inIdx < 0 || inIdx >= ${i}) {\n return initializationValue;\n }\n `);let f="";i%s>0&&(f=`\n if (inIdx < 0 || inIdx >= ${i}) {\n return -1.0;\n }\n `),this.userCode=`\n const float initializationValue = 0.0;\n\n float getValue(int batch, int inIdx) {\n ${p}\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n ${f}\n return getSegmentIds(inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = int(floor(float(outIdx) / float(\n ${a})) * float(${s}));\n int currentSeg = int(mod(float(outIdx), float(${a})));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < ${c}; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n );\n\n ${d}\n }\n\n int inIdx = inOffset + ${c};\n if (${1===h}) {\n vec4 values = vec4(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n 0,\n 0,\n 0\n );\n\n ${d}\n } else if (${2===h}) {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n 0,\n 0\n );\n\n ${d}\n } else if (${3===h}) {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n 0\n );\n\n ${d}\n }\n setOutput(sumValue);\n }\n `}}const kK=[a4,l4,h4,f4,g4,b4,w4,T4,E4,N4,$4,P4,M4,U4,H4,X4,q4,J4,tG,sG,aG,dG,fG,yG,vG,CG,EG,RG,WW,OG,VG,WG,qG,QG,eH,nH,rH,lH,cH,dH,fH,gH,yH,wH,TH,EH,NH,$H,PH,LH,VH,UH,GH,XH,qH,ZH,QH,ej,nj,rj,aj,lj,hj,fj,gj,bj,_j,Sj,Ij,UW,kj,LG,Aj,$j,Oj,HW,Fj,Mj,zj,Wj,jj,Kj,Zj,Qj,t5,s5,i5,u5,h5,p5,x5,b5,w5,T5,C5,N5,$5,F5,U5,KW,j5,q5,Q5,tX,wG,sX,iX,oX,cX,fX,XW,gX,yX,vX,_X,TX,_G,M5,CX,kX,RX,ZW,PX,MX,UX,HX,qX,YX,JX,t6,r6,o6,c6,p6,g6,y6,_6,S6,hG,z5,I6,E6,N6,R6,D6,P6,L6,V6,B6,W6,H6,X6,q6,Q6,eK,nK,rK,V5,s4,aK,lK,cK,pK,xK,vK,r4,_K,SK,{kernelName:ju,backendName:"webgl",kernelFunc:function IK(n){const{inputs:t,backend:e,attrs:s}=n,{x:r,segmentIds:i}=t,{numSegments:a}=s,o=r.shape.length,l=[];let u=0;const c=rn([u],o);let h=r;null!=c&&(h=es({inputs:{x:r},backend:e,attrs:{perm:c}}),l.push(h),u=dn(1,o)[0]);const d=ub(h.shape,u,a),p=K([h.shape[u]]),f=Ne({inputs:{x:h},backend:e,attrs:{shape:[-1,p]}});l.push(f);const g=np(r.dtype),m=(v,w,S,I,k)=>{const D=v.shape[0],P=v.shape[1],B=lb(P,k),Q=new CK({windowSize:B,inSize:P,batchSize:D,numSegments:k},w),ee=e.compileAndRun(Q,[v,S],I);if(l.push(ee),ee.shape[1]===k)return ee;const J=s1({backend:e,attrs:{start:0,stop:k,step:1,dtype:"float32"}}),se=a1({inputs:{x:J},backend:e,attrs:{reps:[P/B]}});return l.push(J),l.push(se),m(ee,w,se,I,k)},y=Ne({inputs:{x:m(f,"unsortedSegmentSum",i,g,a)},backend:e,attrs:{shape:d}});let b=y;if(null!=c){l.push(y);const v=Yr(c);b=es({inputs:{x:b},backend:e,attrs:{perm:v}})}return l.forEach(v=>e.disposeIntermediateTensorInfo(v)),b}},rX];for(const n of kK)Qd(n);function l1(n,t){let e=!1;for(let s=0,r=t.length-1;sn[1]!=l>n[1]&&n[0]<(t[r][0]-i)*(n[1]-a)/(l-a)+i&&(e=!e)}return e}function u1(n,t){const e=[];let s=n[0][0],r=n[0][0],i=n[0][1],a=n[0][1];for(const h of n)h[0]r&&(r=h[0]),h[1]a&&(a=h[1]);let o=Math.ceil(s/t)*t,l=Math.ceil(i/t)*t,u=Math.floor(r/t)*t,c=Math.floor(a/t)*t;o>r&&(o=s),l>a&&(l=i),u{this.uniforms_.push({value:t.uniforms[a],location:e.getUniformLocation(this.renderTargetProgram_,a)})})}getGL(){return this.gl_}init(t){const e=this.getGL(),s=[e.drawingBufferWidth*this.scaleRatio_,e.drawingBufferHeight*this.scaleRatio_];if(e.bindFramebuffer(e.FRAMEBUFFER,this.getFrameBuffer()),e.bindRenderbuffer(e.RENDERBUFFER,this.getDepthBuffer()),e.viewport(0,0,s[0],s[1]),!this.renderTargetTextureSize_||this.renderTargetTextureSize_[0]!==s[0]||this.renderTargetTextureSize_[1]!==s[1]){this.renderTargetTextureSize_=s;const r=0,i=e.RGBA,a=0,o=e.RGBA,l=e.UNSIGNED_BYTE,u=null;e.bindTexture(e.TEXTURE_2D,this.renderTargetTexture_),e.texImage2D(e.TEXTURE_2D,r,i,s[0],s[1],a,o,l,u),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.renderTargetTexture_,0),e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,s[0],s[1]),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,this.depthBuffer_)}}apply(t,e,s,r){const i=this.getGL(),a=t.size;if(i.bindFramebuffer(i.FRAMEBUFFER,e?e.getFrameBuffer():null),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,this.renderTargetTexture_),!e){const l=(0,is.v6)(i.canvas);if(!t.renderTargets[l]){const u=i.getContextAttributes();u&&u.preserveDrawingBuffer&&(i.clearColor(0,0,0,0),i.clearDepth(1),i.clear(i.COLOR_BUFFER_BIT|i.DEPTH_BUFFER_BIT)),t.renderTargets[l]=!0}}i.disable(i.DEPTH_TEST),i.enable(i.BLEND),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),i.viewport(0,0,i.drawingBufferWidth,i.drawingBufferHeight),i.bindBuffer(i.ARRAY_BUFFER,this.renderTargetVerticesBuffer_),i.useProgram(this.renderTargetProgram_),i.enableVertexAttribArray(this.renderTargetAttribLocation_),i.vertexAttribPointer(this.renderTargetAttribLocation_,2,i.FLOAT,!1,0,0),i.uniform2f(this.renderTargetUniformLocation_,a[0],a[1]),i.uniform1i(this.renderTargetTextureLocation_,0),i.uniform1f(this.renderTargetOpacityLocation_,t.layerStatesArray[t.layerIndex].opacity),this.applyUniforms(t),s&&s(i,t),i.drawArrays(i.TRIANGLES,0,6),r&&r(i,t)}getFrameBuffer(){return this.frameBuffer_}getDepthBuffer(){return this.depthBuffer_}applyUniforms(t){const e=this.getGL();let s,r=1;this.uniforms_.forEach(function(i){if(s="function"==typeof i.value?i.value(t):i.value,s instanceof HTMLCanvasElement||s instanceof ImageData)i.texture||(i.texture=e.createTexture()),e.activeTexture(e[`TEXTURE${r}`]),e.bindTexture(e.TEXTURE_2D,i.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),s instanceof ImageData?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,s.width,s.height,0,e.UNSIGNED_BYTE,new Uint8Array(s.data)):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,s),e.uniform1i(i.location,r++);else if(Array.isArray(s))switch(s.length){case 2:return void e.uniform2f(i.location,s[0],s[1]);case 3:return void e.uniform3f(i.location,s[0],s[1],s[2]);case 4:return void e.uniform4f(i.location,s[0],s[1],s[2],s[3]);default:return}else"number"==typeof s&&e.uniform1f(i.location,s)})}};var KK=W(973),gn=W(9984);const Wh={};function v1(n){return"shared/"+n}let w1=0;function _1(n){switch(n){case 5121:return Uint8Array.BYTES_PER_ELEMENT;case 5123:return Uint16Array.BYTES_PER_ELEMENT;case 5125:return Uint32Array.BYTES_PER_ELEMENT;default:return Float32Array.BYTES_PER_ELEMENT}}const eq=class QK extends GK.A{constructor(t){super(),t=t||{},this.boundHandleWebGLContextLost_=this.handleWebGLContextLost.bind(this),this.boundHandleWebGLContextRestored_=this.handleWebGLContextRestored.bind(this),this.canvasCacheKey_=t.canvasCacheKey?v1(t.canvasCacheKey):function qK(){const n="unique/"+w1;return w1+=1,n}(),this.gl_=function ZK(n){let t=Wh[n];if(!t){const e=document.createElement("canvas");e.width=1,e.height=1,e.style.position="absolute",e.style.left="0",t={users:0,context:m1(e)},Wh[n]=t}return t.users+=1,t.context}(this.canvasCacheKey_),this.bufferCache_={},this.extensionCache_={},this.currentProgram_=null,this.needsToBeRecreated_=!1;const e=this.gl_.canvas;e.addEventListener("webglcontextlost",this.boundHandleWebGLContextLost_),e.addEventListener("webglcontextrestored",this.boundHandleWebGLContextRestored_),this.offsetRotateMatrix_=(0,gn.vt)(),this.offsetScaleMatrix_=(0,gn.vt)(),this.tmpMat4_=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],this.uniformLocationsByProgram_={},this.attribLocationsByProgram_={},this.uniforms_=[],t.uniforms&&this.setUniforms(t.uniforms),this.postProcessPasses_=t.postProcesses?t.postProcesses.map(s=>new x1({webGlContext:this.gl_,scaleRatio:s.scaleRatio,vertexShader:s.vertexShader,fragmentShader:s.fragmentShader,uniforms:s.uniforms})):[new x1({webGlContext:this.gl_})],this.shaderCompileErrors_=null,this.startTime_=Date.now()}setUniforms(t){this.uniforms_=[],this.addUniforms(t)}addUniforms(t){for(const e in t)this.uniforms_.push({name:e,value:t[e]})}canvasCacheKeyMatches(t){return this.canvasCacheKey_===v1(t)}getExtension(t){if(t in this.extensionCache_)return this.extensionCache_[t];const e=this.gl_.getExtension(t);return this.extensionCache_[t]=e,e}bindBuffer(t){const e=this.gl_,s=(0,is.v6)(t);let r=this.bufferCache_[s];r||(r={buffer:t,webGlBuffer:e.createBuffer()},this.bufferCache_[s]=r),e.bindBuffer(t.getType(),r.webGlBuffer)}flushBufferData(t){const e=this.gl_;this.bindBuffer(t),e.bufferData(t.getType(),t.getArray(),t.getUsage())}deleteBuffer(t){const e=this.gl_,s=(0,is.v6)(t),r=this.bufferCache_[s];r&&!e.isContextLost()&&e.deleteBuffer(r.webGlBuffer),delete this.bufferCache_[s]}disposeInternal(){const t=this.gl_.canvas;t.removeEventListener("webglcontextlost",this.boundHandleWebGLContextLost_),t.removeEventListener("webglcontextrestored",this.boundHandleWebGLContextRestored_),function YK(n){const t=Wh[n];if(!t||(t.users-=1,t.users>0))return;const e=t.context,s=e.getExtension("WEBGL_lose_context");s&&s.loseContext();const r=e.canvas;r.width=1,r.height=1,delete Wh[n]}(this.canvasCacheKey_),delete this.gl_}prepareDraw(t,e,s){const r=this.gl_,i=this.getCanvas(),a=t.size,o=t.pixelRatio;(i.width!==a[0]*o||i.height!==a[1]*o)&&(i.width=a[0]*o,i.height=a[1]*o,i.style.width=a[0]+"px",i.style.height=a[1]+"px");for(let l=this.postProcessPasses_.length-1;l>=0;l--)this.postProcessPasses_[l].init(t);r.bindTexture(r.TEXTURE_2D,null),r.clearColor(0,0,0,0),r.depthRange(0,1),r.clearDepth(1),r.clear(r.COLOR_BUFFER_BIT|r.DEPTH_BUFFER_BIT),r.enable(r.BLEND),r.blendFunc(r.ONE,e?r.ZERO:r.ONE_MINUS_SRC_ALPHA),s?(r.enable(r.DEPTH_TEST),r.depthFunc(r.LEQUAL)):r.disable(r.DEPTH_TEST)}bindTexture(t,e,s){const r=this.gl_;r.activeTexture(r.TEXTURE0+e),r.bindTexture(r.TEXTURE_2D,t),r.uniform1i(this.getUniformLocation(s),e)}prepareDrawToRenderTarget(t,e,s,r){const i=this.gl_,a=e.getSize();i.bindFramebuffer(i.FRAMEBUFFER,e.getFramebuffer()),i.bindRenderbuffer(i.RENDERBUFFER,e.getDepthbuffer()),i.viewport(0,0,a[0],a[1]),i.bindTexture(i.TEXTURE_2D,e.getTexture()),i.clearColor(0,0,0,0),i.depthRange(0,1),i.clearDepth(1),i.clear(i.COLOR_BUFFER_BIT|i.DEPTH_BUFFER_BIT),i.enable(i.BLEND),i.blendFunc(i.ONE,s?i.ZERO:i.ONE_MINUS_SRC_ALPHA),r?(i.enable(i.DEPTH_TEST),i.depthFunc(i.LEQUAL)):i.disable(i.DEPTH_TEST)}drawElements(t,e){const s=this.gl_;this.getExtension("OES_element_index_uint"),s.drawElements(s.TRIANGLES,e-t,s.UNSIGNED_INT,4*t)}finalizeDraw(t,e,s){for(let r=0,i=this.postProcessPasses_.length;r{if(s="function"==typeof i.value?i.value(t):i.value,s instanceof HTMLCanvasElement||s instanceof HTMLImageElement||s instanceof ImageData||s instanceof WebGLTexture){s instanceof WebGLTexture&&!i.texture?(i.prevValue=void 0,i.texture=s):i.texture||(i.prevValue=void 0,i.texture=e.createTexture()),this.bindTexture(i.texture,r,i.name),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE);const a=!(s instanceof HTMLImageElement)||s.complete;!(s instanceof WebGLTexture)&&a&&i.prevValue!==s&&(i.prevValue=s,e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,s)),r++}else if(Array.isArray(s)&&6===s.length)this.setUniformMatrixValue(i.name,function b1(n,t){return n[0]=t[0],n[1]=t[1],n[4]=t[2],n[5]=t[3],n[12]=t[4],n[13]=t[5],n}(this.tmpMat4_,s));else if(Array.isArray(s)&&s.length<=4)switch(s.length){case 2:return void e.uniform2f(this.getUniformLocation(i.name),s[0],s[1]);case 3:return void e.uniform3f(this.getUniformLocation(i.name),s[0],s[1],s[2]);case 4:return void e.uniform4f(this.getUniformLocation(i.name),s[0],s[1],s[2],s[3]);default:return}else"number"==typeof s&&e.uniform1f(this.getUniformLocation(i.name),s)})}useProgram(t,e){this.gl_.useProgram(t),this.currentProgram_=t,this.applyFrameState(e),this.applyUniforms(e)}compileShader(t,e){const s=this.gl_,r=s.createShader(e);return s.shaderSource(r,t),s.compileShader(r),r}getProgram(t,e){const s=this.gl_,r=this.compileShader(t,s.FRAGMENT_SHADER),i=this.compileShader(e,s.VERTEX_SHADER),a=s.createProgram();if(s.attachShader(a,r),s.attachShader(a,i),s.linkProgram(a),!s.getShaderParameter(r,s.COMPILE_STATUS)){const o=`Fragment shader compilation failed: ${s.getShaderInfoLog(r)}`;throw new Error(o)}if(s.deleteShader(r),!s.getShaderParameter(i,s.COMPILE_STATUS)){const o=`Vertex shader compilation failed: ${s.getShaderInfoLog(i)}`;throw new Error(o)}if(s.deleteShader(i),!s.getProgramParameter(a,s.LINK_STATUS)){const o=`GL program linking failed: ${s.getProgramInfoLog(a)}`;throw new Error(o)}return a}getUniformLocation(t){const e=(0,is.v6)(this.currentProgram_);return void 0===this.uniformLocationsByProgram_[e]&&(this.uniformLocationsByProgram_[e]={}),void 0===this.uniformLocationsByProgram_[e][t]&&(this.uniformLocationsByProgram_[e][t]=this.gl_.getUniformLocation(this.currentProgram_,t)),this.uniformLocationsByProgram_[e][t]}getAttributeLocation(t){const e=(0,is.v6)(this.currentProgram_);return void 0===this.attribLocationsByProgram_[e]&&(this.attribLocationsByProgram_[e]={}),void 0===this.attribLocationsByProgram_[e][t]&&(this.attribLocationsByProgram_[e][t]=this.gl_.getAttribLocation(this.currentProgram_,t)),this.attribLocationsByProgram_[e][t]}makeProjectionTransform(t,e){const s=t.size,i=t.viewState.resolution,a=t.viewState.center;return(0,gn.Zz)(e,0,0,2/(i*s[0]),2/(i*s[1]),-t.viewState.rotation,-a[0],-a[1]),e}setUniformFloatValue(t,e){this.gl_.uniform1f(this.getUniformLocation(t),e)}setUniformFloatVec2(t,e){this.gl_.uniform2fv(this.getUniformLocation(t),e)}setUniformFloatVec4(t,e){this.gl_.uniform4fv(this.getUniformLocation(t),e)}setUniformMatrixValue(t,e){this.gl_.uniformMatrix4fv(this.getUniformLocation(t),!1,e)}enableAttributeArray_(t,e,s,r,i){const a=this.getAttributeLocation(t);a<0||(this.gl_.enableVertexAttribArray(a),this.gl_.vertexAttribPointer(a,e,s,!1,r,i))}enableAttributes(t){const e=function JK(n){let t=0;for(let e=0;ethis.size_[0]||e>=this.size_[1])return br[0]=0,br[1]=0,br[2]=0,br[3]=0,br;this.readAll();const s=Math.floor(t)+(this.size_[1]-Math.floor(e)-1)*this.size_[0];return br[0]=this.data_[4*s],br[1]=this.data_[4*s+1],br[2]=this.data_[4*s+2],br[3]=this.data_[4*s+3],br}getTexture(){return this.texture_}getFramebuffer(){return this.framebuffer_}getDepthbuffer(){return this.depthbuffer_}updateSize_(){const t=this.size_,e=this.helper_.getGL();this.texture_=this.helper_.createTexture(t,null,this.texture_),e.bindFramebuffer(e.FRAMEBUFFER,this.framebuffer_),e.viewport(0,0,t[0],t[1]),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.texture_,0),e.bindRenderbuffer(e.RENDERBUFFER,this.depthbuffer_),e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,t[0],t[1]),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,this.depthbuffer_),this.data_=new Uint8Array(t[0]*t[1]*4)}};var ts=W(4378);function rq(n,t){const e=256,s=255;return(t=t||[])[0]=Math.floor(n/e/e/e)/s,t[1]=Math.floor(n/e/e)%e/s,t[2]=Math.floor(n/e)%e/s,t[3]=n%e/s,t}W(2381);var jh=W(3036),pi=W(7443);const uq=class lq extends T1{constructor(t,e){const s=e.uniforms||{},r=(0,gn.vt)();s.u_projectionMatrix=r,super(t,{uniforms:s,postProcesses:e.postProcesses}),this.sourceRevision_=-1,this.verticesBuffer_=new Bh(34962,35048),this.indicesBuffer_=new Bh(34963,35048),this.vertexShader_=e.vertexShader,this.fragmentShader_=e.fragmentShader,this.hitDetectionEnabled_=e.hitDetectionEnabled??!0;const i=e.attributes?e.attributes.map(function(o){return{name:"a_prop_"+o.name,size:1,type:5126}}):[];this.attributes=[{name:"a_position",size:2,type:5126},{name:"a_index",size:1,type:5126}],this.hitDetectionEnabled_&&(this.attributes.push({name:"a_prop_hitColor",size:4,type:5126}),this.attributes.push({name:"a_featureUid",size:1,type:5126})),this.attributes.push(...i),this.customAttributes=e.attributes?e.attributes:[],this.previousExtent_=(0,ts.S5)(),this.currentTransform_=r,this.renderTransform_=(0,gn.vt)(),this.invertRenderTransform_=(0,gn.vt)(),this.renderInstructions_=new Float32Array(0),this.lastSentId=0,this.worker_=function aq(){const n='const e="GENERATE_POLYGON_BUFFERS",t="GENERATE_POINT_BUFFERS",n="GENERATE_LINE_STRING_BUFFERS";function r(e,t){const n=t[0],r=t[1];return t[0]=e[0]*n+e[2]*r+e[4],t[1]=e[1]*n+e[3]*r+e[5],t}function x(e,t){const n=(r=t)[0]*r[3]-r[1]*r[2];var r;!function(e,t){if(!e)throw new Error(t)}(0!==n,"Transformation matrix cannot be inverted");const x=t[0],i=t[1],u=t[2],o=t[3],f=t[4],s=t[5];return e[0]=o/n,e[1]=-i/n,e[2]=-u/n,e[3]=x/n,e[4]=(u*s-o*f)/n,e[5]=-(x*s-i*f)/n,e}function i(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}new Array(6);var u={exports:{}};function o(e,t,n){n=n||2;var r,x,i,u,o,s,l,v=t&&t.length,h=v?t[0]*n:e.length,c=f(e,0,h,n,!0),g=[];if(!c||c.next===c.prev)return g;if(v&&(c=function(e,t,n,r){var x,i,u,o=[];for(x=0,i=t.length;x80*n){r=i=e[0],x=u=e[1];for(var b=n;bi&&(i=o),s>u&&(u=s);l=0!==(l=Math.max(i-r,u-x))?32767/l:0}return a(c,g,n,r,x,l,0),g}function f(e,t,n,r,x){var i,u;if(x===O(e,t,n,r)>0)for(i=t;i=t;i-=r)u=P(i,e[i],e[i+1],u);return u&&m(u,u.next)&&(B(u),u=u.next),u}function s(e,t){if(!e)return e;t||(t=e);var n,r=e;do{if(n=!1,r.steiner||!m(r,r.next)&&0!==w(r.prev,r,r.next))r=r.next;else{if(B(r),(r=t=r.prev)===r.next)break;n=!0}}while(n||r!==t);return t}function a(e,t,n,r,x,i,u){if(e){!u&&i&&function(e,t,n,r){var x=e;do{0===x.z&&(x.z=b(x.x,x.y,t,n,r)),x.prevZ=x.prev,x.nextZ=x.next,x=x.next}while(x!==e);x.prevZ.nextZ=null,x.prevZ=null,function(e){var t,n,r,x,i,u,o,f,s=1;do{for(n=e,e=null,i=null,u=0;n;){for(u++,r=n,o=0,t=0;t0||f>0&&r;)0!==o&&(0===f||!r||n.z<=r.z)?(x=n,n=n.nextZ,o--):(x=r,r=r.nextZ,f--),i?i.nextZ=x:e=x,x.prevZ=i,i=x;n=r}i.nextZ=null,s*=2}while(u>1)}(x)}(e,r,x,i);for(var o,f,p=e;e.prev!==e.next;)if(o=e.prev,f=e.next,i?v(e,r,x,i):l(e))t.push(o.i/n|0),t.push(e.i/n|0),t.push(f.i/n|0),B(e),e=f.next,p=f.next;else if((e=f)===p){u?1===u?a(e=h(s(e),t,n),t,n,r,x,i,2):2===u&&c(e,t,n,r,x,i):a(s(e),t,n,r,x,i,1);break}}}function l(e){var t=e.prev,n=e,r=e.next;if(w(t,n,r)>=0)return!1;for(var x=t.x,i=n.x,u=r.x,o=t.y,f=n.y,s=r.y,a=xi?x>u?x:u:i>u?i:u,h=o>f?o>s?o:s:f>s?f:s,c=r.next;c!==t;){if(c.x>=a&&c.x<=v&&c.y>=l&&c.y<=h&&M(x,o,i,f,u,s,c.x,c.y)&&w(c.prev,c,c.next)>=0)return!1;c=c.next}return!0}function v(e,t,n,r){var x=e.prev,i=e,u=e.next;if(w(x,i,u)>=0)return!1;for(var o=x.x,f=i.x,s=u.x,a=x.y,l=i.y,v=u.y,h=of?o>s?o:s:f>s?f:s,y=a>l?a>v?a:v:l>v?l:v,g=b(h,c,t,n,r),d=b(p,y,t,n,r),Z=e.prevZ,m=e.nextZ;Z&&Z.z>=g&&m&&m.z<=d;){if(Z.x>=h&&Z.x<=p&&Z.y>=c&&Z.y<=y&&Z!==x&&Z!==u&&M(o,a,f,l,s,v,Z.x,Z.y)&&w(Z.prev,Z,Z.next)>=0)return!1;if(Z=Z.prevZ,m.x>=h&&m.x<=p&&m.y>=c&&m.y<=y&&m!==x&&m!==u&&M(o,a,f,l,s,v,m.x,m.y)&&w(m.prev,m,m.next)>=0)return!1;m=m.nextZ}for(;Z&&Z.z>=g;){if(Z.x>=h&&Z.x<=p&&Z.y>=c&&Z.y<=y&&Z!==x&&Z!==u&&M(o,a,f,l,s,v,Z.x,Z.y)&&w(Z.prev,Z,Z.next)>=0)return!1;Z=Z.prevZ}for(;m&&m.z<=d;){if(m.x>=h&&m.x<=p&&m.y>=c&&m.y<=y&&m!==x&&m!==u&&M(o,a,f,l,s,v,m.x,m.y)&&w(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function h(e,t,n){var r=e;do{var x=r.prev,i=r.next.next;!m(x,i)&&A(x,r,r.next,i)&&z(x,i)&&z(i,x)&&(t.push(x.i/n|0),t.push(r.i/n|0),t.push(i.i/n|0),B(r),B(r.next),r=e=i),r=r.next}while(r!==e);return s(r)}function c(e,t,n,r,x,i){var u=e;do{for(var o=u.next.next;o!==u.prev;){if(u.i!==o.i&&Z(u,o)){var f=F(u,o);return u=s(u,u.next),f=s(f,f.next),a(u,t,n,r,x,i,0),void a(f,t,n,r,x,i,0)}o=o.next}u=u.next}while(u!==e)}function p(e,t){return e.x-t.x}function y(e,t){var n=function(e,t){var n,r=t,x=e.x,i=e.y,u=-1/0;do{if(i<=r.y&&i>=r.next.y&&r.next.y!==r.y){var o=r.x+(i-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(o<=x&&o>u&&(u=o,n=r.x=r.x&&r.x>=a&&x!==r.x&&M(in.x||r.x===n.x&&g(n,r)))&&(n=r,v=f)),r=r.next}while(r!==s);return n}(e,t);if(!n)return t;var r=F(n,e);return s(r,r.next),s(n,n.next)}function g(e,t){return w(e.prev,e,t.prev)<0&&w(t.next,e,e.next)<0}function b(e,t,n,r,x){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*x|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*x|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function d(e){var t=e,n=e;do{(t.x=(e-u)*(i-o)&&(e-u)*(r-o)>=(n-u)*(t-o)&&(n-u)*(i-o)>=(x-u)*(r-o)}function Z(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&A(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}(e,t)&&(z(e,t)&&z(t,e)&&function(e,t){var n=e,r=!1,x=(e.x+t.x)/2,i=(e.y+t.y)/2;do{n.y>i!=n.next.y>i&&n.next.y!==n.y&&x<(n.next.x-n.x)*(i-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next}while(n!==e);return r}(e,t)&&(w(e.prev,e,t.prev)||w(e,t.prev,t))||m(e,t)&&w(e.prev,e,e.next)>0&&w(t.prev,t,t.next)>0)}function w(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function m(e,t){return e.x===t.x&&e.y===t.y}function A(e,t,n,r){var x=I(w(e,t,n)),i=I(w(e,t,r)),u=I(w(n,r,e)),o=I(w(n,r,t));return x!==i&&u!==o||(!(0!==x||!E(e,n,t))||(!(0!==i||!E(e,r,t))||(!(0!==u||!E(n,e,r))||!(0!==o||!E(n,t,r)))))}function E(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function I(e){return e>0?1:e<0?-1:0}function z(e,t){return w(e.prev,e,e.next)<0?w(e,t,e.next)>=0&&w(e,e.prev,t)>=0:w(e,t,e.prev)<0||w(e,e.next,t)<0}function F(e,t){var n=new _(e.i,e.x,e.y),r=new _(t.i,t.x,t.y),x=e.next,i=t.prev;return e.next=t,t.prev=e,n.next=x,x.prev=n,r.next=n,n.prev=r,i.next=r,r.prev=i,r}function P(e,t,n,r){var x=new _(e,t,n);return r?(x.next=r.next,x.prev=r,r.next.prev=x,r.next=x):(x.prev=x,x.next=x),x}function B(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function _(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function O(e,t,n,r){for(var x=0,i=t,u=n-r;i0&&(r+=e[x-1].length,n.holes.push(r))}return n};var N=i(u.exports);const R=[],S={vertexPosition:0,indexPosition:0};function T(e,t,n,r,x){e[t+0]=n,e[t+1]=r,e[t+2]=x}function U(e,t,n,r,x,i){const u=3+x,o=e[t+0],f=e[t+1],s=R;s.length=x;for(let n=0;n0?f:2*Math.PI-f}let d=-1,M=-1,Z=l;const w=null!==i;if(null!==x){d=b(y,g,r(s,[...[e[x],e[x+1]]])),Math.cos(d)<=.985&&(Z+=Math.tan((d-Math.PI)/2))}if(w){M=b(g,y,r(s,[...[e[i],e[i+1]]])),Math.cos(M)<=.985&&(Z+=Math.tan((Math.PI-M)/2))}function m(e,t){return 0===t?1e4*e:Math.sign(t)*(1e4*e+Math.abs(t))}return u.push(c[0],c[1],p[0],p[1],d,M,a,m(0,l)),u.push(...f),u.push(c[0],c[1],p[0],p[1],d,M,a,m(1,l)),u.push(...f),u.push(c[0],c[1],p[0],p[1],d,M,a,m(2,l)),u.push(...f),u.push(c[0],c[1],p[0],p[1],d,M,a,m(3,l)),u.push(...f),o.push(h,h+1,h+2,h+1,h+3,h+2),{length:a+Math.sqrt((g[0]-y[0])*(g[0]-y[0])+(g[1]-y[1])*(g[1]-y[1])),angle:Z}}function G(e,t,n,r,x){const i=2+x;let u=t;const o=e.slice(u,u+x);u+=x;const f=e[u++];let s=0;const a=new Array(f-1);for(let t=0;t{const i=r.data;switch(i.type){case t:{const e=3,t=2,n=i.customAttributesSize,r=t+n,x=new Float32Array(i.renderInstructions),u=x.length/r,o=4*u*(n+e),f=new Uint32Array(6*u),s=new Float32Array(o);let a;for(let e=0;e0?c=o+(n-1)*r:l&&(c=i-r);let p=null;n"u"?"data:application/javascript;base64,"+Buffer.from(n,"binary").toString("base64"):URL.createObjectURL(new Blob([n],{type:"application/javascript"})))}(),this.worker_.addEventListener("message",o=>{const l=o.data;if("GENERATE_POINT_BUFFERS"===l.type){const u=l.projectionTransform;this.verticesBuffer_.fromArrayBuffer(l.vertexBuffer),this.helper.flushBufferData(this.verticesBuffer_),this.indicesBuffer_.fromArrayBuffer(l.indexBuffer),this.helper.flushBufferData(this.indicesBuffer_),this.renderTransform_=u,(0,gn.T9)(this.invertRenderTransform_,this.renderTransform_),this.renderInstructions_=new Float32Array(o.data.renderInstructions),l.id===this.lastSentId&&(this.ready=!0),this.getLayer().changed()}}),this.featureCache_={},this.featureCount_=0;const a=this.getLayer().getSource();this.sourceListenKeys_=[(0,pi.KT)(a,Mh.A.ADDFEATURE,this.handleSourceFeatureAdded_,this),(0,pi.KT)(a,Mh.A.CHANGEFEATURE,this.handleSourceFeatureChanged_,this),(0,pi.KT)(a,Mh.A.REMOVEFEATURE,this.handleSourceFeatureDelete_,this),(0,pi.KT)(a,Mh.A.CLEAR,this.handleSourceFeatureClear_,this)],a.forEachFeature(o=>{this.featureCache_[(0,is.v6)(o)]={feature:o,properties:o.getProperties(),geometry:o.getGeometry()},this.featureCount_++})}afterHelperCreated(){this.program_=this.helper.getProgram(this.fragmentShader_,this.vertexShader_),this.hitDetectionEnabled_&&(this.hitRenderTarget_=new nq(this.helper))}handleSourceFeatureAdded_(t){const e=t.feature;this.featureCache_[(0,is.v6)(e)]={feature:e,properties:e.getProperties(),geometry:e.getGeometry()},this.featureCount_++}handleSourceFeatureChanged_(t){const e=t.feature;this.featureCache_[(0,is.v6)(e)]={feature:e,properties:e.getProperties(),geometry:e.getGeometry()}}handleSourceFeatureDelete_(t){delete this.featureCache_[(0,is.v6)(t.feature)],this.featureCount_--}handleSourceFeatureClear_(){this.featureCache_={},this.featureCount_=0}renderFrame(t){const e=this.helper.getGL();this.preRender(e,t);const[s,r,i]=function oq(n,t){const e=n.viewState.projection,r=t.getSource().getWrapX()&&e.canWrapX(),i=e.getExtent(),a=n.extent,o=r?(0,ts.RG)(i):null,l=r?Math.ceil((a[2]-i[2])/o)+1:1;return[r?Math.floor((a[0]-i[0])/o):0,l,o]}(t,this.getLayer());return this.renderWorlds(t,!1,s,r,i),this.helper.finalizeDraw(t,this.dispatchPreComposeEvent,this.dispatchPostComposeEvent),this.hitDetectionEnabled_&&(this.renderWorlds(t,!0,s,r,i),this.hitRenderTarget_.clearCachedData()),this.postRender(e,t),this.helper.getCanvas()}prepareFrameInternal(t){const e=this.getLayer(),s=e.getSource(),r=t.viewState,i=!t.viewHints[d1.A.ANIMATING]&&!t.viewHints[d1.A.INTERACTING],a=!(0,ts.aI)(this.previousExtent_,t.extent),o=this.sourceRevision_4)throw new Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.");return`vec${n.length}(${n.map(ta).join(", ")})`}function Kh(n){const t=(0,Ul._j)(n),e=t.length>3?t[3]:1;return Cg([t[0]/255*e,t[1]/255*e,t[2]/255*e,e])}const Ig={};let Pq=0;function Eg(n){return n in Ig||(Ig[n]=Pq++),Ig[n]}function Pr(n){return ta(Eg(n))}function P1(n){return"u_var_"+n}const kg="getBandValue";function Ot(n){return(t,e,s)=>{const r=e.args.length,i=new Array(r);for(let a=0;a{const s=t.args[0].value;return s in n.properties||(n.properties[s]={name:s,type:t.type}),(n.inFragmentShader?"v_prop_":"a_prop_")+s},[he.ZD.GeometryType]:(n,t,e)=>{const s="geometryType";return s in n.properties||(n.properties[s]={name:s,type:he.cT,evaluator:a=>(0,he.Ye)(a.getGeometry())}),(n.inFragmentShader?"v_prop_":"a_prop_")+s},[he.ZD.Var]:(n,t)=>{const s=t.args[0].value;return s in n.variables||(n.variables[s]={name:s,type:t.type}),P1(s)},[he.ZD.Resolution]:()=>"u_resolution",[he.ZD.Zoom]:()=>"u_zoom",[he.ZD.Time]:()=>"u_time",[he.ZD.Any]:Ot(n=>`(${n.join(" || ")})`),[he.ZD.All]:Ot(n=>`(${n.join(" && ")})`),[he.ZD.Not]:Ot(([n])=>`(!${n})`),[he.ZD.Equal]:Ot(([n,t])=>`(${n} == ${t})`),[he.ZD.NotEqual]:Ot(([n,t])=>`(${n} != ${t})`),[he.ZD.GreaterThan]:Ot(([n,t])=>`(${n} > ${t})`),[he.ZD.GreaterThanOrEqualTo]:Ot(([n,t])=>`(${n} >= ${t})`),[he.ZD.LessThan]:Ot(([n,t])=>`(${n} < ${t})`),[he.ZD.LessThanOrEqualTo]:Ot(([n,t])=>`(${n} <= ${t})`),[he.ZD.Multiply]:Ot(n=>`(${n.join(" * ")})`),[he.ZD.Divide]:Ot(([n,t])=>`(${n} / ${t})`),[he.ZD.Add]:Ot(n=>`(${n.join(" + ")})`),[he.ZD.Subtract]:Ot(([n,t])=>`(${n} - ${t})`),[he.ZD.Clamp]:Ot(([n,t,e])=>`clamp(${n}, ${t}, ${e})`),[he.ZD.Mod]:Ot(([n,t])=>`mod(${n}, ${t})`),[he.ZD.Pow]:Ot(([n,t])=>`pow(${n}, ${t})`),[he.ZD.Abs]:Ot(([n])=>`abs(${n})`),[he.ZD.Floor]:Ot(([n])=>`floor(${n})`),[he.ZD.Ceil]:Ot(([n])=>`ceil(${n})`),[he.ZD.Round]:Ot(([n])=>`floor(${n} + 0.5)`),[he.ZD.Sin]:Ot(([n])=>`sin(${n})`),[he.ZD.Cos]:Ot(([n])=>`cos(${n})`),[he.ZD.Atan]:Ot(([n,t])=>void 0!==t?`atan(${n}, ${t})`:`atan(${n})`),[he.ZD.Sqrt]:Ot(([n])=>`sqrt(${n})`),[he.ZD.Match]:Ot(n=>{const t=n[0],e=n[n.length-1];let s=null;for(let r=n.length-3;r>=1;r-=2)s=`(${t} == ${n[r]} ? ${n[r+1]} : ${s||e})`;return s}),[he.ZD.Between]:Ot(([n,t,e])=>`(${n} >= ${t} && ${n} <= ${e})`),[he.ZD.Interpolate]:Ot(([n,t,...e])=>{let s="";for(let r=0;r{const t=n[n.length-1];let e=null;for(let s=n.length-3;s>=0;s-=2)e=`(${n[s]} ? ${n[s+1]} : ${e||t})`;return e}),[he.ZD.In]:Ot(([n,...t],e)=>{const s=function Oq(n,t){return`operator_${n}_${Object.keys(t.functions).length}`}("in",e),r=[];for(let i=0;i`vec${n.length}(${n.join(", ")})`),[he.ZD.Color]:Ot(n=>{if(1===n.length)return`vec4(vec3(${n[0]} / 255.0), 1.0)`;if(2===n.length)return`(${n[1]} * vec4(vec3(${n[0]} / 255.0), 1.0))`;const t=n.slice(0,3).map(s=>`${s} / 255.0`);return 3===n.length?`vec4(${t.join(", ")}, 1.0)`:`(${n[3]} * vec4(${t.join(", ")}, 1.0))`}),[he.ZD.Band]:Ot(([n,t,e],s)=>{if(!(kg in s.functions)){let r="";const i=s.bandCount||1;for(let a=0;a{const[e,...s]=t.args,r=s.length,i=new Uint8Array(4*r);for(let u=0;u0)return ta(n.value);if((n.type&he.T8)>0)return n.value.toString();if((n.type&he.cT)>0)return Pr(n.value.toString());if((n.type&he.mE)>0)return Kh(n.value);if((n.type&he.Fq)>0)return Cg(n.value);throw new Error(`Unexpected expression ${n.value} (expected type ${(0,he.go)(t)})`)}const qa="#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_screenToWorldMatrix;\nuniform vec2 u_viewportSizePx;\nuniform float u_pixelRatio;\nuniform float u_globalAlpha;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\nuniform float u_rotation;\nuniform vec4 u_renderExtent;\nuniform vec2 u_patternOrigin;\nuniform float u_depth;\nuniform mediump int u_hitDetection;\n\nconst float PI = 3.141592653589793238;\nconst float TWO_PI = 2.0 * PI;\n\n// this used to produce an alpha-premultiplied color from a texture\nvec4 samplePremultiplied(sampler2D sampler, vec2 texCoord) {\n vec4 color = texture2D(sampler, texCoord);\n return vec4(color.rgb * color.a, color.a);\n}\n",Za_fill_color="rgba(255,255,255,0.4)",Za_stroke_color="#3399CC",Za_stroke_width=1.25,Za_circle_radius=5,Za_circle_fill_color="rgba(255,255,255,0.4)",Za_circle_stroke_width=1.25;class zq{constructor(){this.uniforms_=[],this.attributes_=[],this.varyings_=[],this.hasSymbol_=!1,this.symbolSizeExpression_=`vec2(${ta(Za_circle_radius)} + ${ta(.5*Za_circle_stroke_width)})`,this.symbolRotationExpression_="0.0",this.symbolOffsetExpression_="vec2(0.0)",this.symbolColorExpression_=Kh(Za_circle_fill_color),this.texCoordExpression_="vec4(0.0, 0.0, 1.0, 1.0)",this.discardExpression_="false",this.symbolRotateWithView_=!1,this.hasStroke_=!1,this.strokeWidthExpression_=ta(Za_stroke_width),this.strokeColorExpression_=Kh(Za_stroke_color),this.strokeOffsetExpression_="0.",this.strokeCapExpression_=Pr("round"),this.strokeJoinExpression_=Pr("round"),this.strokeMiterLimitExpression_="10.",this.strokeDistanceFieldExpression_="-1000.",this.hasFill_=!1,this.fillColorExpression_=Kh(Za_fill_color),this.vertexShaderFunctions_=[],this.fragmentShaderFunctions_=[]}addUniform(t){return this.uniforms_.push(t),this}addAttribute(t){return this.attributes_.push(t),this}addVarying(t,e,s){return this.varyings_.push({name:t,type:e,expression:s}),this}setSymbolSizeExpression(t){return this.hasSymbol_=!0,this.symbolSizeExpression_=t,this}getSymbolSizeExpression(){return this.symbolSizeExpression_}setSymbolRotationExpression(t){return this.symbolRotationExpression_=t,this}setSymbolOffsetExpression(t){return this.symbolOffsetExpression_=t,this}getSymbolOffsetExpression(){return this.symbolOffsetExpression_}setSymbolColorExpression(t){return this.hasSymbol_=!0,this.symbolColorExpression_=t,this}getSymbolColorExpression(){return this.symbolColorExpression_}setTextureCoordinateExpression(t){return this.texCoordExpression_=t,this}setFragmentDiscardExpression(t){return this.discardExpression_=t,this}getFragmentDiscardExpression(){return this.discardExpression_}setSymbolRotateWithView(t){return this.symbolRotateWithView_=t,this}setStrokeWidthExpression(t){return this.hasStroke_=!0,this.strokeWidthExpression_=t,this}setStrokeColorExpression(t){return this.hasStroke_=!0,this.strokeColorExpression_=t,this}getStrokeColorExpression(){return this.strokeColorExpression_}setStrokeOffsetExpression(t){return this.strokeOffsetExpression_=t,this}setStrokeCapExpression(t){return this.strokeCapExpression_=t,this}setStrokeJoinExpression(t){return this.strokeJoinExpression_=t,this}setStrokeMiterLimitExpression(t){return this.strokeMiterLimitExpression_=t,this}setStrokeDistanceFieldExpression(t){return this.strokeDistanceFieldExpression_=t,this}setFillColorExpression(t){return this.hasFill_=!0,this.fillColorExpression_=t,this}getFillColorExpression(){return this.fillColorExpression_}addVertexShaderFunction(t){this.vertexShaderFunctions_.includes(t)||this.vertexShaderFunctions_.push(t)}addFragmentShaderFunction(t){this.fragmentShaderFunctions_.includes(t)||this.fragmentShaderFunctions_.push(t)}getSymbolVertexShader(){return this.hasSymbol_?`${qa}\n${this.uniforms_.map(function(t){return"uniform "+t+";"}).join("\n")}\nattribute vec2 a_position;\nattribute float a_index;\nattribute vec4 a_prop_hitColor;\n${this.attributes_.map(function(t){return"attribute "+t+";"}).join("\n")}\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\nvarying vec4 v_prop_hitColor;\nvarying vec2 v_centerPx;\nvarying float v_angle;\nvarying vec2 v_quadSizePx;\n${this.varyings_.map(function(t){return"varying "+t.type+" "+t.name+";"}).join("\n")}\n${this.vertexShaderFunctions_.join("\n")}\nvec2 pxToScreen(vec2 coordPx) {\n vec2 scaled = coordPx / u_viewportSizePx / 0.5;\n return scaled;\n}\n\nvec2 screenToPx(vec2 coordScreen) {\n return (coordScreen * 0.5 + 0.5) * u_viewportSizePx;\n}\n\nvoid main(void) {\n v_quadSizePx = ${this.symbolSizeExpression_};\n vec2 halfSizePx = v_quadSizePx * 0.5;\n vec2 centerOffsetPx = ${this.symbolOffsetExpression_};\n vec2 offsetPx = centerOffsetPx;\n if (a_index == 0.0) {\n offsetPx -= halfSizePx;\n } else if (a_index == 1.0) {\n offsetPx += halfSizePx * vec2(1., -1.);\n } else if (a_index == 2.0) {\n offsetPx += halfSizePx;\n } else {\n offsetPx += halfSizePx * vec2(-1., 1.);\n }\n float angle = ${this.symbolRotationExpression_};\n ${this.symbolRotateWithView_?"angle += u_rotation;":""}\n float c = cos(-angle);\n float s = sin(-angle);\n offsetPx = vec2(c * offsetPx.x - s * offsetPx.y, s * offsetPx.x + c * offsetPx.y);\n vec4 center = u_projectionMatrix * vec4(a_position, 0.0, 1.0);\n gl_Position = center + vec4(pxToScreen(offsetPx), u_depth, 0.);\n vec4 texCoord = ${this.texCoordExpression_};\n float u = a_index == 0.0 || a_index == 3.0 ? texCoord.s : texCoord.p;\n float v = a_index == 2.0 || a_index == 3.0 ? texCoord.t : texCoord.q;\n v_texCoord = vec2(u, v);\n v_prop_hitColor = a_prop_hitColor;\n v_angle = angle;\n c = cos(-v_angle);\n s = sin(-v_angle);\n centerOffsetPx = vec2(c * centerOffsetPx.x - s * centerOffsetPx.y, s * centerOffsetPx.x + c * centerOffsetPx.y); \n v_centerPx = screenToPx(center.xy) + centerOffsetPx;\n${this.varyings_.map(function(t){return" "+t.name+" = "+t.expression+";"}).join("\n")}\n}`:null}getSymbolFragmentShader(){return this.hasSymbol_?`${qa}\n${this.uniforms_.map(function(t){return"uniform "+t+";"}).join("\n")}\nvarying vec2 v_texCoord;\nvarying vec4 v_prop_hitColor;\nvarying vec2 v_centerPx;\nvarying float v_angle;\nvarying vec2 v_quadSizePx;\n${this.varyings_.map(function(t){return"varying "+t.type+" "+t.name+";"}).join("\n")}\n${this.fragmentShaderFunctions_.join("\n")}\n\nvoid main(void) {\n if (${this.discardExpression_}) { discard; }\n vec2 coordsPx = gl_FragCoord.xy / u_pixelRatio - v_centerPx; // relative to center\n float c = cos(v_angle);\n float s = sin(v_angle);\n coordsPx = vec2(c * coordsPx.x - s * coordsPx.y, s * coordsPx.x + c * coordsPx.y);\n gl_FragColor = ${this.symbolColorExpression_};\n if (u_hitDetection > 0) {\n if (gl_FragColor.a < 0.05) { discard; };\n gl_FragColor = v_prop_hitColor;\n }\n}`:null}getStrokeVertexShader(){return this.hasStroke_?`${qa}\n${this.uniforms_.map(function(t){return"uniform "+t+";"}).join("\n")}\nattribute vec2 a_position;\nattribute float a_index;\nattribute vec2 a_segmentStart;\nattribute vec2 a_segmentEnd;\nattribute float a_parameters;\nattribute float a_distance;\nattribute vec2 a_joinAngles;\nattribute vec4 a_prop_hitColor;\n${this.attributes_.map(function(t){return"attribute "+t+";"}).join("\n")}\nvarying vec2 v_segmentStart;\nvarying vec2 v_segmentEnd;\nvarying float v_angleStart;\nvarying float v_angleEnd;\nvarying float v_width;\nvarying vec4 v_prop_hitColor;\nvarying float v_distanceOffsetPx;\n${this.varyings_.map(function(t){return"varying "+t.type+" "+t.name+";"}).join("\n")}\n${this.vertexShaderFunctions_.join("\n")}\nvec2 worldToPx(vec2 worldPos) {\n vec4 screenPos = u_projectionMatrix * vec4(worldPos, 0.0, 1.0);\n return (0.5 * screenPos.xy + 0.5) * u_viewportSizePx;\n}\n\nvec4 pxToScreen(vec2 pxPos) {\n vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;\n return vec4(screenPos, u_depth, 1.0);\n}\n\nbool isCap(float joinAngle) {\n return joinAngle < -0.1;\n}\n\nvec2 getJoinOffsetDirection(vec2 normalPx, float joinAngle) {\n float halfAngle = joinAngle / 2.0;\n float c = cos(halfAngle);\n float s = sin(halfAngle);\n vec2 angleBisectorNormal = vec2(s * normalPx.x + c * normalPx.y, -c * normalPx.x + s * normalPx.y);\n float length = 1.0 / s;\n return angleBisectorNormal * length;\n}\n\nvec2 getOffsetPoint(vec2 point, vec2 normal, float joinAngle, float offsetPx) {\n // if on a cap or the join angle is too high, offset the line along the segment normal\n if (cos(joinAngle) > 0.998 || isCap(joinAngle)) {\n return point - normal * offsetPx;\n }\n // offset is applied along the inverted normal (positive offset goes "right" relative to line direction)\n return point - getJoinOffsetDirection(normal, joinAngle) * offsetPx;\n}\n\nvoid main(void) {\n v_angleStart = a_joinAngles.x;\n v_angleEnd = a_joinAngles.y;\n float vertexNumber = floor(abs(a_parameters) / 10000. + 0.5);\n // we're reading the fractional part while keeping the sign (so -4.12 gives -0.12, 3.45 gives 0.45)\n float angleTangentSum = fract(abs(a_parameters) / 10000.) * 10000. * sign(a_parameters);\n\n float lineWidth = ${this.strokeWidthExpression_};\n float lineOffsetPx = ${this.strokeOffsetExpression_};\n\n // compute segment start/end in px with offset\n vec2 segmentStartPx = worldToPx(a_segmentStart);\n vec2 segmentEndPx = worldToPx(a_segmentEnd);\n vec2 tangentPx = normalize(segmentEndPx - segmentStartPx);\n vec2 normalPx = vec2(-tangentPx.y, tangentPx.x);\n segmentStartPx = getOffsetPoint(segmentStartPx, normalPx, v_angleStart, lineOffsetPx),\n segmentEndPx = getOffsetPoint(segmentEndPx, normalPx, v_angleEnd, lineOffsetPx);\n \n // compute current vertex position\n float normalDir = vertexNumber < 0.5 || (vertexNumber > 1.5 && vertexNumber < 2.5) ? 1.0 : -1.0;\n float tangentDir = vertexNumber < 1.5 ? 1.0 : -1.0;\n float angle = vertexNumber < 1.5 ? v_angleStart : v_angleEnd;\n vec2 joinDirection;\n vec2 positionPx = vertexNumber < 1.5 ? segmentStartPx : segmentEndPx;\n // if angle is too high, do not make a proper join\n if (cos(angle) > 0.985 || isCap(angle)) {\n joinDirection = normalPx * normalDir - tangentPx * tangentDir;\n } else {\n joinDirection = getJoinOffsetDirection(normalPx * normalDir, angle);\n }\n positionPx = positionPx + joinDirection * (lineWidth * 0.5 + 1.); // adding 1 pixel for antialiasing\n gl_Position = pxToScreen(positionPx);\n\n v_segmentStart = segmentStartPx;\n v_segmentEnd = segmentEndPx;\n v_width = lineWidth;\n v_prop_hitColor = a_prop_hitColor;\n v_distanceOffsetPx = a_distance / u_resolution - (lineOffsetPx * angleTangentSum);\n${this.varyings_.map(function(t){return" "+t.name+" = "+t.expression+";"}).join("\n")}\n}`:null}getStrokeFragmentShader(){return this.hasStroke_?`${qa}\n${this.uniforms_.map(function(t){return"uniform "+t+";"}).join("\n")}\nvarying vec2 v_segmentStart;\nvarying vec2 v_segmentEnd;\nvarying float v_angleStart;\nvarying float v_angleEnd;\nvarying float v_width;\nvarying vec4 v_prop_hitColor;\nvarying float v_distanceOffsetPx;\n${this.varyings_.map(function(t){return"varying "+t.type+" "+t.name+";"}).join("\n")}\n${this.fragmentShaderFunctions_.join("\n")}\n\nvec2 pxToWorld(vec2 pxPos) {\n vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;\n return (u_screenToWorldMatrix * vec4(screenPos, 0.0, 1.0)).xy;\n}\n\nbool isCap(float joinAngle) {\n return joinAngle < -0.1;\n}\n\nfloat segmentDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n vec2 tangent = normalize(end - start);\n vec2 normal = vec2(-tangent.y, tangent.x);\n vec2 startToPoint = point - start;\n return abs(dot(startToPoint, normal)) - width * 0.5;\n}\n\nfloat buttCapDistanceField(vec2 point, vec2 start, vec2 end) {\n vec2 startToPoint = point - start;\n vec2 tangent = normalize(end - start);\n return dot(startToPoint, -tangent);\n}\n\nfloat squareCapDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n return buttCapDistanceField(point, start, end) - width * 0.5;\n}\n\nfloat roundCapDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n float onSegment = max(0., 1000. * dot(point - start, end - start)); // this is very high when inside the segment\n return length(point - start) - width * 0.5 - onSegment;\n}\n\nfloat roundJoinDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n return roundCapDistanceField(point, start, end, width);\n}\n\nfloat bevelJoinField(vec2 point, vec2 start, vec2 end, float width, float joinAngle) {\n vec2 startToPoint = point - start;\n vec2 tangent = normalize(end - start);\n float c = cos(joinAngle * 0.5);\n float s = sin(joinAngle * 0.5);\n float direction = -sign(sin(joinAngle));\n vec2 bisector = vec2(c * tangent.x - s * tangent.y, s * tangent.x + c * tangent.y);\n float radius = width * 0.5 * s;\n return dot(startToPoint, bisector * direction) - radius;\n}\n\nfloat miterJoinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle) {\n if (cos(joinAngle) > 0.985) { // avoid risking a division by zero\n return bevelJoinField(point, start, end, width, joinAngle);\n }\n float miterLength = 1. / sin(joinAngle * 0.5);\n float miterLimit = ${this.strokeMiterLimitExpression_};\n if (miterLength > miterLimit) {\n return bevelJoinField(point, start, end, width, joinAngle);\n }\n return -1000.;\n}\n\nfloat capDistanceField(vec2 point, vec2 start, vec2 end, float width, float capType) {\n if (capType == ${Pr("butt")}) {\n return buttCapDistanceField(point, start, end);\n } else if (capType == ${Pr("square")}) {\n return squareCapDistanceField(point, start, end, width);\n }\n return roundCapDistanceField(point, start, end, width);\n}\n\nfloat joinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle, float joinType) {\n if (joinType == ${Pr("bevel")}) {\n return bevelJoinField(point, start, end, width, joinAngle);\n } else if (joinType == ${Pr("miter")}) {\n return miterJoinDistanceField(point, start, end, width, joinAngle);\n }\n return roundJoinDistanceField(point, start, end, width);\n}\n\nfloat computeSegmentPointDistance(vec2 point, vec2 start, vec2 end, float width, float joinAngle, float capType, float joinType) {\n if (isCap(joinAngle)) {\n return capDistanceField(point, start, end, width, capType);\n }\n return joinDistanceField(point, start, end, width, joinAngle, joinType);\n}\n\nvoid main(void) {\n vec2 currentPoint = gl_FragCoord.xy / u_pixelRatio;\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n vec2 worldPos = pxToWorld(currentPoint);\n if (\n abs(u_renderExtent[0] - u_renderExtent[2]) > 0.0 && (\n worldPos[0] < u_renderExtent[0] ||\n worldPos[1] < u_renderExtent[1] ||\n worldPos[0] > u_renderExtent[2] ||\n worldPos[1] > u_renderExtent[3]\n )\n ) {\n discard;\n }\n #endif\n if (${this.discardExpression_}) { discard; }\n\n float segmentLength = length(v_segmentEnd - v_segmentStart);\n vec2 segmentTangent = (v_segmentEnd - v_segmentStart) / segmentLength;\n vec2 segmentNormal = vec2(-segmentTangent.y, segmentTangent.x);\n vec2 startToPoint = currentPoint - v_segmentStart;\n float currentLengthPx = max(0., min(dot(segmentTangent, startToPoint), segmentLength)) + v_distanceOffsetPx; \n float currentRadiusPx = abs(dot(segmentNormal, startToPoint));\n float currentRadiusRatio = dot(segmentNormal, startToPoint) * 2. / v_width;\n vec4 color = ${this.strokeColorExpression_} * u_globalAlpha;\n float capType = ${this.strokeCapExpression_};\n float joinType = ${this.strokeJoinExpression_};\n float segmentStartDistance = computeSegmentPointDistance(currentPoint, v_segmentStart, v_segmentEnd, v_width, v_angleStart, capType, joinType);\n float segmentEndDistance = computeSegmentPointDistance(currentPoint, v_segmentEnd, v_segmentStart, v_width, v_angleEnd, capType, joinType);\n float distance = max(\n segmentDistanceField(currentPoint, v_segmentStart, v_segmentEnd, v_width),\n max(segmentStartDistance, segmentEndDistance)\n );\n distance = max(distance, ${this.strokeDistanceFieldExpression_});\n gl_FragColor = color * smoothstep(0.5, -0.5, distance);\n if (u_hitDetection > 0) {\n if (gl_FragColor.a < 0.1) { discard; };\n gl_FragColor = v_prop_hitColor;\n }\n}`:null}getFillVertexShader(){return this.hasFill_?`${qa}\n${this.uniforms_.map(function(t){return"uniform "+t+";"}).join("\n")}\nattribute vec2 a_position;\nattribute vec4 a_prop_hitColor;\n${this.attributes_.map(function(t){return"attribute "+t+";"}).join("\n")}\nvarying vec4 v_prop_hitColor;\n${this.varyings_.map(function(t){return"varying "+t.type+" "+t.name+";"}).join("\n")}\n${this.vertexShaderFunctions_.join("\n")}\nvoid main(void) {\n gl_Position = u_projectionMatrix * vec4(a_position, u_depth, 1.0);\n v_prop_hitColor = a_prop_hitColor;\n${this.varyings_.map(function(t){return" "+t.name+" = "+t.expression+";"}).join("\n")}\n}`:null}getFillFragmentShader(){return this.hasFill_?`${qa}\n${this.uniforms_.map(function(t){return"uniform "+t+";"}).join("\n")}\nvarying vec4 v_prop_hitColor;\n${this.varyings_.map(function(t){return"varying "+t.type+" "+t.name+";"}).join("\n")}\n${this.fragmentShaderFunctions_.join("\n")}\nvec2 pxToWorld(vec2 pxPos) {\n vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;\n return (u_screenToWorldMatrix * vec4(screenPos, 0.0, 1.0)).xy;\n}\n\nvec2 worldToPx(vec2 worldPos) {\n vec4 screenPos = u_projectionMatrix * vec4(worldPos, 0.0, 1.0);\n return (0.5 * screenPos.xy + 0.5) * u_viewportSizePx;\n}\n\nvoid main(void) {\n vec2 pxPos = gl_FragCoord.xy / u_pixelRatio;\n vec2 pxOrigin = worldToPx(u_patternOrigin);\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n vec2 worldPos = pxToWorld(pxPos);\n if (\n abs(u_renderExtent[0] - u_renderExtent[2]) > 0.0 && (\n worldPos[0] < u_renderExtent[0] ||\n worldPos[1] < u_renderExtent[1] ||\n worldPos[0] > u_renderExtent[2] ||\n worldPos[1] > u_renderExtent[3]\n )\n ) {\n discard;\n }\n #endif\n if (${this.discardExpression_}) { discard; }\n gl_FragColor = ${this.fillColorExpression_} * u_globalAlpha;\n if (u_hitDetection > 0) {\n if (gl_FragColor.a < 0.1) { discard; };\n gl_FragColor = v_prop_hitColor;\n }\n}`:null}}function ft(n,t,e){const s=(0,he.SR)();return s.style=n.style,function Lq(n,t,e,s){const r=(0,he.qg)(n,e,t);if((0,he.Xj)(r.type,he.j))throw new Error("No matching type was found");if(!(0,he.ho)(t,r.type)){const i=(0,he.go)(t),a=(0,he.go)(r.type);throw new Error(`Expected expression to be of type ${i}, got ${a}`)}return Ng(r,t,s)}(t,e,s,n)}function F1(n){const t=(0,Ul._j)(n);return[256*t[0]+t[1],256*t[2]+Math.round(255*t[3])]}function L1(n){return n===he.mE?2:n===he.Fq?4:1}function Ag(n){const t=L1(n);return t>1?`vec${t}`:"float"}function qh(n){return(JSON.stringify(n).split("").reduce((e,s)=>(e<<5)-e+s.charCodeAt(0),0)>>>0).toString()}function Rg(n,t,e,s){if(`${s}radius`in n&&"icon-"!==s){let r=ft(e,n[`${s}radius`],he.wl);`${s}radius2`in n&&(r=`max(${r}, ${ft(e,n[`${s}radius2`],he.wl)})`),`${s}stroke-width`in n&&(r=`(${r} + ${ft(e,n[`${s}stroke-width`],he.wl)} * 0.5)`),t.setSymbolSizeExpression(`vec2(${r} * 2. + 0.5)`)}if(`${s}scale`in n){const r=ft(e,n[`${s}scale`],he.wl|he.Fq);t.setSymbolSizeExpression(`${t.getSymbolSizeExpression()} * ${r}`)}`${s}displacement`in n&&t.setSymbolOffsetExpression(ft(e,n[`${s}displacement`],he.Fq)),`${s}rotation`in n&&t.setSymbolRotationExpression(ft(e,n[`${s}rotation`],he.wl)),`${s}rotate-with-view`in n&&t.setSymbolRotateWithView(!!n[`${s}rotate-with-view`])}function M1(n,t,e,s,r){let i="vec4(0.)";null!==t&&(i=t),null!==e&&null!==s&&(i=`mix(${e}, ${i}, smoothstep(-${s} + 0.63, -${s} - 0.58, ${n}))`);let o=`${i} * (1.0 - smoothstep(-0.63, 0.58, ${n}))`;return null!==r&&(o=`${o} * ${r}`),o}function $g(n,t,e,s,r){const i=new Image;let a;return i.crossOrigin=void 0===n[`${s}cross-origin`]?"anonymous":n[`${s}cross-origin`],i.src=n[`${s}src`],i.complete&&i.width&&i.height?a=Cg([i.width,i.height]):(e[`u_texture${r}_size`]=()=>i.complete?[i.width,i.height]:[0,0],t.addUniform(`vec2 u_texture${r}_size`),a=`u_texture${r}_size`),e[`u_texture${r}`]=i,t.addUniform(`sampler2D u_texture${r}`),a}function Dg(n,t,e,s,r){let i=ft(e,n[`${t}offset`],he.Fq);if(`${t}offset-origin`in n)switch(n[`${t}offset-origin`]){case"top-right":i=`vec2(${s}.x, 0.) + ${r} * vec2(-1., 0.) + ${i} * vec2(-1., 1.)`;break;case"bottom-left":i=`vec2(0., ${s}.y) + ${r} * vec2(0., -1.) + ${i} * vec2(1., -1.)`;break;case"bottom-right":i=`${s} - ${r} - ${i}`}return i}const qq=class Kq extends h1.A{constructor(t){super(Object.assign({},t)),this.parseResult_=function Xq(n){const t={inFragmentShader:!1,properties:{},variables:{},functions:{},style:n},e={inFragmentShader:!0,variables:t.variables,properties:{},functions:{},style:n},s=new zq,r={};if("icon-src"in n?function Gq(n,t,e,s,r){let i="vec4(1.0)";"icon-color"in n&&(i=ft(r,n["icon-color"],he.mE)),"icon-opacity"in n&&(i=`${i} * ${ft(r,n["icon-opacity"],he.wl)}`);const a=qh(n["icon-src"]),o=$g(n,t,e,"icon-",a);if(t.setSymbolColorExpression(`${i} * samplePremultiplied(u_texture${a}, v_texCoord)`).setSymbolSizeExpression(o),"icon-width"in n&&"icon-height"in n&&t.setSymbolSizeExpression(`vec2(${ft(s,n["icon-width"],he.wl)}, ${ft(s,n["icon-height"],he.wl)})`),"icon-offset"in n&&"icon-size"in n){const l=ft(s,n["icon-size"],he.Fq),u=t.getSymbolSizeExpression();t.setSymbolSizeExpression(l);const c=Dg(n,"icon-",s,"v_quadSizePx",l);t.setTextureCoordinateExpression(`(vec4((${c}).xyxy) + vec4(0., 0., ${l})) / (${u}).xyxy`)}if(Rg(n,t,s,"icon-"),"icon-anchor"in n){const l=ft(s,n["icon-anchor"],he.Fq);let c,u="1.0";"icon-scale"in n&&(u=ft(s,n["icon-scale"],he.wl|he.Fq)),c="pixels"===n["icon-anchor-x-units"]&&"pixels"===n["icon-anchor-y-units"]?`${l} * ${u}`:"pixels"===n["icon-anchor-x-units"]?`${l} * vec2(vec2(${u}).x, v_quadSizePx.y)`:"pixels"===n["icon-anchor-y-units"]?`${l} * vec2(v_quadSizePx.x, vec2(${u}).x)`:`${l} * v_quadSizePx`;let h=`v_quadSizePx * vec2(0.5, -0.5) + ${c} * vec2(-1., 1.)`;if("icon-anchor-origin"in n)switch(n["icon-anchor-origin"]){case"top-right":h=`v_quadSizePx * -0.5 + ${c}`;break;case"bottom-left":h=`v_quadSizePx * 0.5 - ${c}`;break;case"bottom-right":h=`v_quadSizePx * vec2(-0.5, 0.5) + ${c} * vec2(1., -1.)`}t.setSymbolOffsetExpression(`${t.getSymbolOffsetExpression()} + ${h}`)}}(n,s,r,t,e):"shape-points"in n?function Wq(n,t,e,s,r){r.functions.round="float round(float v) {\n return sign(v) * floor(abs(v) + 0.5);\n}",r.functions.starDistanceField="float starDistanceField(vec2 point, float numPoints, float radius, float radius2, float angle) {\n float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n float c = cos(startAngle);\n float s = sin(startAngle);\n vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n float alpha = TWO_PI / numPoints; // the angle of one sector\n float beta = atan(pointRotated.y, pointRotated.x);\n float gamma = round(beta / alpha) * alpha; // angle in sector\n c = cos(-gamma);\n s = sin(-gamma);\n vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n vec2 tipToPoint = inSector + vec2(-radius, 0.);\n vec2 edgeNormal = vec2(radius2 * sin(alpha * 0.5), -radius2 * cos(alpha * 0.5) + radius);\n return dot(normalize(edgeNormal), tipToPoint);\n}",r.functions.regularDistanceField="float regularDistanceField(vec2 point, float numPoints, float radius, float angle) {\n float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n float c = cos(startAngle);\n float s = sin(startAngle);\n vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n float alpha = TWO_PI / numPoints; // the angle of one sector\n float radiusIn = radius * cos(PI / numPoints);\n float beta = atan(pointRotated.y, pointRotated.x);\n float gamma = round((beta - alpha * 0.5) / alpha) * alpha + alpha * 0.5; // angle in sector from mid\n c = cos(-gamma);\n s = sin(-gamma);\n vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n return inSector.x - radiusIn;\n}",Rg(n,t,s,"shape-");let i=null;"shape-opacity"in n&&(i=ft(r,n["shape-opacity"],he.wl));let a="coordsPx";"shape-scale"in n&&(a=`coordsPx / ${ft(r,n["shape-scale"],he.wl|he.Fq)}`);let o=null;"shape-fill-color"in n&&(o=ft(r,n["shape-fill-color"],he.mE));let l=null;"shape-stroke-color"in n&&(l=ft(r,n["shape-stroke-color"],he.mE));let u=null;"shape-stroke-width"in n&&(u=ft(r,n["shape-stroke-width"],he.wl));const c=ft(r,n["shape-points"],he.wl);let h="0.";"shape-angle"in n&&(h=ft(r,n["shape-angle"],he.wl));let d,p=ft(r,n["shape-radius"],he.wl);if(null!==u&&(p=`${p} + ${u} * 0.5`),"shape-radius2"in n){let g=ft(r,n["shape-radius2"],he.wl);null!==u&&(g=`${g} + ${u} * 0.5`),d=`starDistanceField(${a}, ${c}, ${p}, ${g}, ${h})`}else d=`regularDistanceField(${a}, ${c}, ${p}, ${h})`;const f=M1(d,o,l,u,i);t.setSymbolColorExpression(f)}(n,s,0,t,e):"circle-radius"in n&&function Uq(n,t,e,s,r){r.functions.circleDistanceField="float circleDistanceField(vec2 point, float radius) {\n return length(point) - radius;\n}",Rg(n,t,s,"circle-");let i=null;"circle-opacity"in n&&(i=ft(r,n["circle-opacity"],he.wl));let a="coordsPx";"circle-scale"in n&&(a=`coordsPx / ${ft(r,n["circle-scale"],he.wl|he.Fq)}`);let o=null;"circle-fill-color"in n&&(o=ft(r,n["circle-fill-color"],he.mE));let l=null;"circle-stroke-color"in n&&(l=ft(r,n["circle-stroke-color"],he.mE));let u=ft(r,n["circle-radius"],he.wl),c=null;"circle-stroke-width"in n&&(c=ft(r,n["circle-stroke-width"],he.wl),u=`(${u} + ${c} * 0.5)`);const d=M1(`circleDistanceField(${a}, ${u})`,o,l,c,i);t.setSymbolColorExpression(d)}(n,s,0,t,e),function Hq(n,t,e,s,r){if("stroke-color"in n&&t.setStrokeColorExpression(ft(r,n["stroke-color"],he.mE)),"stroke-pattern-src"in n){const i=qh(n["stroke-pattern-src"]),a=$g(n,t,e,"stroke-pattern-",i);let o=a,l="vec2(0.)";"stroke-pattern-offset"in n&&"stroke-pattern-size"in n&&(o=ft(r,n["stroke-pattern-size"],he.Fq),l=Dg(n,"stroke-pattern-",r,a,o));let u="0.";"stroke-pattern-spacing"in n&&(u=ft(r,n["stroke-pattern-spacing"],he.wl)),r.functions.sampleStrokePattern="vec4 sampleStrokePattern(sampler2D texture, vec2 textureSize, vec2 textureOffset, vec2 sampleSize, float spacingPx, float currentLengthPx, float currentRadiusRatio, float lineWidth) {\n float currentLengthScaled = currentLengthPx * sampleSize.y / lineWidth;\n float spacingScaled = spacingPx * sampleSize.y / lineWidth;\n float uCoordPx = mod(currentLengthScaled, (sampleSize.x + spacingScaled));\n // make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels\n uCoordPx = clamp(uCoordPx, 0.5, sampleSize.x - 0.5);\n float vCoordPx = (-currentRadiusRatio * 0.5 + 0.5) * sampleSize.y;\n vec2 texCoord = (vec2(uCoordPx, vCoordPx) + textureOffset) / textureSize;\n return samplePremultiplied(texture, texCoord);\n}";const c=`u_texture${i}`;let h="1.";"stroke-color"in n&&(h=t.getStrokeColorExpression()),t.setStrokeColorExpression(`${h} * sampleStrokePattern(${c}, ${a}, ${l}, ${o}, ${u}, currentLengthPx, currentRadiusRatio, v_width)`)}if("stroke-width"in n&&t.setStrokeWidthExpression(ft(s,n["stroke-width"],he.wl)),"stroke-offset"in n&&t.setStrokeOffsetExpression(ft(s,n["stroke-offset"],he.wl)),"stroke-line-cap"in n&&t.setStrokeCapExpression(ft(s,n["stroke-line-cap"],he.cT)),"stroke-line-join"in n&&t.setStrokeJoinExpression(ft(s,n["stroke-line-join"],he.cT)),"stroke-miter-limit"in n&&t.setStrokeMiterLimitExpression(ft(s,n["stroke-miter-limit"],he.wl)),"stroke-line-dash"in n){r.functions.getSingleDashDistance=`float getSingleDashDistance(float distance, float radius, float dashOffset, float dashLength, float dashLengthTotal, float capType) {\n float localDistance = mod(distance, dashLengthTotal);\n float distanceSegment = abs(localDistance - dashOffset - dashLength * 0.5) - dashLength * 0.5;\n distanceSegment = min(distanceSegment, dashLengthTotal - localDistance);\n if (capType == ${Pr("square")}) {\n distanceSegment -= v_width * 0.5;\n } else if (capType == ${Pr("round")}) {\n distanceSegment = min(distanceSegment, sqrt(distanceSegment * distanceSegment + radius * radius) - v_width * 0.5);\n }\n return distanceSegment;\n}`;let i=n["stroke-line-dash"].map(p=>ft(r,p,he.wl));i.length%2==1&&(i=[...i,...i]);let a="0.";"stroke-line-dash-offset"in n&&(a=ft(s,n["stroke-line-dash-offset"],he.wl));const l=`dashDistanceField_${qh(n["stroke-line-dash"])}`,u=i.map((p,f)=>`float dashLength${f} = ${p};`),c=i.map((p,f)=>`dashLength${f}`).join(" + ");let h="0.",d=`getSingleDashDistance(distance, radius, ${h}, dashLength0, totalDashLength, capType)`;for(let p=2;pEg(n.variables[o.name]):o.type===he.mE?()=>F1([...(0,Ul._j)(n.variables[o.name]||"#eee")]):o.type===he.T8?()=>n.variables[o.name]?1:0:()=>n.variables[o.name],r[l]=u}),Object.keys(e.properties).forEach(function(a){const o=e.properties[a];t.properties[a]||(t.properties[a]=o);let l=Ag(o.type),u=`a_prop_${o.name}`;o.type===he.mE&&(l="vec4",u=`unpackColor(${u})`,s.addVertexShaderFunction("vec4 unpackColor(vec2 packedColor) {\n return fract(packedColor[1] / 256.0) * vec4(\n fract(floor(packedColor[0] / 256.0) / 256.0),\n fract(packedColor[0] / 256.0),\n fract(floor(packedColor[1] / 256.0) / 256.0),\n 1.0\n );\n}")),s.addVarying(`v_prop_${o.name}`,l,u)}),Object.keys(t.properties).forEach(function(a){const o=t.properties[a];s.addAttribute(`${Ag(o.type)} a_prop_${o.name}`)});const i=Object.keys(t.properties).map(function(a){const o=t.properties[a];let l;return l=o.evaluator?o.evaluator:o.type===he.cT?u=>Eg(u.get(o.name)):o.type===he.mE?u=>F1([...(0,Ul._j)(u.get(o.name)||"#eee")]):o.type===he.T8?u=>u.get(o.name)?1:0:u=>u.get(o.name),{name:o.name,size:L1(o.type),callback:l}});for(const a in t.functions)s.addVertexShaderFunction(t.functions[a]);for(const a in e.functions)s.addFragmentShaderFunction(e.functions[a]);return{builder:s,attributes:i.reduce((a,o)=>({...a,[o.name]:{callback:o.callback,size:o.size}}),{}),uniforms:r}}(t.style),this.styleVariables_=t.style.variables||{},this.hitDetectionDisabled_=!!t.disableHitDetection}createRenderer(){const t=Object.keys(this.parseResult_.attributes).map(e=>({name:e,...this.parseResult_.attributes[e]}));return new uq(this,{vertexShader:this.parseResult_.builder.getSymbolVertexShader(),fragmentShader:this.parseResult_.builder.getSymbolFragmentShader(),hitDetectionEnabled:!this.hitDetectionDisabled_,uniforms:this.parseResult_.uniforms,attributes:t})}updateStyleVariables(t){Object.assign(this.styleVariables_,t),this.changed()}};var Zq=W(5862),Yq=W(2723),Qq=W(1413),Jq=W(3726),e8=W(152),Wl=W(4438),t8=W(1626),n8=W(6372),s8=W(5416),r8=W(3738);var Ms=function(n){return n[n.OutlierTissueDetector=0]="OutlierTissueDetector",n[n.SimilarTissueWithLinearProbe=1]="SimilarTissueWithLinearProbe",n}(Ms||{});function Yh(n,t){const e=n.byteLength/Float32Array.BYTES_PER_ELEMENT;if(e%t!=0)throw new Error("Data length is not a multiple of EMBEDDING_SIZE");return Array.from({length:e/t},(r,i)=>new Float32Array(n,i*t*Float32Array.BYTES_PER_ELEMENT,t))}let i8=(()=>{class n{constructor(e,s,r,i){this.http=e,this.imageViewerPageStore=s,this.snackBar=r,this.dicomwebService=i,this.patchSize=224,this.pixelWidth=1,this.pointLayer=void 0,this.olMap=void 0,this.slideInfo=void 0,this.pointFeatures=new Map,this.slideDescriptor=void 0,this.normalTissueEmbeddings=[],this.normalTissueEmbeddingsElementStd=[],this.tissueMask=[],this.activatePolygonToolSubject=new Qq.B,this.activatePolygonTool$=this.activatePolygonToolSubject.asObservable(),this.layerStyle={"shape-radius":4,"shape-points":["case",["==",["get","weight"],-1],3,6],"shape-fill-color":["case",["==",["get","weight"],-1],"#000000",["interpolate",["linear"],["get","weight"],["var","minWindowLevel"],"#0000ff",["/",["+",["var","minWindowLevel"],["var","minWindowLevel"],["var","maxWindowLevel"]],3],"#00ffff",["/",["+",["var","minWindowLevel"],["var","maxWindowLevel"],["var","maxWindowLevel"]],3],"#ffff00",["var","maxWindowLevel"],"#ff0000"]],"shape-stroke-color":["case",["==",["get","weight"],100],"#000000","rgba(0, 0, 0, 0)"],"shape-stroke-width":["case",["==",["get","weight"],100],2,0],variables:{minWindowLevel:0,maxWindowLevel:50,scale:1}},this.token="",this.serverUrl="",this.tissueMaskPixelWidth=1,this.minWindowLevel=20,this.maxWindowLevel=30,this.classifier=void 0,this.svgContainer=document.createElement("div"),this.svgResolution=1,this.demoType=Ms.OutlierTissueDetector,this.http.get("/assets/config.json",{responseType:"text"}).pipe((0,Ce.M)(a=>{const o=JSON.parse(a);this.token=o.apiKey,this.serverUrl=o?.serverUrl??"/",this.serverUrl.startsWith("/")&&(this.serverUrl=location.origin+this.serverUrl),console.log("Loaded config",this.serverUrl)}),(0,q.W)(a=>{throw console.error("Error loading config:",a),new Error("Failed to load config")}),(0,de.Z)(()=>this.http.get(`${this.serverUrl}/assets/base_centroids_500_v3.bin`,{headers:{Accept:"application/octet-stream"},responseType:"arraybuffer"})),(0,Ce.M)(a=>{this.normalTissueEmbeddings=Yh(a,384),console.log("Loaded normal tissue embeddings. Count:",this.normalTissueEmbeddings.length)}),(0,de.Z)(()=>this.http.get(`${this.serverUrl}/assets/cluster_sd_500_v3.bin`,{headers:{Accept:"application/octet-stream"},responseType:"arraybuffer"})),(0,Ce.M)(a=>{this.normalTissueEmbeddingsElementStd=Yh(a,384),console.log("Loaded normal tissue embeddings srd. Count:",this.normalTissueEmbeddingsElementStd.length)}),(0,de.Z)(()=>this.http.get(`${this.serverUrl}/assets/background_centroids_500_v3.bin`,{headers:{Accept:"application/octet-stream"},responseType:"arraybuffer"})),(0,Ce.M)(a=>{this.normalTissueEmbeddings.push(...Yh(a,384)),console.log("Loaded normal tissue embeddings. Count:",this.normalTissueEmbeddings.length)}),(0,de.Z)(()=>this.http.get(`${this.serverUrl}/assets/background_cluster_sd_500_v3.bin`,{headers:{Accept:"application/octet-stream"},responseType:"arraybuffer"})),(0,Ce.M)(a=>{this.normalTissueEmbeddingsElementStd.push(...Yh(a,384)),console.log("Loaded normal tissue embeddings srd. Count:",this.normalTissueEmbeddingsElementStd.length)}),(0,q.W)(a=>(console.error("Error loading embeddings:",a),this.showText("Failed to load normaltissue embeddings"),(0,nt.of)(void 0)))).subscribe()}setup(e){console.log("setup",e),void 0!==e&&(this.demoType=e),this.olMap||(this.setupOlMap(),this.setupSlideInfo()),this.pointFeatures.clear(),this.updatePointLayer(!0)}setupSlideInfo(){(0,Xe.z)([this.imageViewerPageStore.selectedSplitViewSlideDescriptor$,this.imageViewerPageStore.slideInfoBySlideDescriptorId$]).pipe((0,Ce.M)(([e,s])=>{if(!e||!s||(this.slideInfo=s.get(e.id),!this.slideInfo))return;this.pixelWidth=(this.slideInfo?.levelMap?.[0]?.pixelWidth??1e3)/1e3,this.patchSize=224*this.pixelWidth;const r=this.slideInfo?.levelMap[this.slideInfo.levelMap.length-1];r?.pixelWidth&&(this.tissueMaskPixelWidth=r.pixelWidth/1e3,this.dicomwebService.getEncodedImageTile(e.id,r.properties[0].instanceUid,1).pipe((0,de.Z)(i=>function RK(n){return new et.c(t=>{const e=new Image;e.onload=()=>{try{const s=document.createElement("canvas");s.width=e.width,s.height=e.height;const r=s.getContext("2d");if(!r)return void t.error(new Error("Could not get 2D context from canvas"));r.drawImage(e,0,0),t.next(r.getImageData(0,0,e.width,e.height)),t.complete()}catch(s){t.error(s)}},e.onerror=s=>t.error(s),e.src=`data:image/png;base64,${n}`})}(i)),(0,Ce.M)(i=>{const a=i.data,o=i.width,l=i.height;for(let u=0;u10}}})).subscribe())})).subscribe()}setupOlMap(){(0,Xe.z)([this.imageViewerPageStore.selectedSplitViewSlideDescriptor$,this.imageViewerPageStore.olMapBySlideDescriptorId$,this.imageViewerPageStore.slideInfoBySlideDescriptorId$]).pipe((0,Ce.M)(([e,s,r])=>{const i=s.get(e?.id);this.slideDescriptor=e,this.slideInfo=r.get(e?.id),this.olMap=i,this.olMap&&this.setupWebGlPointLayer()})).subscribe()}setupWebGlPointLayer(){if(!this.olMap)return;this.pointLayer&&(this.olMap.removeLayer(this.pointLayer),this.pointLayer=void 0);const e=new Zq.A({wrapX:!1}),s=new qq({className:"point-layer",source:e,style:this.layerStyle});s.set("name","point-layer"),this.olMap.addLayer(s),this.pointLayer=s,this.layerStyle.variables.scale=this.pixelWidth/(this.olMap.getView().getResolution()??1),this.pointFeatures.clear(),this.slideDescriptor?.id.includes("studies/1.3.6.1.4.1.11129.5.7.999.186491099540.49863605.1739421115085495/series/1.3.6.1.4.1.11129.5.7.0.1.483053107310.39424756.1739422414030669")&&this.http.get(`assets/studies_1.3.6.1.4.1.11129.5.7.999.186491099540.49863605.1739421115085495_series_1.3.6.1.4.1.11129.5.7.0.1.483053107310.39424756.1739422414030669_annotation_${this.demoType===Ms.SimilarTissueWithLinearProbe?"classifier":"outlier"}.svg`,{responseType:"text"}).pipe((0,_e.p)(a=>void 0!==a),(0,Ce.M)(a=>{const o=this.olMap.getLayers().getArray().find(h=>"svg-layer"===h.get("name"));o&&this.olMap.removeLayer(o);const l=this.slideInfo.size.x,u=this.slideInfo.size.y;this.svgContainer.innerHTML=a,this.svgContainer.style.position="absolute",this.svgContainer.style.left="0",this.svgContainer.style.top="0",this.svgContainer.style.minWidth=this.slideInfo?.size.x.toString()??"100%",this.svgContainer.style.minHeight=this.slideInfo?.size.y.toString()??"100%",this.svgContainer.style.pointerEvents="none",this.svgContainer.style.transformOrigin="top left",this.svgContainer.style.opacity="1";const c=this.svgContainer.querySelector("svg");if(c){c.style.width=l.toString(),c.style.height=u.toString(),console.log({width:l,height:u});const h=new h1.A({render:d=>{const p=this.pixelWidth/d.viewState.resolution,f=d.viewState.center,g=d.size,m=(0,gn.MY)(g[0]/2,g[1]/2,p,p,d.viewState.rotation,-f[0]/this.pixelWidth,f[1]/this.pixelWidth);return this.svgContainer.style.transform=m,this.svgContainer}});h.set("name","svg-layer"),this.olMap.addLayer(h)}})).subscribe();const r=this.olMap?.getView();r&&(0,Jq.R)(r,"change:resolution").pipe((0,e8.B)(200)).subscribe(()=>{const a=r.getResolution();if(void 0!==a){const o=this.pixelWidth/a;this.layerStyle.variables.scale=o<.6?o:1.2-o}});const i=document.querySelector("image-viewer-side-nav");i&&(i.style.display=this.demoType===Ms.OutlierTissueDetector?"none":"")}selectPolygonTool(){this.activatePolygonToolSubject.next()}toggleGuidance(){this.svgContainer.style.display="none"===this.svgContainer.style.display?"":"none"}setWindow(e,s){this.minWindowLevel=e*(this.demoType===Ms.OutlierTissueDetector?40:1),this.maxWindowLevel=s*(this.demoType===Ms.OutlierTissueDetector?40:1),this.olMap&&(this.layerStyle.variables.maxWindowLevel=this.maxWindowLevel,this.layerStyle.variables.minWindowLevel=this.minWindowLevel,this.olMap.render(),console.log("windowLevel=",this.minWindowLevel,this.maxWindowLevel))}toPixels(e){return[e[0]/this.pixelWidth,-e[1]/this.pixelWidth]}toMM(e){return[e[0]*this.pixelWidth,-e[1]*this.pixelWidth]}isTissue(e){const s=e[0]/this.tissueMaskPixelWidth-.5,r=-e[1]/this.tissueMaskPixelWidth-.5,i=Math.floor(s),a=Math.ceil(s),o=Math.floor(r),l=Math.ceil(r);if(o<0||l>=this.tissueMask.length||i<0||a>=this.tissueMask[0].length)return this.tissueMask[Math.round(r)][Math.round(s)];const p=s-i,f=r-o;return(1-p)*((1-f)*(this.tissueMask[o][i]?1:0)+f*(this.tissueMask[l][i]?1:0))+p*((1-f)*(this.tissueMask[o][a]?1:0)+f*(this.tissueMask[l][a]?1:0))>=.5}setTargetPolygon(){if(!this.olMap||!this.slideDescriptor)return;const e=this.getTargetFeature()?.getGeometry()?.getCoordinates();if(!e)return void this.showText("Select a polygon to identify target region, then click button.");this.pointLayer?.getSource()?.clear(),this.pointFeatures.clear();const s=u1(e[0],this.patchSize/4);for(const r of s){const i=new Fh.A({geometry:new Lh.A(r)});i.set("weight",-1),this.insertFeature(i)}this.showText(`Computing ${s.length} embeddings for target region. Please wait...`),this.getEmbeddings(s).pipe((0,ue.T)((r,i)=>[...r,...i],[]),(0,de.Z)(r=>{const i=r.map(a=>a.embedding_vector);for(const a of r){const o=new Fh.A({geometry:new Lh.A([a.patch_coordinate.x_origin,a.patch_coordinate.y_origin])});o.set("weight",100),this.insertFeature(o)}return this.updatePointLayer(),this.showText("Classifier training started, please wait..."),function $K(n,t){const e=n[0].length;return new Promise((s,r)=>{const i=n.length,a=t.length,o=i+a,l=Qr([...n,...t].map(h=>Array.from(h)),[o,e]),u=Un([...Array(i).fill(1),...Array(a).fill(0)],"int32"),c=function zD(n){return new I0(n)}();c.add(Bv({units:64,activation:"relu",inputShape:[e]})),c.add(Bv({units:1,activation:"sigmoid"})),c.compile({optimizer:"adam",loss:"binaryCrossentropy",metrics:["accuracy"]}),c.fit(l,u,{epochs:10,batchSize:32,callbacks:{onEpochEnd:(h,d)=>{console.log(`Epoch ${h+1}: Loss = ${d?.loss?.toFixed(4)}, Accuracy = ${d?.acc?.toFixed(4)}`)}}}).then(h=>{console.log("Training complete:",h.history),s(c)}).catch(h=>{console.error("Error training model:",h),r(h)})})}(i,this.normalTissueEmbeddings)}),(0,Ce.M)((r,i)=>{if(this.classifier=r,i){const a=i.history.accuracy,o=i.history.loss,l=a.reduce((d,p)=>d+p,0)/a.length,u=a[a.length-1],c=o.reduce((d,p)=>d+p,0)/o.length,h=o[o.length-1];this.showText(`Classifier training completed. Avg Accuracy: ${l.toFixed(2)}, Last Epoch Accuracy: ${u.toFixed(2)}, Avg Loss: ${c.toFixed(2)}, Last Epoch Loss: ${h.toFixed(2)}`)}else this.showText("Classifier training completed.")})).subscribe()}refineHeatMap(e,s,r){if(e<=0)return void this.showText("Complete.");const i=new Set;for(const a of this.pointFeatures.values()){const o=a.get("weight");if(o<.5&&this.demoType===Ms.SimilarTissueWithLinearProbe||o<15&&this.demoType===Ms.OutlierTissueDetector)continue;const l=a.getGeometry()?.getCoordinates();if(!l1(l,r))continue;const u=56*this.pixelWidth;if(i.add([l[0]+u,l[1]]),i.add([l[0]-u,l[1]]),i.add([l[0],l[1]+u]),i.add([l[0],l[1]-u]),i.add([l[0]+u,l[1]+u]),i.add([l[0]-u,l[1]+u]),i.add([l[0]-u,l[1]-u]),i.add([l[0]+u,l[1]-u]),i.size>1e4)return}this.coordToGraphics([...i.values()]).pipe((0,fe.$)(),(0,Ce.M)(()=>{this.refineHeatMap(e-1,s,r)})).subscribe()}coordToGraphics(e){let s=e.filter(r=>!this.pointFeatures.has(this.coordinatesToHash(r)));s=s.filter(r=>this.isTissue(r));for(const r of s){const i=new Fh.A({geometry:new Lh.A(r)});i.set("weight",-1),this.insertFeature(i)}return this.updatePointLayer(),this.getEmbeddings(s).pipe((0,de.Z)(r=>(0,st.H)(r)),(0,de.Z)(r=>{let i=0;return this.demoType===Ms.OutlierTissueDetector?(i=function AK(n,t,e){let s=1/0;for(let r=0;r(e.dispose(),s.dispose(),r[0])))}(this.classifier,r.embedding_vector).pipe((0,Pe.T)(a=>[r,a]))}),(0,Ce.M)(([r,i])=>{const a=new Fh.A({geometry:new Lh.A([r.patch_coordinate.x_origin,r.patch_coordinate.y_origin])});a.set("weight",i),this.insertFeature(a),this.updatePointLayer(),console.log("!@# weight=",i)}))}showText(e){this.snackBar.open(e,"Close",{duration:5e3})}drawHeatMapForViewport(){if(!this.slideDescriptor||!this.olMap)return;if(0===this.normalTissueEmbeddings.length&&this.demoType===Ms.OutlierTissueDetector)return void this.showText("ERROR: Common embeddings not loaded.");if(void 0===this.classifier&&this.demoType===Ms.SimilarTissueWithLinearProbe)return void this.showText('To use this feature, you must first train a classifier. Please select the polygon drawing tool (if not already selected), draw a polygon around the tissue of interest, and then click "Train".');const e=this.olMap.getView().getResolution();if(e&&e>1e-5)return void this.showText("This feature works best at higher zoom levels. Please zoom in closer to the tissue and try again.");const[s,r,i,a]=this.olMap.getView().calculateExtent(this.olMap.getSize()),o=[[s,r],[i,r],[i,a],[s,a]],l=this.toMM([0,0]),u=this.toMM([this.slideInfo?.size.x,this.slideInfo?.size.y]),h=(o.map(([d,p])=>[Math.max(l[0],Math.min(u[0],d)),Math.max(u[0],Math.min(l[1],p))]),u1(o,this.patchSize));console.log("Viewport grid size= ",h.length),this.showText(`Searching for matching tissue in viewport. Course search ${h.length} points.`),this.coordToGraphics(h).pipe((0,fe.$)(),(0,Ce.M)(()=>{this.showText("Starting fine search."),this.refineHeatMap(4,h,o)})).subscribe()}coordinatesToHash(e){const s=this.toPixels(e);return`${Math.round(s[0]/224*4)},${Math.round(s[1]/224*4)}`}insertFeature(e){const s=this.pointLayer.getSource(),r=this.coordinatesToHash(e.getGeometry()?.getCoordinates());this.pointFeatures.has(r)&&s.removeFeature(this.pointFeatures.get(r)),this.pointFeatures.set(r,e),this.pointLayer?.getSource().addFeature(e)}updatePointLayer(e=!1){if(!this.pointLayer)return;const s=this.pointLayer.getSource();s&&(e&&(s.clear(),s.addFeatures(Array.from(this.pointFeatures.values()))),this.pointLayer.changed())}getTargetFeature(){const e=this.olMap?.getInteractions().getArray().filter(r=>r instanceof Yq.A)[0];if(!e)return;const s=e.getFeatures().getArray();if(1===s.length){const r=s[0];return e.getFeatures().clear(),r}}getEmbeddings(e){if(!this.slideDescriptor)return(0,nt.of)([]);const s=this.slideDescriptor.id,r=e.map(h=>this.toPixels(h));let i=[];const o=[];for(let h=0;h(0,st.H)(i)),(0,Te.S)(128),(0,lt.E)(c),(0,de.Z)(([h,d])=>{if(console.log("coordsBatch.length=",h.length),!this.slideDescriptor||!this.slideInfo)return(0,nt.of)([]);const p={authorization:`Bearer ${d}`,"Accept-Encoding":"gzip, deflate, br"},f=h.map(m=>({x_origin:Math.floor(m[0]-u),y_origin:Math.floor(m[1]-u),width:224,height:224}));return this.http.post(`${this.serverUrl}/predict`,{instances:[{dicom_path:{series_path:s,instance_uids:[this.slideInfo.levelMap[0].properties[0].instanceUid]},bearer_token:d,patch_coordinates:f}]},{headers:p}).pipe((0,Pe.T)(m=>m.predictions[0].result.patch_embeddings),(0,Pe.T)(m=>m.map(x=>{const y=this.toMM([x.patch_coordinate.x_origin+u,x.patch_coordinate.y_origin+u]);return x.patch_coordinate.x_origin=y[0],x.patch_coordinate.y_origin=y[1],x})),function Qe(n=1/0){let t;t=n&&"object"==typeof n?n:{count:n};const{count:e=1/0,delay:s,resetOnSuccess:r=!1}=t;return e<=0?jt.D:(0,Ht.N)((i,a)=>{let l,o=0;const u=()=>{let c=!1;l=i.subscribe((0,at._)(a,h=>{r&&(o=0),a.next(h)},void 0,h=>{if(o++{l?(l.unsubscribe(),l=null,u()):c=!0};if(null!=s){const p="number"==typeof s?(0,Ee.O)(s):(0,Be.Tg)(s(h,o)),f=(0,at._)(a,()=>{f.unsubscribe(),d()},()=>{a.complete()});p.subscribe(f)}else d()}else a.error(h)})),c&&(l.unsubscribe(),l=null,u())};u()})}(2),(0,q.W)(m=>{throw console.error("Error in getEmbeddings:",m),new Error("Failed to get embeddings")}))},6))}static{this.\u0275fac=function(s){return new(s||n)(Wl.KVO(t8.Qq),Wl.KVO(n8.y),Wl.KVO(s8.UG),Wl.KVO(r8.w))}}static{this.\u0275prov=Wl.jDH({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})()},2381:_t=>{"use strict";function ct(R,G,C){C=C||2;var T,Me,Ye,K,Pt,Rt,rt,M=G&&G.length,X=M?G[0]*C:R.length,re=W(R,0,X,C,!0),ie=[];if(!re||re.next===re.prev)return ie;if(M&&(re=function st(R,G,C,M){var re,ie,Ye,X=[];for(re=0,ie=G.length;re80*C){T=Ye=R[0],Me=K=R[1];for(var St=C;StYe&&(Ye=Pt),Rt>K&&(K=Rt);rt=0!==(rt=Math.max(Ye-T,K-Me))?32767/rt:0}return Re(re,ie,C,T,Me,rt,0),ie}function W(R,G,C,M,X){var re,ie;if(X===qe(R,G,C,M)>0)for(re=G;re=G;re-=M)ie=we(re,R[re],R[re+1],ie);return ie&&jt(ie,ie.next)&&(Fe(ie),ie=ie.next),ie}function F(R,G){if(!R)return R;G||(G=R);var M,C=R;do{if(M=!1,C.steiner||!jt(C,C.next)&&0!==at(C.prev,C,C.next))C=C.next;else{if(Fe(C),(C=G=C.prev)===C.next)break;M=!0}}while(M||C!==G);return G}function Re(R,G,C,M,X,re,ie){if(R){!ie&&re&&function ue(R,G,C,M){var X=R;do{0===X.z&&(X.z=Pe(X.x,X.y,G,C,M)),X.prevZ=X.prev,X.nextZ=X.next,X=X.next}while(X!==R);X.prevZ.nextZ=null,X.prevZ=null,function fe(R){var G,C,M,X,re,ie,T,Me,Ye=1;do{for(C=R,R=null,re=null,ie=0;C;){for(ie++,M=C,T=0,G=0;G0||Me>0&&M;)0!==T&&(0===Me||!M||C.z<=M.z)?(X=C,C=C.nextZ,T--):(X=M,M=M.nextZ,Me--),re?re.nextZ=X:R=X,X.prevZ=re,re=X;C=M}re.nextZ=null,Ye*=2}while(ie>1)}(X)}(R,M,X,re);for(var Me,Ye,T=R;R.prev!==R.next;)if(Me=R.prev,Ye=R.next,re?Tt(R,M,X,re):Ke(R))G.push(Me.i/C|0),G.push(R.i/C|0),G.push(Ye.i/C|0),Fe(R),R=Ye.next,T=Ye.next;else if((R=Ye)===T){ie?1===ie?Re(R=nt(F(R),G,C),G,C,M,X,re,2):2===ie&&Xe(R,G,C,M,X,re):Re(F(R),G,C,M,X,re,1);break}}}function Ke(R){var G=R.prev,C=R,M=R.next;if(at(G,C,M)>=0)return!1;for(var X=G.x,re=C.x,ie=M.x,T=G.y,Me=C.y,Ye=M.y,K=Xre?X>ie?X:ie:re>ie?re:ie,rt=T>Me?T>Ye?T:Ye:Me>Ye?Me:Ye,St=M.next;St!==G;){if(St.x>=K&&St.x<=Rt&&St.y>=Pt&&St.y<=rt&<(X,T,re,Me,ie,Ye,St.x,St.y)&&at(St.prev,St,St.next)>=0)return!1;St=St.next}return!0}function Tt(R,G,C,M){var X=R.prev,re=R,ie=R.next;if(at(X,re,ie)>=0)return!1;for(var T=X.x,Me=re.x,Ye=ie.x,K=X.y,Pt=re.y,Rt=ie.y,rt=TMe?T>Ye?T:Ye:Me>Ye?Me:Ye,Vs=K>Pt?K>Rt?K:Rt:Pt>Rt?Pt:Rt,Ya=Pe(rt,St,G,C,M),zs=Pe(Mr,Vs,G,C,M),Ct=R.prevZ,It=R.nextZ;Ct&&Ct.z>=Ya&&It&&It.z<=zs;){if(Ct.x>=rt&&Ct.x<=Mr&&Ct.y>=St&&Ct.y<=Vs&&Ct!==X&&Ct!==ie&<(T,K,Me,Pt,Ye,Rt,Ct.x,Ct.y)&&at(Ct.prev,Ct,Ct.next)>=0||(Ct=Ct.prevZ,It.x>=rt&&It.x<=Mr&&It.y>=St&&It.y<=Vs&&It!==X&&It!==ie&<(T,K,Me,Pt,Ye,Rt,It.x,It.y)&&at(It.prev,It,It.next)>=0))return!1;It=It.nextZ}for(;Ct&&Ct.z>=Ya;){if(Ct.x>=rt&&Ct.x<=Mr&&Ct.y>=St&&Ct.y<=Vs&&Ct!==X&&Ct!==ie&<(T,K,Me,Pt,Ye,Rt,Ct.x,Ct.y)&&at(Ct.prev,Ct,Ct.next)>=0)return!1;Ct=Ct.prevZ}for(;It&&It.z<=zs;){if(It.x>=rt&&It.x<=Mr&&It.y>=St&&It.y<=Vs&&It!==X&&It!==ie&<(T,K,Me,Pt,Ye,Rt,It.x,It.y)&&at(It.prev,It,It.next)>=0)return!1;It=It.nextZ}return!0}function nt(R,G,C){var M=R;do{var X=M.prev,re=M.next.next;!jt(X,re)&&Ee(X,M,M.next,re)&&N(X,re)&&N(re,X)&&(G.push(X.i/C|0),G.push(M.i/C|0),G.push(re.i/C|0),Fe(M),Fe(M.next),M=R=re),M=M.next}while(M!==R);return F(M)}function Xe(R,G,C,M,X,re){var ie=R;do{for(var T=ie.next.next;T!==ie.prev;){if(ie.i!==T.i&&Ht(ie,T)){var Me=O(ie,T);return ie=F(ie,ie.next),Me=F(Me,Me.next),Re(ie,G,C,M,X,re,0),void Re(Me,G,C,M,X,re,0)}T=T.next}ie=ie.next}while(ie!==R)}function Ce(R,G){return R.x-G.x}function q(R,G){var C=function de(R,G){var ie,C=G,M=R.x,X=R.y,re=-1/0;do{if(X<=C.y&&X>=C.next.y&&C.next.y!==C.y){var T=C.x+(X-C.y)*(C.next.x-C.x)/(C.next.y-C.y);if(T<=M&&T>re&&(re=T,ie=C.x=C.x&&C.x>=Ye&&M!==C.x&<(Xie.x||C.x===ie.x&&_e(ie,C)))&&(ie=C,Pt=Rt)),C=C.next}while(C!==Me);return ie}(R,G);if(!C)return G;var M=O(C,R);return F(M,M.next),F(C,C.next)}function _e(R,G){return at(R.prev,R,G.prev)<0&&at(G.next,R,R.next)<0}function Pe(R,G,C,M,X){return(R=1431655765&((R=858993459&((R=252645135&((R=16711935&((R=(R-C)*X|0)|R<<8))|R<<4))|R<<2))|R<<1))|(G=1431655765&((G=858993459&((G=252645135&((G=16711935&((G=(G-M)*X|0)|G<<8))|G<<4))|G<<2))|G<<1))<<1}function Te(R){var G=R,C=R;do{(G.x=(R-ie)*(re-T)&&(R-ie)*(M-T)>=(C-ie)*(G-T)&&(C-ie)*(re-T)>=(X-ie)*(M-T)}function Ht(R,G){return R.next.i!==G.i&&R.prev.i!==G.i&&!function et(R,G){var C=R;do{if(C.i!==R.i&&C.next.i!==R.i&&C.i!==G.i&&C.next.i!==G.i&&Ee(C,C.next,R,G))return!0;C=C.next}while(C!==R);return!1}(R,G)&&(N(R,G)&&N(G,R)&&function oe(R,G){var C=R,M=!1,X=(R.x+G.x)/2,re=(R.y+G.y)/2;do{C.y>re!=C.next.y>re&&C.next.y!==C.y&&X<(C.next.x-C.x)*(re-C.y)/(C.next.y-C.y)+C.x&&(M=!M),C=C.next}while(C!==R);return M}(R,G)&&(at(R.prev,R,G.prev)||at(R,G.prev,G))||jt(R,G)&&at(R.prev,R,R.next)>0&&at(G.prev,G,G.next)>0)}function at(R,G,C){return(G.y-R.y)*(C.x-G.x)-(G.x-R.x)*(C.y-G.y)}function jt(R,G){return R.x===G.x&&R.y===G.y}function Ee(R,G,C,M){var X=Qe(at(R,G,C)),re=Qe(at(R,G,M)),ie=Qe(at(C,M,R)),T=Qe(at(C,M,G));return!!(X!==re&&ie!==T||0===X&&Be(R,C,G)||0===re&&Be(R,M,G)||0===ie&&Be(C,R,M)||0===T&&Be(C,G,M))}function Be(R,G,C){return G.x<=Math.max(R.x,C.x)&&G.x>=Math.min(R.x,C.x)&&G.y<=Math.max(R.y,C.y)&&G.y>=Math.min(R.y,C.y)}function Qe(R){return R>0?1:R<0?-1:0}function N(R,G){return at(R.prev,R,R.next)<0?at(R,G,R.next)>=0&&at(R,R.prev,G)>=0:at(R,G,R.prev)<0||at(R,R.next,G)<0}function O(R,G){var C=new $e(R.i,R.x,R.y),M=new $e(G.i,G.x,G.y),X=R.next,re=G.prev;return R.next=G,G.prev=R,C.next=X,X.prev=C,M.next=C,C.prev=M,re.next=M,M.prev=re,M}function we(R,G,C,M){var X=new $e(R,G,C);return M?(X.next=M.next,X.prev=M,M.next.prev=X,M.next=X):(X.prev=X,X.next=X),X}function Fe(R){R.next.prev=R.prev,R.prev.next=R.next,R.prevZ&&(R.prevZ.nextZ=R.nextZ),R.nextZ&&(R.nextZ.prevZ=R.prevZ)}function $e(R,G,C){this.i=R,this.x=G,this.y=C,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function qe(R,G,C,M){for(var X=0,re=G,ie=C-M;re0&&C.holes.push(M+=R[X-1].length)}return C}},1929:_t=>{_t.exports=W;var ct=null;try{ct=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function W(oe,O,we){this.low=0|oe,this.high=0|O,this.unsigned=!!we}function F(oe){return!0===(oe&&oe.__isLong__)}Object.defineProperty(W.prototype,"__isLong__",{value:!0}),W.isLong=F;var Re={},Ke={};function Tt(oe,O){var we,Fe,$e;return O?($e=0<=(oe>>>=0)&&oe<256)&&(Fe=Ke[oe])?Fe:(we=Xe(oe,(0|oe)<0?-1:0,!0),$e&&(Ke[oe]=we),we):($e=-128<=(oe|=0)&&oe<128)&&(Fe=Re[oe])?Fe:(we=Xe(oe,oe<0?-1:0,!1),$e&&(Re[oe]=we),we)}function nt(oe,O){if(isNaN(oe))return O?Ht:lt;if(O){if(oe<0)return Ht;if(oe>=fe)return Qe}else{if(oe<=-Pe)return et;if(oe+1>=Pe)return Be}return oe<0?nt(-oe,O).neg():Xe(oe%ue|0,oe/ue|0,O)}function Xe(oe,O,we){return new W(oe,O,we)}W.fromInt=Tt,W.fromNumber=nt,W.fromBits=Xe;var st=Math.pow;function Ce(oe,O,we){if(0===oe.length)throw Error("empty string");if("NaN"===oe||"Infinity"===oe||"+Infinity"===oe||"-Infinity"===oe)return lt;if("number"==typeof O?(we=O,O=!1):O=!!O,(we=we||10)<2||360)throw Error("interior hyphen");if(0===Fe)return Ce(oe.substring(1),O,we).neg();for(var $e=nt(st(we,8)),qe=lt,R=0;R>>0:this.low},N.toNumber=function(){return this.unsigned?(this.high>>>0)*ue+(this.low>>>0):this.high*ue+(this.low>>>0)},N.toString=function(O){if((O=O||10)<2||36>>0).toString(O);if((R=C).isZero())return X+G;for(;X.length<6;)X="0"+X;G=""+X+G}},N.getHighBits=function(){return this.high},N.getHighBitsUnsigned=function(){return this.high>>>0},N.getLowBits=function(){return this.low},N.getLowBitsUnsigned=function(){return this.low>>>0},N.getNumBitsAbs=function(){if(this.isNegative())return this.eq(et)?64:this.neg().getNumBitsAbs();for(var O=0!=this.high?this.high:this.low,we=31;we>0&&!(O&1<=0},N.isOdd=function(){return!(1&~this.low)},N.isEven=function(){return!(1&this.low)},N.equals=function(O){return F(O)||(O=q(O)),(this.unsigned===O.unsigned||this.high>>>31!=1||O.high>>>31!=1)&&this.high===O.high&&this.low===O.low},N.eq=N.equals,N.notEquals=function(O){return!this.eq(O)},N.neq=N.notEquals,N.ne=N.notEquals,N.lessThan=function(O){return this.comp(O)<0},N.lt=N.lessThan,N.lessThanOrEqual=function(O){return this.comp(O)<=0},N.lte=N.lessThanOrEqual,N.le=N.lessThanOrEqual,N.greaterThan=function(O){return this.comp(O)>0},N.gt=N.greaterThan,N.greaterThanOrEqual=function(O){return this.comp(O)>=0},N.gte=N.greaterThanOrEqual,N.ge=N.greaterThanOrEqual,N.compare=function(O){if(F(O)||(O=q(O)),this.eq(O))return 0;var we=this.isNegative(),Fe=O.isNegative();return we&&!Fe?-1:!we&&Fe?1:this.unsigned?O.high>>>0>this.high>>>0||O.high===this.high&&O.low>>>0>this.low>>>0?-1:1:this.sub(O).isNegative()?-1:1},N.comp=N.compare,N.negate=function(){return!this.unsigned&&this.eq(et)?et:this.not().add(at)},N.neg=N.negate,N.add=function(O){F(O)||(O=q(O));var X=0,re=0,ie=0,T=0;return ie+=(T+=(65535&this.low)+(65535&O.low))>>>16,re+=(ie+=(this.low>>>16)+(O.low>>>16))>>>16,X+=(re+=(65535&this.high)+(65535&O.high))>>>16,X+=(this.high>>>16)+(O.high>>>16),Xe((ie&=65535)<<16|(T&=65535),(X&=65535)<<16|(re&=65535),this.unsigned)},N.subtract=function(O){return F(O)||(O=q(O)),this.add(O.neg())},N.sub=N.subtract,N.multiply=function(O){if(this.isZero())return lt;if(F(O)||(O=q(O)),ct)return Xe(ct.mul(this.low,this.high,O.low,O.high),ct.get_high(),this.unsigned);if(O.isZero())return lt;if(this.eq(et))return O.isOdd()?et:lt;if(O.eq(et))return this.isOdd()?et:lt;if(this.isNegative())return O.isNegative()?this.neg().mul(O.neg()):this.neg().mul(O).neg();if(O.isNegative())return this.mul(O.neg()).neg();if(this.lt(Te)&&O.lt(Te))return nt(this.toNumber()*O.toNumber(),this.unsigned);var $e=65535&this.high,qe=this.low>>>16,R=65535&this.low,C=65535&O.high,M=O.low>>>16,X=65535&O.low,re=0,ie=0,T=0,Me=0;return T+=(Me+=R*X)>>>16,ie+=(T+=qe*X)>>>16,T&=65535,ie+=(T+=R*M)>>>16,re+=(ie+=$e*X)>>>16,ie&=65535,re+=(ie+=qe*M)>>>16,ie&=65535,re+=(ie+=R*C)>>>16,re+=(this.high>>>16)*X+$e*M+qe*C+R*(O.high>>>16),Xe((T&=65535)<<16|(Me&=65535),(re&=65535)<<16|(ie&=65535),this.unsigned)},N.mul=N.multiply,N.divide=function(O){if(F(O)||(O=q(O)),O.isZero())throw Error("division by zero");var Fe,$e,qe;if(ct)return this.unsigned||-2147483648!==this.high||-1!==O.low||-1!==O.high?Xe((this.unsigned?ct.div_u:ct.div_s)(this.low,this.high,O.low,O.high),ct.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?Ht:lt;if(this.unsigned){if(O.unsigned||(O=O.toUnsigned()),O.gt(this))return Ht;if(O.gt(this.shru(1)))return jt;qe=Ht}else{if(this.eq(et))return O.eq(at)||O.eq(Ee)?et:O.eq(et)?at:(Fe=this.shr(1).div(O).shl(1)).eq(lt)?O.isNegative()?at:Ee:($e=this.sub(O.mul(Fe)),qe=Fe.add($e.div(O)));if(O.eq(et))return this.unsigned?Ht:lt;if(this.isNegative())return O.isNegative()?this.neg().div(O.neg()):this.neg().div(O).neg();if(O.isNegative())return this.div(O.neg()).neg();qe=lt}for($e=this;$e.gte(O);){Fe=Math.max(1,Math.floor($e.toNumber()/O.toNumber()));for(var G=Math.ceil(Math.log(Fe)/Math.LN2),C=G<=48?1:st(2,G-48),M=nt(Fe),X=M.mul(O);X.isNegative()||X.gt($e);)X=(M=nt(Fe-=C,this.unsigned)).mul(O);M.isZero()&&(M=at),qe=qe.add(M),$e=$e.sub(X)}return qe},N.div=N.divide,N.modulo=function(O){return F(O)||(O=q(O)),ct?Xe((this.unsigned?ct.rem_u:ct.rem_s)(this.low,this.high,O.low,O.high),ct.get_high(),this.unsigned):this.sub(this.div(O).mul(O))},N.mod=N.modulo,N.rem=N.modulo,N.not=function(){return Xe(~this.low,~this.high,this.unsigned)},N.and=function(O){return F(O)||(O=q(O)),Xe(this.low&O.low,this.high&O.high,this.unsigned)},N.or=function(O){return F(O)||(O=q(O)),Xe(this.low|O.low,this.high|O.high,this.unsigned)},N.xor=function(O){return F(O)||(O=q(O)),Xe(this.low^O.low,this.high^O.high,this.unsigned)},N.shiftLeft=function(O){return F(O)&&(O=O.toInt()),0==(O&=63)?this:O<32?Xe(this.low<>>32-O,this.unsigned):Xe(0,this.low<>>O|this.high<<32-O,this.high>>O,this.unsigned):Xe(this.high>>O-32,this.high>=0?0:-1,this.unsigned)},N.shr=N.shiftRight,N.shiftRightUnsigned=function(O){if(F(O)&&(O=O.toInt()),0==(O&=63))return this;var we=this.high;return O<32?Xe(this.low>>>O|we<<32-O,we>>>O,this.unsigned):Xe(32===O?we:we>>>O-32,0,this.unsigned)},N.shru=N.shiftRightUnsigned,N.shr_u=N.shiftRightUnsigned,N.toSigned=function(){return this.unsigned?Xe(this.low,this.high,!1):this},N.toUnsigned=function(){return this.unsigned?this:Xe(this.low,this.high,!0)},N.toBytes=function(O){return O?this.toBytesLE():this.toBytesBE()},N.toBytesLE=function(){var O=this.high,we=this.low;return[255&we,we>>>8&255,we>>>16&255,we>>>24,255&O,O>>>8&255,O>>>16&255,O>>>24]},N.toBytesBE=function(){var O=this.high,we=this.low;return[O>>>24,O>>>16&255,O>>>8&255,255&O,we>>>24,we>>>16&255,we>>>8&255,255&we]},W.fromBytes=function(O,we,Fe){return Fe?W.fromBytesLE(O,we):W.fromBytesBE(O,we)},W.fromBytesLE=function(O,we){return new W(O[0]|O[1]<<8|O[2]<<16|O[3]<<24,O[4]|O[5]<<8|O[6]<<16|O[7]<<24,we)},W.fromBytesBE=function(O,we){return new W(O[4]<<24|O[5]<<16|O[6]<<8|O[7],O[0]<<24|O[1]<<16|O[2]<<8|O[3],we)}},8814:(_t,ct,W)=>{var F=W(2495),Re=W(7850),Ke=W(5704),Tt=W(8114),nt=W(9040),Xe=W(4478),st=W(7454);st.alea=F,st.xor128=Re,st.xorwow=Ke,st.xorshift7=Tt,st.xor4096=nt,st.tychei=Xe,_t.exports=st},2495:function(_t,ct,W){var F;!function(Re,Ke){function nt(q){var de=this,_e=function Ce(){var q=4022871197;return function(_e){_e=String(_e);for(var ue=0;ue<_e.length;ue++){var fe=.02519603282416938*(q+=_e.charCodeAt(ue));fe-=q=fe>>>0,q=(fe*=q)>>>0,q+=4294967296*(fe-=q)}return 2.3283064365386963e-10*(q>>>0)}}();de.next=function(){var ue=2091639*de.s0+2.3283064365386963e-10*de.c;return de.s0=de.s1,de.s1=de.s2,de.s2=ue-(de.c=0|ue)},de.c=1,de.s0=_e(" "),de.s1=_e(" "),de.s2=_e(" "),de.s0-=_e(q),de.s0<0&&(de.s0+=1),de.s1-=_e(q),de.s1<0&&(de.s1+=1),de.s2-=_e(q),de.s2<0&&(de.s2+=1),_e=null}function Xe(q,de){return de.c=q.c,de.s0=q.s0,de.s1=q.s1,de.s2=q.s2,de}function st(q,de){var _e=new nt(q),ue=de&&de.state,fe=_e.next;return fe.int32=function(){return 4294967296*_e.next()|0},fe.double=function(){return fe()+11102230246251565e-32*(2097152*fe()|0)},fe.quick=fe,ue&&("object"==typeof ue&&Xe(ue,_e),fe.state=function(){return Xe(_e,{})}),fe}Ke&&Ke.exports?Ke.exports=st:W.amdD&&W.amdO?void 0!==(F=function(){return st}.call(ct,W,ct,Ke))&&(Ke.exports=F):this.alea=st}(0,_t=W.nmd(_t))},4478:function(_t,ct,W){var F;!function(Re,Ke){function nt(Ce){var q=this,de="";q.next=function(){var ue=q.b,fe=q.c,Pe=q.d,Te=q.a;return ue=ue<<25^ue>>>7^fe,fe=fe-Pe|0,Pe=Pe<<24^Pe>>>8^Te,Te=Te-ue|0,q.b=ue=ue<<20^ue>>>12^fe,q.c=fe=fe-Pe|0,q.d=Pe<<16^fe>>>16^Te,q.a=Te-ue|0},q.a=0,q.b=0,q.c=-1640531527,q.d=1367130551,Ce===Math.floor(Ce)?(q.a=Ce/4294967296|0,q.b=0|Ce):de+=Ce;for(var _e=0;_e>>0)/4294967296};return ue.double=function(){do{var Te=((de.next()>>>11)+(de.next()>>>0)/4294967296)/(1<<21)}while(0===Te);return Te},ue.int32=de.next,ue.quick=ue,_e&&("object"==typeof _e&&Xe(_e,de),ue.state=function(){return Xe(de,{})}),ue}Ke&&Ke.exports?Ke.exports=st:W.amdD&&W.amdO?void 0!==(F=function(){return st}.call(ct,W,ct,Ke))&&(Ke.exports=F):this.tychei=st}(0,_t=W.nmd(_t))},7850:function(_t,ct,W){var F;!function(Re,Ke){function nt(Ce){var q=this,de="";q.x=0,q.y=0,q.z=0,q.w=0,q.next=function(){var ue=q.x^q.x<<11;return q.x=q.y,q.y=q.z,q.z=q.w,q.w^=q.w>>>19^ue^ue>>>8},Ce===(0|Ce)?q.x=Ce:de+=Ce;for(var _e=0;_e>>0)/4294967296};return ue.double=function(){do{var Te=((de.next()>>>11)+(de.next()>>>0)/4294967296)/(1<<21)}while(0===Te);return Te},ue.int32=de.next,ue.quick=ue,_e&&("object"==typeof _e&&Xe(_e,de),ue.state=function(){return Xe(de,{})}),ue}Ke&&Ke.exports?Ke.exports=st:W.amdD&&W.amdO?void 0!==(F=function(){return st}.call(ct,W,ct,Ke))&&(Ke.exports=F):this.xor128=st}(0,_t=W.nmd(_t))},9040:function(_t,ct,W){var F;!function(Re,Ke){function nt(Ce){var q=this;q.next=function(){var Pe,Te,_e=q.w,ue=q.X,fe=q.i;return q.w=_e=_e+1640531527|0,Te=ue[fe+34&127],Pe=ue[fe=fe+1&127],Te^=Te<<13,Pe^=Pe<<17,Te=ue[fe]=(Te^=Te>>>15)^(Pe^=Pe>>>12),q.i=fe,Te+(_e^_e>>>16)|0},function de(_e,ue){var fe,Pe,Te,lt,Ht,at=[],jt=128;for(ue===(0|ue)?(Pe=ue,ue=null):(ue+="\0",Pe=0,jt=Math.max(jt,ue.length)),Te=0,lt=-32;lt>>15,Pe^=Pe<<4,Pe^=Pe>>>13,lt>=0&&(Te=0==(fe=at[127<]^=Pe+(Ht=Ht+1640531527|0))?Te+1:0);for(Te>=128&&(at[127&(ue&&ue.length||0)]=-1),Te=127,lt=512;lt>0;--lt)Pe=at[Te+34&127],fe=at[Te=Te+1&127],Pe^=Pe<<13,fe^=fe<<17,at[Te]=(Pe^=Pe>>>15)^(fe^=fe>>>12);_e.w=Ht,_e.X=at,_e.i=Te}(q,Ce)}function Xe(Ce,q){return q.i=Ce.i,q.w=Ce.w,q.X=Ce.X.slice(),q}function st(Ce,q){null==Ce&&(Ce=+new Date);var de=new nt(Ce),_e=q&&q.state,ue=function(){return(de.next()>>>0)/4294967296};return ue.double=function(){do{var Te=((de.next()>>>11)+(de.next()>>>0)/4294967296)/(1<<21)}while(0===Te);return Te},ue.int32=de.next,ue.quick=ue,_e&&(_e.X&&Xe(_e,de),ue.state=function(){return Xe(de,{})}),ue}Ke&&Ke.exports?Ke.exports=st:W.amdD&&W.amdO?void 0!==(F=function(){return st}.call(ct,W,ct,Ke))&&(Ke.exports=F):this.xor4096=st}(0,_t=W.nmd(_t))},8114:function(_t,ct,W){var F;!function(Re,Ke){function nt(Ce){var q=this;q.next=function(){var fe,Pe,_e=q.x,ue=q.i;return fe=_e[ue],Pe=(fe^=fe>>>7)^fe<<24,Pe^=(fe=_e[ue+1&7])^fe>>>10,Pe^=(fe=_e[ue+3&7])^fe>>>3,Pe^=(fe=_e[ue+4&7])^fe<<7,fe=_e[ue+7&7],_e[ue]=Pe^=(fe^=fe<<13)^fe<<9,q.i=ue+1&7,Pe},function de(_e,ue){var fe,Te=[];if(ue===(0|ue))Te[0]=ue;else for(ue=""+ue,fe=0;fe0;--fe)_e.next()}(q,Ce)}function Xe(Ce,q){return q.x=Ce.x.slice(),q.i=Ce.i,q}function st(Ce,q){null==Ce&&(Ce=+new Date);var de=new nt(Ce),_e=q&&q.state,ue=function(){return(de.next()>>>0)/4294967296};return ue.double=function(){do{var Te=((de.next()>>>11)+(de.next()>>>0)/4294967296)/(1<<21)}while(0===Te);return Te},ue.int32=de.next,ue.quick=ue,_e&&(_e.x&&Xe(_e,de),ue.state=function(){return Xe(de,{})}),ue}Ke&&Ke.exports?Ke.exports=st:W.amdD&&W.amdO?void 0!==(F=function(){return st}.call(ct,W,ct,Ke))&&(Ke.exports=F):this.xorshift7=st}(0,_t=W.nmd(_t))},5704:function(_t,ct,W){var F;!function(Re,Ke){function nt(Ce){var q=this,de="";q.next=function(){var ue=q.x^q.x>>>2;return q.x=q.y,q.y=q.z,q.z=q.w,q.w=q.v,(q.d=q.d+362437|0)+(q.v=q.v^q.v<<4^ue^ue<<1)|0},q.x=0,q.y=0,q.z=0,q.w=0,q.v=0,Ce===(0|Ce)?q.x=Ce:de+=Ce;for(var _e=0;_e>>4),q.next()}function Xe(Ce,q){return q.x=Ce.x,q.y=Ce.y,q.z=Ce.z,q.w=Ce.w,q.v=Ce.v,q.d=Ce.d,q}function st(Ce,q){var de=new nt(Ce),_e=q&&q.state,ue=function(){return(de.next()>>>0)/4294967296};return ue.double=function(){do{var Te=((de.next()>>>11)+(de.next()>>>0)/4294967296)/(1<<21)}while(0===Te);return Te},ue.int32=de.next,ue.quick=ue,_e&&("object"==typeof _e&&Xe(_e,de),ue.state=function(){return Xe(de,{})}),ue}Ke&&Ke.exports?Ke.exports=st:W.amdD&&W.amdO?void 0!==(F=function(){return st}.call(ct,W,ct,Ke))&&(Ke.exports=F):this.xorwow=st}(0,_t=W.nmd(_t))},7454:function(_t,ct,W){var F;!function(Re,Ke,Tt){var fe,nt=256,q=Tt.pow(nt,6),de=Tt.pow(2,52),_e=2*de;function Pe(Be,Qe,et){var N=[],oe=at(Ht((Qe=1==Qe?{entropy:!0}:Qe||{}).entropy?[Be,Ee(Ke)]:Be??function jt(){try{var Be;return fe&&(Be=fe.randomBytes)?Be=Be(nt):(Be=new Uint8Array(nt),(Re.crypto||Re.msCrypto).getRandomValues(Be)),Ee(Be)}catch{var Qe=Re.navigator,et=Qe&&Qe.plugins;return[+new Date,Re,et,Re.screen,Ee(Ke)]}}(),3),N),O=new Te(N),we=function(){for(var Fe=O.g(6),$e=q,qe=0;Fe=_e;)Fe/=2,$e/=2,qe>>>=1;return(Fe+qe)/$e};return we.int32=function(){return 0|O.g(4)},we.quick=function(){return O.g(4)/4294967296},we.double=we,at(Ee(O.S),Ke),(Qe.pass||et||function(Fe,$e,qe,R){return R&&(R.S&<(R,O),Fe.state=function(){return lt(O,{})}),qe?(Tt.random=Fe,$e):Fe})(we,oe,"global"in Qe?Qe.global:this==Tt,Qe.state)}function Te(Be){var Qe,et=Be.length,N=this,oe=0,O=N.i=N.j=0,we=N.S=[];for(et||(Be=[et++]);oe{},8590:()=>{},4530:()=>{},8108:()=>{},551:()=>{},1234:()=>{},6493:(_t,ct,W)=>{"use strict";W.d(ct,{Ti:()=>aa,d1:()=>wr});var F=W(4438),Re=W(177),Ke=W(9417),Tt=W(1413),nt=W(3236),Xe=W(9974),st=W(4360),Ce=W(8750),de=W(1584);function _e(ve,Oe=nt.E,_){const A=(0,de.O)(ve,Oe);return function q(ve,Oe){return(0,Xe.N)((_,A)=>{const{leading:H=!0,trailing:E=!1}=Oe??{};let ye=!1,Je=null,gt=null,zt=!1;const bt=()=>{gt?.unsubscribe(),gt=null,E&&(jn(),zt&&A.complete())},xn=()=>{gt=null,zt&&A.complete()},In=ps=>gt=(0,Ce.Tg)(ve(ps)).subscribe((0,st._)(A,bt,xn)),jn=()=>{if(ye){ye=!1;const ps=Je;Je=null,A.next(ps),!zt&&In(ps)}};_.subscribe((0,st._)(A,ps=>{ye=!0,Je=ps,(!gt||gt.closed)&&(H?jn():In(ps))},()=>{zt=!0,(!(E&&ye&>)||gt.closed)&&A.complete()}))})}(()=>A,_)}var ue=W(8141),fe=W(3294),Pe=W(5964),Te=typeof window<"u"?window:{screen:{},navigator:{}},lt=(Te.matchMedia||function(){return{matches:!1}}).bind(Te),Ht=!1,jt=function(){};Te.addEventListener&&Te.addEventListener("p",jt,{get passive(){return Ht=!0}}),Te.removeEventListener&&Te.removeEventListener("p",jt,!1);var Ee=Ht,Qe="ontouchstart"in Te,O=(Qe||"TouchEvent"in Te&<("(any-pointer: coarse)"),Te.navigator.userAgent||"");lt("(pointer: coarse)").matches&&/iPad|Macintosh/.test(O)&&Math.min(Te.screen.width||0,Te.screen.height||0);(lt("(pointer: coarse)").matches||!lt("(pointer: fine)").matches&&Qe)&&/Windows.*Firefox/.test(O),lt("(any-pointer: fine)").matches||lt("(any-hover: hover)");const G=(ve,Oe,_)=>({tooltip:ve,placement:Oe,content:_});function C(ve,Oe){}function M(ve,Oe){1&ve&&F.DNE(0,C,0,0,"ng-template")}function X(ve,Oe){if(1&ve&&(F.qex(0),F.DNE(1,M,1,0,null,1),F.bVm()),2&ve){const _=F.XpG();F.R7$(),F.Y8G("ngTemplateOutlet",_.template)("ngTemplateOutletContext",F.sMw(2,G,_.tooltip,_.placement,_.content))}}function re(ve,Oe){if(1&ve&&(F.qex(0),F.j41(1,"div",2),F.EFF(2),F.k0s(),F.bVm()),2&ve){const _=F.XpG();F.R7$(),F.BMQ("title",_.tooltip)("data-tooltip-placement",_.placement),F.R7$(),F.SpI(" ",_.content," ")}}const ie=["tooltipTemplate"],T=["leftOuterSelectionBar"],Me=["rightOuterSelectionBar"],Ye=["fullBar"],K=["selectionBar"],Pt=["minHandle"],Rt=["maxHandle"],rt=["floorLabel"],St=["ceilLabel"],Mr=["minHandleLabel"],Vs=["maxHandleLabel"],Ya=["combinedLabel"],zs=["ticksElement"],Ct=ve=>({"ngx-slider-selected":ve});function It(ve,Oe){if(1&ve&&F.nrm(0,"ngx-slider-tooltip-wrapper",32),2&ve){const _=F.XpG().$implicit,A=F.XpG();F.Y8G("template",A.tooltipTemplate)("tooltip",_.valueTooltip)("placement",_.valueTooltipPlacement)("content",_.value)}}function pt(ve,Oe){if(1&ve&&F.nrm(0,"span",33),2&ve){const _=F.XpG().$implicit;F.Y8G("innerText",_.legend)}}function Qs(ve,Oe){if(1&ve&&F.nrm(0,"span",34),2&ve){const _=F.XpG().$implicit;F.Y8G("innerHTML",_.legend,F.npT)}}function Cn(ve,Oe){if(1&ve&&(F.j41(0,"span",27),F.nrm(1,"ngx-slider-tooltip-wrapper",28),F.DNE(2,It,1,4,"ngx-slider-tooltip-wrapper",29)(3,pt,1,1,"span",30)(4,Qs,1,1,"span",31),F.k0s()),2&ve){const _=Oe.$implicit,A=F.XpG();F.Y8G("ngClass",F.eq3(8,Ct,_.selected))("ngStyle",_.style),F.R7$(),F.Y8G("template",A.tooltipTemplate)("tooltip",_.tooltip)("placement",_.tooltipPlacement),F.R7$(),F.Y8G("ngIf",null!=_.value),F.R7$(),F.Y8G("ngIf",null!=_.legend&&!1===A.allowUnsafeHtmlInSlider),F.R7$(),F.Y8G("ngIf",null!=_.legend&&(null==A.allowUnsafeHtmlInSlider||A.allowUnsafeHtmlInSlider))}}var $t=function(ve){return ve[ve.Low=0]="Low",ve[ve.High=1]="High",ve[ve.Floor=2]="Floor",ve[ve.Ceil=3]="Ceil",ve[ve.TickValue=4]="TickValue",ve}($t||{});class sa{floor=0;ceil=null;step=1;minRange=null;maxRange=null;pushRange=!1;minLimit=null;maxLimit=null;translate=null;combineLabels=null;getLegend=null;getStepLegend=null;stepsArray=null;bindIndexForStepsArray=!1;draggableRange=!1;draggableRangeOnly=!1;showSelectionBar=!1;showSelectionBarEnd=!1;showSelectionBarFromValue=null;showOuterSelectionBars=!1;hidePointerLabels=!1;hideLimitLabels=!1;autoHideLimitLabels=!0;readOnly=!1;disabled=!1;showTicks=!1;showTicksValues=!1;tickStep=null;tickValueStep=null;ticksArray=null;ticksTooltip=null;ticksValuesTooltip=null;vertical=!1;getSelectionBarColor=null;getTickColor=null;getPointerColor=null;keyboardSupport=!0;scale=1;rotate=0;enforceStep=!0;enforceRange=!0;enforceStepsArray=!0;noSwitching=!1;onlyBindHandles=!1;rightToLeft=!1;reversedControls=!1;boundPointerLabels=!0;logScale=!1;customValueToPosition=null;customPositionToValue=null;precisionLimit=12;selectionBarGradient=null;ariaLabel="ngx-slider";ariaLabelledBy=null;ariaLabelHigh="ngx-slider-max";ariaLabelledByHigh=null;handleDimension=null;barDimension=null;animate=!0;animateOnMove=!1}const Hl=new F.nKC("AllowUnsafeHtmlInSlider");var Ve=function(ve){return ve[ve.Min=0]="Min",ve[ve.Max=1]="Max",ve}(Ve||{});class ra{value;highValue;pointerType}class ce{static isNullOrUndefined(Oe){return null==Oe}static areArraysEqual(Oe,_){if(Oe.length!==_.length)return!1;for(let A=0;AMath.abs(Oe-E.value));let H=0;for(let E=0;E<_.length;E++)A[E]!==A[H]&&A[E]{E.events.next(Je)};return Oe.addEventListener(_,ye,{passive:!0,capture:!1}),E.teardownCallback=()=>{Oe.removeEventListener(_,ye,{passive:!0,capture:!1})},E.eventsSubscription=E.events.pipe(ce.isNullOrUndefined(H)?(0,ue.M)(()=>{}):_e(H,void 0,{leading:!0,trailing:!0})).subscribe(Je=>{A(Je)}),E}detachEventListener(Oe){ce.isNullOrUndefined(Oe.eventsSubscription)||(Oe.eventsSubscription.unsubscribe(),Oe.eventsSubscription=null),ce.isNullOrUndefined(Oe.events)||(Oe.events.complete(),Oe.events=null),ce.isNullOrUndefined(Oe.teardownCallback)||(Oe.teardownCallback(),Oe.teardownCallback=null)}attachEventListener(Oe,_,A,H){const E=new ia;return E.eventName=_,E.events=new Tt.B,E.teardownCallback=this.renderer.listen(Oe,_,Je=>{E.events.next(Je)}),E.eventsSubscription=E.events.pipe(ce.isNullOrUndefined(H)?(0,ue.M)(()=>{}):_e(H,void 0,{leading:!0,trailing:!0})).subscribe(Je=>{A(Je)}),E}}let Cs=(()=>{class ve{elemRef;renderer;changeDetectionRef;_position=0;get position(){return this._position}_dimension=0;get dimension(){return this._dimension}_alwaysHide=!1;get alwaysHide(){return this._alwaysHide}_vertical=!1;get vertical(){return this._vertical}_scale=1;get scale(){return this._scale}_rotate=0;get rotate(){return this._rotate}opacity=1;visibility="visible";left="";bottom="";height="";width="";transform="";eventListenerHelper;eventListeners=[];constructor(_,A,H){this.elemRef=_,this.renderer=A,this.changeDetectionRef=H,this.eventListenerHelper=new vr(this.renderer)}setAlwaysHide(_){this._alwaysHide=_,this.visibility=_?"hidden":"visible"}hide(){this.opacity=0}show(){this.alwaysHide||(this.opacity=1)}isVisible(){return!this.alwaysHide&&0!==this.opacity}setVertical(_){this._vertical=_,this._vertical?(this.left="",this.width=""):(this.bottom="",this.height="")}setScale(_){this._scale=_}setRotate(_){this._rotate=_,this.transform="rotate("+_+"deg)"}getRotate(){return this._rotate}setPosition(_){this._position!==_&&!this.isRefDestroyed()&&this.changeDetectionRef.markForCheck(),this._position=_,this._vertical?this.bottom=Math.round(_)+"px":this.left=Math.round(_)+"px"}calculateDimension(){const _=this.getBoundingClientRect();this._dimension=this.vertical?(_.bottom-_.top)*this.scale:(_.right-_.left)*this.scale}setDimension(_){this._dimension!==_&&!this.isRefDestroyed()&&this.changeDetectionRef.markForCheck(),this._dimension=_,this._vertical?this.height=Math.round(_)+"px":this.width=Math.round(_)+"px"}getBoundingClientRect(){return this.elemRef.nativeElement.getBoundingClientRect()}on(_,A,H){const E=this.eventListenerHelper.attachEventListener(this.elemRef.nativeElement,_,A,H);this.eventListeners.push(E)}onPassive(_,A,H){const E=this.eventListenerHelper.attachPassiveEventListener(this.elemRef.nativeElement,_,A,H);this.eventListeners.push(E)}off(_){let A,H;ce.isNullOrUndefined(_)?(A=[],H=this.eventListeners):(A=this.eventListeners.filter(E=>E.eventName!==_),H=this.eventListeners.filter(E=>E.eventName===_));for(const E of H)this.eventListenerHelper.detachEventListener(E);this.eventListeners=A}isRefDestroyed(){return ce.isNullOrUndefined(this.changeDetectionRef)||this.changeDetectionRef.destroyed}static \u0275fac=function(A){return new(A||ve)(F.rXU(F.aKT),F.rXU(F.sFG),F.rXU(F.gRc))};static \u0275dir=F.FsC({type:ve,selectors:[["","ngxSliderElement",""]],hostVars:14,hostBindings:function(A,H){2&A&&F.xc7("opacity",H.opacity)("visibility",H.visibility)("left",H.left)("bottom",H.bottom)("height",H.height)("width",H.width)("transform",H.transform)},standalone:!1})}return ve})(),vi=(()=>{class ve extends Cs{active=!1;role="";tabindex="";ariaOrientation="";ariaLabel="";ariaLabelledBy="";ariaValueNow="";ariaValueText="";ariaValueMin="";ariaValueMax="";focus(){this.elemRef.nativeElement.focus()}focusIfNeeded(){document.activeElement!==this.elemRef.nativeElement&&this.elemRef.nativeElement.focus()}constructor(_,A,H){super(_,A,H)}static \u0275fac=function(A){return new(A||ve)(F.rXU(F.aKT),F.rXU(F.sFG),F.rXU(F.gRc))};static \u0275dir=F.FsC({type:ve,selectors:[["","ngxSliderHandle",""]],hostVars:11,hostBindings:function(A,H){2&A&&(F.BMQ("role",H.role)("tabindex",H.tabindex)("aria-orientation",H.ariaOrientation)("aria-label",H.ariaLabel)("aria-labelledby",H.ariaLabelledBy)("aria-valuenow",H.ariaValueNow)("aria-valuetext",H.ariaValueText)("aria-valuemin",H.ariaValueMin)("aria-valuemax",H.ariaValueMax),F.AVh("ngx-slider-active",H.active))},standalone:!1,features:[F.Vt3]})}return ve})(),Ue=(()=>{class ve extends Cs{allowUnsafeHtmlInSlider;_value=null;get value(){return this._value}constructor(_,A,H,E){super(_,A,H),this.allowUnsafeHtmlInSlider=E}setValue(_){let A=!1;!this.alwaysHide&&(ce.isNullOrUndefined(this.value)||this.value.length!==_.length||this.value.length>0&&0===this.dimension)&&(A=!0),this._value=_,!1===this.allowUnsafeHtmlInSlider?this.elemRef.nativeElement.innerText=_:this.elemRef.nativeElement.innerHTML=_,A&&this.calculateDimension()}static \u0275fac=function(A){return new(A||ve)(F.rXU(F.aKT),F.rXU(F.sFG),F.rXU(F.gRc),F.rXU(Hl,8))};static \u0275dir=F.FsC({type:ve,selectors:[["","ngxSliderLabel",""]],standalone:!1,features:[F.Vt3]})}return ve})(),jl=(()=>{class ve{template;tooltip;placement;content;static \u0275fac=function(A){return new(A||ve)};static \u0275cmp=F.VBU({type:ve,selectors:[["ngx-slider-tooltip-wrapper"]],inputs:{template:"template",tooltip:"tooltip",placement:"placement",content:"content"},standalone:!1,decls:2,vars:2,consts:[[4,"ngIf"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"ngx-slider-inner-tooltip"]],template:function(A,H){1&A&&F.DNE(0,X,2,6,"ng-container",0)(1,re,3,3,"ng-container",0),2&A&&(F.Y8G("ngIf",H.template),F.R7$(),F.Y8G("ngIf",!H.template))},dependencies:[Re.bT,Re.T3],styles:[".ngx-slider-inner-tooltip[_ngcontent-%COMP%]{height:100%}"]})}return ve})();class ds{selected=!1;style={};tooltip=null;tooltipPlacement=null;value=null;valueTooltip=null;valueTooltipPlacement=null;legend=null}class Xl{active=!1;value=0;difference=0;position=0;lowLimit=0;highLimit=0}class Vr{value;highValue;static compare(Oe,_){return!(ce.isNullOrUndefined(Oe)&&ce.isNullOrUndefined(_)||ce.isNullOrUndefined(Oe)!==ce.isNullOrUndefined(_))&&Oe.value===_.value&&Oe.highValue===_.highValue}}class yn extends Vr{forceChange;static compare(Oe,_){return!(ce.isNullOrUndefined(Oe)&&ce.isNullOrUndefined(_)||ce.isNullOrUndefined(Oe)!==ce.isNullOrUndefined(_))&&Oe.value===_.value&&Oe.highValue===_.highValue&&Oe.forceChange===_.forceChange}}const Is={provide:Ke.kq,useExisting:(0,F.Rfq)(()=>wr),multi:!0};let wr=(()=>{class ve{renderer;elementRef;changeDetectionRef;zone;allowUnsafeHtmlInSlider;sliderElementNgxSliderClass=!0;value=null;valueChange=new F.bkB;highValue=null;highValueChange=new F.bkB;options=new sa;userChangeStart=new F.bkB;userChange=new F.bkB;userChangeEnd=new F.bkB;manualRefreshSubscription;set manualRefresh(_){this.unsubscribeManualRefresh(),this.manualRefreshSubscription=_.subscribe(()=>{setTimeout(()=>this.calculateViewDimensionsAndDetectChanges())})}triggerFocusSubscription;set triggerFocus(_){this.unsubscribeTriggerFocus(),this.triggerFocusSubscription=_.subscribe(A=>{this.focusPointer(A)})}cancelUserChangeSubscription;set cancelUserChange(_){this.unsubscribeCancelUserChange(),this.cancelUserChangeSubscription=_.subscribe(()=>{this.moving&&(this.positionTrackingHandle(this.preStartHandleValue),this.forceEnd(!0))})}get range(){return!ce.isNullOrUndefined(this.value)&&!ce.isNullOrUndefined(this.highValue)}initHasRun=!1;inputModelChangeSubject=new Tt.B;inputModelChangeSubscription=null;outputModelChangeSubject=new Tt.B;outputModelChangeSubscription=null;viewLowValue=null;viewHighValue=null;viewOptions=new sa;handleHalfDimension=0;maxHandlePosition=0;currentTrackingPointer=null;currentFocusPointer=null;firstKeyDown=!1;touchId=null;dragging=new Xl;preStartHandleValue=null;leftOuterSelectionBarElement;rightOuterSelectionBarElement;fullBarElement;selectionBarElement;minHandleElement;maxHandleElement;floorLabelElement;ceilLabelElement;minHandleLabelElement;maxHandleLabelElement;combinedLabelElement;ticksElement;tooltipTemplate;sliderElementVerticalClass=!1;sliderElementAnimateClass=!1;sliderElementWithLegendClass=!1;sliderElementDisabledAttr=null;sliderElementAriaLabel="ngx-slider";barStyle={};minPointerStyle={};maxPointerStyle={};fullBarTransparentClass=!1;selectionBarDraggableClass=!1;ticksUnderValuesClass=!1;get showTicks(){return this.viewOptions.showTicks}intermediateTicks=!1;ticks=[];eventListenerHelper=null;onMoveEventListener=null;onEndEventListener=null;moving=!1;resizeObserver=null;onTouchedCallback=null;onChangeCallback=null;constructor(_,A,H,E,ye){this.renderer=_,this.elementRef=A,this.changeDetectionRef=H,this.zone=E,this.allowUnsafeHtmlInSlider=ye,this.eventListenerHelper=new vr(this.renderer)}ngOnInit(){this.viewOptions=new sa,Object.assign(this.viewOptions,this.options),this.updateDisabledState(),this.updateVerticalState(),this.updateAriaLabel()}ngAfterViewInit(){this.applyOptions(),this.subscribeInputModelChangeSubject(),this.subscribeOutputModelChangeSubject(),this.renormaliseModelValues(),this.viewLowValue=this.modelValueToViewValue(this.value),this.viewHighValue=this.range?this.modelValueToViewValue(this.highValue):null,this.updateVerticalState(),this.manageElementsStyle(),this.updateDisabledState(),this.calculateViewDimensions(),this.addAccessibility(),this.updateCeilLabel(),this.updateFloorLabel(),this.initHandles(),this.manageEventsBindings(),this.updateAriaLabel(),this.subscribeResizeObserver(),this.initHasRun=!0,this.isRefDestroyed()||this.changeDetectionRef.detectChanges()}ngOnChanges(_){!ce.isNullOrUndefined(_.options)&&JSON.stringify(_.options.previousValue)!==JSON.stringify(_.options.currentValue)&&this.onChangeOptions(),(!ce.isNullOrUndefined(_.value)||!ce.isNullOrUndefined(_.highValue))&&this.inputModelChangeSubject.next({value:this.value,highValue:this.highValue,controlAccessorChange:!1,forceChange:!1,internalChange:!1})}ngOnDestroy(){this.unbindEvents(),this.unsubscribeResizeObserver(),this.unsubscribeInputModelChangeSubject(),this.unsubscribeOutputModelChangeSubject(),this.unsubscribeManualRefresh(),this.unsubscribeTriggerFocus()}writeValue(_){_ instanceof Array?(this.value=_[0],this.highValue=_[1]):this.value=_,this.inputModelChangeSubject.next({value:this.value,highValue:this.highValue,forceChange:!1,internalChange:!1,controlAccessorChange:!0})}registerOnChange(_){this.onChangeCallback=_}registerOnTouched(_){this.onTouchedCallback=_}setDisabledState(_){this.viewOptions.disabled=_,this.updateDisabledState(),this.initHasRun&&this.manageEventsBindings()}setAriaLabel(_){this.viewOptions.ariaLabel=_,this.updateAriaLabel()}onResize(_){this.calculateViewDimensionsAndDetectChanges()}subscribeInputModelChangeSubject(){this.inputModelChangeSubscription=this.inputModelChangeSubject.pipe((0,fe.F)(yn.compare),(0,Pe.p)(_=>!_.forceChange&&!_.internalChange)).subscribe(_=>this.applyInputModelChange(_))}subscribeOutputModelChangeSubject(){this.outputModelChangeSubscription=this.outputModelChangeSubject.pipe((0,fe.F)(yn.compare)).subscribe(_=>this.publishOutputModelChange(_))}subscribeResizeObserver(){os.isResizeObserverAvailable()&&(this.resizeObserver=new ResizeObserver(()=>this.calculateViewDimensionsAndDetectChanges()),this.resizeObserver.observe(this.elementRef.nativeElement))}unsubscribeResizeObserver(){os.isResizeObserverAvailable()&&null!==this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}unsubscribeOnMove(){ce.isNullOrUndefined(this.onMoveEventListener)||(this.eventListenerHelper.detachEventListener(this.onMoveEventListener),this.onMoveEventListener=null)}unsubscribeOnEnd(){ce.isNullOrUndefined(this.onEndEventListener)||(this.eventListenerHelper.detachEventListener(this.onEndEventListener),this.onEndEventListener=null)}unsubscribeInputModelChangeSubject(){ce.isNullOrUndefined(this.inputModelChangeSubscription)||(this.inputModelChangeSubscription.unsubscribe(),this.inputModelChangeSubscription=null)}unsubscribeOutputModelChangeSubject(){ce.isNullOrUndefined(this.outputModelChangeSubscription)||(this.outputModelChangeSubscription.unsubscribe(),this.outputModelChangeSubscription=null)}unsubscribeManualRefresh(){ce.isNullOrUndefined(this.manualRefreshSubscription)||(this.manualRefreshSubscription.unsubscribe(),this.manualRefreshSubscription=null)}unsubscribeTriggerFocus(){ce.isNullOrUndefined(this.triggerFocusSubscription)||(this.triggerFocusSubscription.unsubscribe(),this.triggerFocusSubscription=null)}unsubscribeCancelUserChange(){ce.isNullOrUndefined(this.cancelUserChangeSubscription)||(this.cancelUserChangeSubscription.unsubscribe(),this.cancelUserChangeSubscription=null)}getPointerElement(_){return _===Ve.Min?this.minHandleElement:_===Ve.Max?this.maxHandleElement:null}getCurrentTrackingValue(){return this.currentTrackingPointer===Ve.Min?this.viewLowValue:this.currentTrackingPointer===Ve.Max?this.viewHighValue:null}modelValueToViewValue(_){return ce.isNullOrUndefined(_)?NaN:ce.isNullOrUndefined(this.viewOptions.stepsArray)||this.viewOptions.bindIndexForStepsArray?+_:ce.findStepIndex(+_,this.viewOptions.stepsArray)}viewValueToModelValue(_){return ce.isNullOrUndefined(this.viewOptions.stepsArray)||this.viewOptions.bindIndexForStepsArray?_:this.getStepValue(_)}getStepValue(_){const A=this.viewOptions.stepsArray[_];return ce.isNullOrUndefined(A)?NaN:A.value}applyViewChange(){this.value=this.viewValueToModelValue(this.viewLowValue),this.range&&(this.highValue=this.viewValueToModelValue(this.viewHighValue)),this.outputModelChangeSubject.next({value:this.value,highValue:this.highValue,controlAccessorChange:!1,userEventInitiated:!0,forceChange:!1}),this.inputModelChangeSubject.next({value:this.value,highValue:this.highValue,controlAccessorChange:!1,forceChange:!1,internalChange:!0})}applyInputModelChange(_){const A=this.normaliseModelValues(_),H=!Vr.compare(_,A);H&&(this.value=A.value,this.highValue=A.highValue),this.viewLowValue=this.modelValueToViewValue(A.value),this.viewHighValue=this.range?this.modelValueToViewValue(A.highValue):null,this.updateLowHandle(this.valueToPosition(this.viewLowValue)),this.range&&this.updateHighHandle(this.valueToPosition(this.viewHighValue)),this.updateSelectionBar(),this.updateTicksScale(),this.updateAriaAttributes(),this.range&&this.updateCombinedLabel(),this.outputModelChangeSubject.next({value:A.value,highValue:A.highValue,controlAccessorChange:_.controlAccessorChange,forceChange:H,userEventInitiated:!1})}publishOutputModelChange(_){const A=()=>{this.valueChange.emit(_.value),this.range&&this.highValueChange.emit(_.highValue),!_.controlAccessorChange&&(ce.isNullOrUndefined(this.onChangeCallback)||this.onChangeCallback(this.range?[_.value,_.highValue]:_.value),ce.isNullOrUndefined(this.onTouchedCallback)||this.onTouchedCallback(this.range?[_.value,_.highValue]:_.value))};_.userEventInitiated?(A(),this.userChange.emit(this.getChangeContext())):setTimeout(()=>{A()})}normaliseModelValues(_){const A=new Vr;if(A.value=_.value,A.highValue=_.highValue,!ce.isNullOrUndefined(this.viewOptions.stepsArray)){if(this.viewOptions.enforceStepsArray){const H=ce.findStepIndex(A.value,this.viewOptions.stepsArray);if(A.value=this.viewOptions.stepsArray[H].value,this.range){const E=ce.findStepIndex(A.highValue,this.viewOptions.stepsArray);A.highValue=this.viewOptions.stepsArray[E].value}}return A}if(this.viewOptions.enforceStep&&(A.value=this.roundStep(A.value),this.range&&(A.highValue=this.roundStep(A.highValue))),this.viewOptions.enforceRange&&(A.value=ln.clampToRange(A.value,this.viewOptions.floor,this.viewOptions.ceil),this.range&&(A.highValue=ln.clampToRange(A.highValue,this.viewOptions.floor,this.viewOptions.ceil)),this.range&&_.value>_.highValue))if(this.viewOptions.noSwitching)A.value=A.highValue;else{const H=_.value;A.value=_.highValue,A.highValue=H}return A}renormaliseModelValues(){const _={value:this.value,highValue:this.highValue},A=this.normaliseModelValues(_);Vr.compare(A,_)||(this.value=A.value,this.highValue=A.highValue,this.outputModelChangeSubject.next({value:this.value,highValue:this.highValue,controlAccessorChange:!1,forceChange:!0,userEventInitiated:!1}))}onChangeOptions(){if(!this.initHasRun)return;const _=this.getOptionsInfluencingEventBindings(this.viewOptions);this.applyOptions();const A=this.getOptionsInfluencingEventBindings(this.viewOptions),H=!ce.areArraysEqual(_,A);this.renormaliseModelValues(),this.viewLowValue=this.modelValueToViewValue(this.value),this.viewHighValue=this.range?this.modelValueToViewValue(this.highValue):null,this.resetSlider(H)}applyOptions(){if(this.viewOptions=new sa,Object.assign(this.viewOptions,this.options),this.viewOptions.draggableRange=this.range&&this.viewOptions.draggableRange,this.viewOptions.draggableRangeOnly=this.range&&this.viewOptions.draggableRangeOnly,this.viewOptions.draggableRangeOnly&&(this.viewOptions.draggableRange=!0),this.viewOptions.showTicks=this.viewOptions.showTicks||this.viewOptions.showTicksValues||!ce.isNullOrUndefined(this.viewOptions.ticksArray),this.viewOptions.showTicks&&(!ce.isNullOrUndefined(this.viewOptions.tickStep)||!ce.isNullOrUndefined(this.viewOptions.ticksArray))&&(this.intermediateTicks=!0),this.viewOptions.showSelectionBar=this.viewOptions.showSelectionBar||this.viewOptions.showSelectionBarEnd||!ce.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue),ce.isNullOrUndefined(this.viewOptions.stepsArray)?this.applyFloorCeilOptions():this.applyStepsArrayOptions(),ce.isNullOrUndefined(this.viewOptions.combineLabels)&&(this.viewOptions.combineLabels=(_,A)=>_+" - "+A),this.viewOptions.logScale&&0===this.viewOptions.floor)throw Error("Can't use floor=0 with logarithmic scale")}applyStepsArrayOptions(){this.viewOptions.floor=0,this.viewOptions.ceil=this.viewOptions.stepsArray.length-1,this.viewOptions.step=1,ce.isNullOrUndefined(this.viewOptions.translate)&&(this.viewOptions.translate=_=>String(this.viewOptions.bindIndexForStepsArray?this.getStepValue(_):_))}applyFloorCeilOptions(){if(ce.isNullOrUndefined(this.viewOptions.step)?this.viewOptions.step=1:(this.viewOptions.step=+this.viewOptions.step,this.viewOptions.step<=0&&(this.viewOptions.step=1)),ce.isNullOrUndefined(this.viewOptions.ceil)||ce.isNullOrUndefined(this.viewOptions.floor))throw Error("floor and ceil options must be supplied");this.viewOptions.ceil=+this.viewOptions.ceil,this.viewOptions.floor=+this.viewOptions.floor,ce.isNullOrUndefined(this.viewOptions.translate)&&(this.viewOptions.translate=_=>String(_))}resetSlider(_=!0){this.manageElementsStyle(),this.addAccessibility(),this.updateCeilLabel(),this.updateFloorLabel(),_&&(this.unbindEvents(),this.manageEventsBindings()),this.updateDisabledState(),this.updateAriaLabel(),this.calculateViewDimensions(),this.refocusPointerIfNeeded()}focusPointer(_){_!==Ve.Min&&_!==Ve.Max&&(_=Ve.Min),_===Ve.Min?this.minHandleElement.focus():this.range&&_===Ve.Max&&this.maxHandleElement.focus()}refocusPointerIfNeeded(){ce.isNullOrUndefined(this.currentFocusPointer)||this.getPointerElement(this.currentFocusPointer).focusIfNeeded()}manageElementsStyle(){this.updateScale(),this.floorLabelElement.setAlwaysHide(this.viewOptions.showTicksValues||this.viewOptions.hideLimitLabels),this.ceilLabelElement.setAlwaysHide(this.viewOptions.showTicksValues||this.viewOptions.hideLimitLabels);const _=this.viewOptions.showTicksValues&&!this.intermediateTicks;this.minHandleLabelElement.setAlwaysHide(_||this.viewOptions.hidePointerLabels),this.maxHandleLabelElement.setAlwaysHide(_||!this.range||this.viewOptions.hidePointerLabels),this.combinedLabelElement.setAlwaysHide(_||!this.range||this.viewOptions.hidePointerLabels),this.selectionBarElement.setAlwaysHide(!this.range&&!this.viewOptions.showSelectionBar),this.leftOuterSelectionBarElement.setAlwaysHide(!this.range||!this.viewOptions.showOuterSelectionBars),this.rightOuterSelectionBarElement.setAlwaysHide(!this.range||!this.viewOptions.showOuterSelectionBars),this.fullBarTransparentClass=this.range&&this.viewOptions.showOuterSelectionBars,this.selectionBarDraggableClass=this.viewOptions.draggableRange&&!this.viewOptions.onlyBindHandles,this.ticksUnderValuesClass=this.intermediateTicks&&this.options.showTicksValues,this.sliderElementVerticalClass!==this.viewOptions.vertical&&(this.updateVerticalState(),setTimeout(()=>{this.resetSlider()})),this.sliderElementAnimateClass!==this.viewOptions.animate&&setTimeout(()=>{this.sliderElementAnimateClass=this.viewOptions.animate}),this.updateRotate()}manageEventsBindings(){this.viewOptions.disabled||this.viewOptions.readOnly?this.unbindEvents():this.bindEvents()}updateDisabledState(){this.sliderElementDisabledAttr=this.viewOptions.disabled?"disabled":null}updateAriaLabel(){this.sliderElementAriaLabel=this.viewOptions.ariaLabel||"nxg-slider"}updateVerticalState(){this.sliderElementVerticalClass=this.viewOptions.vertical;for(const _ of this.getAllSliderElements())ce.isNullOrUndefined(_)||_.setVertical(this.viewOptions.vertical)}updateScale(){for(const _ of this.getAllSliderElements())_.setScale(this.viewOptions.scale)}updateRotate(){for(const _ of this.getAllSliderElements())_.setRotate(this.viewOptions.rotate)}getAllSliderElements(){return[this.leftOuterSelectionBarElement,this.rightOuterSelectionBarElement,this.fullBarElement,this.selectionBarElement,this.minHandleElement,this.maxHandleElement,this.floorLabelElement,this.ceilLabelElement,this.minHandleLabelElement,this.maxHandleLabelElement,this.combinedLabelElement,this.ticksElement]}initHandles(){this.updateLowHandle(this.valueToPosition(this.viewLowValue)),this.range&&this.updateHighHandle(this.valueToPosition(this.viewHighValue)),this.updateSelectionBar(),this.range&&this.updateCombinedLabel(),this.updateTicksScale()}addAccessibility(){this.updateAriaAttributes(),this.minHandleElement.role="slider",this.minHandleElement.tabindex=!this.viewOptions.keyboardSupport||this.viewOptions.readOnly||this.viewOptions.disabled?"":"0",this.minHandleElement.ariaOrientation=this.viewOptions.vertical||0!==this.viewOptions.rotate?"vertical":"horizontal",ce.isNullOrUndefined(this.viewOptions.ariaLabel)?ce.isNullOrUndefined(this.viewOptions.ariaLabelledBy)||(this.minHandleElement.ariaLabelledBy=this.viewOptions.ariaLabelledBy):this.minHandleElement.ariaLabel=this.viewOptions.ariaLabel,this.range&&(this.maxHandleElement.role="slider",this.maxHandleElement.tabindex=!this.viewOptions.keyboardSupport||this.viewOptions.readOnly||this.viewOptions.disabled?"":"0",this.maxHandleElement.ariaOrientation=this.viewOptions.vertical||0!==this.viewOptions.rotate?"vertical":"horizontal",ce.isNullOrUndefined(this.viewOptions.ariaLabelHigh)?ce.isNullOrUndefined(this.viewOptions.ariaLabelledByHigh)||(this.maxHandleElement.ariaLabelledBy=this.viewOptions.ariaLabelledByHigh):this.maxHandleElement.ariaLabel=this.viewOptions.ariaLabelHigh)}updateAriaAttributes(){this.minHandleElement.ariaValueNow=(+this.value).toString(),this.minHandleElement.ariaValueText=this.viewOptions.translate(+this.value,$t.Low),this.minHandleElement.ariaValueMin=this.viewOptions.floor.toString(),this.minHandleElement.ariaValueMax=this.viewOptions.ceil.toString(),this.range&&(this.maxHandleElement.ariaValueNow=(+this.highValue).toString(),this.maxHandleElement.ariaValueText=this.viewOptions.translate(+this.highValue,$t.High),this.maxHandleElement.ariaValueMin=this.viewOptions.floor.toString(),this.maxHandleElement.ariaValueMax=this.viewOptions.ceil.toString())}calculateViewDimensions(){ce.isNullOrUndefined(this.viewOptions.handleDimension)?this.minHandleElement.calculateDimension():this.minHandleElement.setDimension(this.viewOptions.handleDimension);const _=this.minHandleElement.dimension;this.handleHalfDimension=_/2,ce.isNullOrUndefined(this.viewOptions.barDimension)?this.fullBarElement.calculateDimension():this.fullBarElement.setDimension(this.viewOptions.barDimension),this.maxHandlePosition=this.fullBarElement.dimension-_,this.initHasRun&&(this.updateFloorLabel(),this.updateCeilLabel(),this.initHandles())}calculateViewDimensionsAndDetectChanges(){this.calculateViewDimensions(),this.isRefDestroyed()||this.changeDetectionRef.detectChanges()}isRefDestroyed(){return this.changeDetectionRef.destroyed}updateTicksScale(){if(!this.viewOptions.showTicks&&this.sliderElementWithLegendClass)return void setTimeout(()=>{this.sliderElementWithLegendClass=!1});const _=ce.isNullOrUndefined(this.viewOptions.ticksArray)?this.getTicksArray():this.viewOptions.ticksArray,A=this.viewOptions.vertical?"translateY":"translateX";this.viewOptions.rightToLeft&&_.reverse();const H=ce.isNullOrUndefined(this.viewOptions.tickValueStep)?ce.isNullOrUndefined(this.viewOptions.tickStep)?this.viewOptions.step:this.viewOptions.tickStep:this.viewOptions.tickValueStep;let E=!1;const ye=_.map(Je=>{let gt=this.valueToPosition(Je);this.viewOptions.vertical&&(gt=this.maxHandlePosition-gt);const zt=A+"("+Math.round(gt)+"px)",bt=new ds;bt.selected=this.isTickSelected(Je),bt.style={"-webkit-transform":zt,"-moz-transform":zt,"-o-transform":zt,"-ms-transform":zt,transform:zt},bt.selected&&!ce.isNullOrUndefined(this.viewOptions.getSelectionBarColor)&&(bt.style["background-color"]=this.getSelectionBarColor()),!bt.selected&&!ce.isNullOrUndefined(this.viewOptions.getTickColor)&&(bt.style["background-color"]=this.getTickColor(Je)),ce.isNullOrUndefined(this.viewOptions.ticksTooltip)||(bt.tooltip=this.viewOptions.ticksTooltip(Je),bt.tooltipPlacement=this.viewOptions.vertical?"right":"top"),this.viewOptions.showTicksValues&&!ce.isNullOrUndefined(H)&&ln.isModuloWithinPrecisionLimit(Je,H,this.viewOptions.precisionLimit)&&(bt.value=this.getDisplayValue(Je,$t.TickValue),ce.isNullOrUndefined(this.viewOptions.ticksValuesTooltip)||(bt.valueTooltip=this.viewOptions.ticksValuesTooltip(Je),bt.valueTooltipPlacement=this.viewOptions.vertical?"right":"top"));let xn=null;if(ce.isNullOrUndefined(this.viewOptions.stepsArray))ce.isNullOrUndefined(this.viewOptions.getLegend)||(xn=this.viewOptions.getLegend(Je));else{const In=this.viewOptions.stepsArray[Je];ce.isNullOrUndefined(this.viewOptions.getStepLegend)?ce.isNullOrUndefined(In)||(xn=In.legend):xn=this.viewOptions.getStepLegend(In)}return ce.isNullOrUndefined(xn)||(bt.legend=xn,E=!0),bt});if(this.sliderElementWithLegendClass!==E&&setTimeout(()=>{this.sliderElementWithLegendClass=E}),ce.isNullOrUndefined(this.ticks)||this.ticks.length!==ye.length)this.ticks=ye,this.isRefDestroyed()||this.changeDetectionRef.detectChanges();else for(let Je=0;Je=this.viewLowValue)return!0}else if(this.viewOptions.showSelectionBar&&_<=this.viewLowValue)return!0}else{const A=this.viewOptions.showSelectionBarFromValue;if(this.viewLowValue>A&&_>=A&&_<=this.viewLowValue)return!0;if(this.viewLowValue=this.viewLowValue)return!0}return!!(this.range&&_>=this.viewLowValue&&_<=this.viewHighValue)}updateFloorLabel(){this.floorLabelElement.alwaysHide||(this.floorLabelElement.setValue(this.getDisplayValue(this.viewOptions.floor,$t.Floor)),this.floorLabelElement.calculateDimension(),this.floorLabelElement.setPosition(this.viewOptions.rightToLeft?this.fullBarElement.dimension-this.floorLabelElement.dimension:0))}updateCeilLabel(){this.ceilLabelElement.alwaysHide||(this.ceilLabelElement.setValue(this.getDisplayValue(this.viewOptions.ceil,$t.Ceil)),this.ceilLabelElement.calculateDimension(),this.ceilLabelElement.setPosition(this.viewOptions.rightToLeft?0:this.fullBarElement.dimension-this.ceilLabelElement.dimension))}updateHandles(_,A){_===Ve.Min?this.updateLowHandle(A):_===Ve.Max&&this.updateHighHandle(A),this.updateSelectionBar(),this.updateTicksScale(),this.range&&this.updateCombinedLabel()}getHandleLabelPos(_,A){const H=_===Ve.Min?this.minHandleLabelElement.dimension:this.maxHandleLabelElement.dimension,E=A-H/2+this.handleHalfDimension,ye=this.fullBarElement.dimension-H;return this.viewOptions.boundPointerLabels?this.viewOptions.rightToLeft&&_===Ve.Min||!this.viewOptions.rightToLeft&&_===Ve.Max?Math.min(E,ye):Math.min(Math.max(E,0),ye):E}updateLowHandle(_){this.minHandleElement.setPosition(_),this.minHandleLabelElement.setValue(this.getDisplayValue(this.viewLowValue,$t.Low)),this.minHandleLabelElement.setPosition(this.getHandleLabelPos(Ve.Min,_)),ce.isNullOrUndefined(this.viewOptions.getPointerColor)||(this.minPointerStyle={backgroundColor:this.getPointerColor(Ve.Min)}),this.viewOptions.autoHideLimitLabels&&this.updateFloorAndCeilLabelsVisibility()}updateHighHandle(_){this.maxHandleElement.setPosition(_),this.maxHandleLabelElement.setValue(this.getDisplayValue(this.viewHighValue,$t.High)),this.maxHandleLabelElement.setPosition(this.getHandleLabelPos(Ve.Max,_)),ce.isNullOrUndefined(this.viewOptions.getPointerColor)||(this.maxPointerStyle={backgroundColor:this.getPointerColor(Ve.Max)}),this.viewOptions.autoHideLimitLabels&&this.updateFloorAndCeilLabelsVisibility()}updateFloorAndCeilLabelsVisibility(){if(this.viewOptions.hidePointerLabels)return;let _=!1,A=!1;const H=this.isLabelBelowFloorLabel(this.minHandleLabelElement),E=this.isLabelAboveCeilLabel(this.minHandleLabelElement),ye=this.isLabelAboveCeilLabel(this.maxHandleLabelElement),Je=this.isLabelBelowFloorLabel(this.combinedLabelElement),gt=this.isLabelAboveCeilLabel(this.combinedLabelElement);if(H?(_=!0,this.floorLabelElement.hide()):(_=!1,this.floorLabelElement.show()),E?(A=!0,this.ceilLabelElement.hide()):(A=!1,this.ceilLabelElement.show()),this.range){const zt=this.combinedLabelElement.isVisible()?gt:ye,bt=this.combinedLabelElement.isVisible()?Je:H;zt?this.ceilLabelElement.hide():A||this.ceilLabelElement.show(),bt?this.floorLabelElement.hide():_||this.floorLabelElement.show()}}isLabelBelowFloorLabel(_){const A=_.position,E=this.floorLabelElement.position;return this.viewOptions.rightToLeft?A+_.dimension>=E-2:A<=E+this.floorLabelElement.dimension+2}isLabelAboveCeilLabel(_){const A=_.position,E=this.ceilLabelElement.position;return this.viewOptions.rightToLeft?A<=E+this.ceilLabelElement.dimension+2:A+_.dimension>=E-2}updateSelectionBar(){let _=0,A=0;const H=this.viewOptions.rightToLeft?!this.viewOptions.showSelectionBarEnd:this.viewOptions.showSelectionBarEnd,E=this.viewOptions.rightToLeft?this.maxHandleElement.position+this.handleHalfDimension:this.minHandleElement.position+this.handleHalfDimension;if(this.range)A=Math.abs(this.maxHandleElement.position-this.minHandleElement.position),_=E;else if(ce.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue))H?(A=Math.ceil(Math.abs(this.maxHandlePosition-this.minHandleElement.position)+this.handleHalfDimension),_=Math.floor(this.minHandleElement.position+this.handleHalfDimension)):(A=this.minHandleElement.position+this.handleHalfDimension,_=0);else{const ye=this.viewOptions.showSelectionBarFromValue,Je=this.valueToPosition(ye);(this.viewOptions.rightToLeft?this.viewLowValue<=ye:this.viewLowValue>ye)?(A=this.minHandleElement.position-Je,_=Je+this.handleHalfDimension):(A=Je-this.minHandleElement.position,_=this.minHandleElement.position+this.handleHalfDimension)}if(this.selectionBarElement.setDimension(A),this.selectionBarElement.setPosition(_),this.range&&this.viewOptions.showOuterSelectionBars&&(this.viewOptions.rightToLeft?(this.rightOuterSelectionBarElement.setDimension(_),this.rightOuterSelectionBarElement.setPosition(0),this.fullBarElement.calculateDimension(),this.leftOuterSelectionBarElement.setDimension(this.fullBarElement.dimension-(_+A)),this.leftOuterSelectionBarElement.setPosition(_+A)):(this.leftOuterSelectionBarElement.setDimension(_),this.leftOuterSelectionBarElement.setPosition(0),this.fullBarElement.calculateDimension(),this.rightOuterSelectionBarElement.setDimension(this.fullBarElement.dimension-(_+A)),this.rightOuterSelectionBarElement.setPosition(_+A))),ce.isNullOrUndefined(this.viewOptions.getSelectionBarColor)){if(!ce.isNullOrUndefined(this.viewOptions.selectionBarGradient)){const ye=ce.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue)?0:this.valueToPosition(this.viewOptions.showSelectionBarFromValue),Je=ye-_>0&&!H||ye-_<=0&&H;this.barStyle={backgroundImage:"linear-gradient(to "+(this.viewOptions.vertical?Je?"bottom":"top":Je?"left":"right")+", "+this.viewOptions.selectionBarGradient.from+" 0%,"+this.viewOptions.selectionBarGradient.to+" 100%)"},this.viewOptions.vertical?(this.barStyle.backgroundPosition="center "+(ye+A+_+(Je?-this.handleHalfDimension:0))+"px",this.barStyle.backgroundSize="100% "+(this.fullBarElement.dimension-this.handleHalfDimension)+"px"):(this.barStyle.backgroundPosition=ye-_+(Je?this.handleHalfDimension:0)+"px center",this.barStyle.backgroundSize=this.fullBarElement.dimension-this.handleHalfDimension+"px 100%")}}else{const ye=this.getSelectionBarColor();this.barStyle={backgroundColor:ye}}}getSelectionBarColor(){return this.range?this.viewOptions.getSelectionBarColor(this.value,this.highValue):this.viewOptions.getSelectionBarColor(this.value)}getPointerColor(_){return this.viewOptions.getPointerColor(_===Ve.Max?this.highValue:this.value,_)}getTickColor(_){return this.viewOptions.getTickColor(_)}updateCombinedLabel(){let _=null;if(_=this.viewOptions.rightToLeft?this.minHandleLabelElement.position-this.minHandleLabelElement.dimension-10<=this.maxHandleLabelElement.position:this.minHandleLabelElement.position+this.minHandleLabelElement.dimension+10>=this.maxHandleLabelElement.position,_){const A=this.getDisplayValue(this.viewLowValue,$t.Low),H=this.getDisplayValue(this.viewHighValue,$t.High),E=this.viewOptions.rightToLeft?this.viewOptions.combineLabels(H,A):this.viewOptions.combineLabels(A,H);this.combinedLabelElement.setValue(E);const ye=this.viewOptions.boundPointerLabels?Math.min(Math.max(this.selectionBarElement.position+this.selectionBarElement.dimension/2-this.combinedLabelElement.dimension/2,0),this.fullBarElement.dimension-this.combinedLabelElement.dimension):this.selectionBarElement.position+this.selectionBarElement.dimension/2-this.combinedLabelElement.dimension/2;this.combinedLabelElement.setPosition(ye),this.minHandleLabelElement.hide(),this.maxHandleLabelElement.hide(),this.combinedLabelElement.show()}else this.updateHighHandle(this.valueToPosition(this.viewHighValue)),this.updateLowHandle(this.valueToPosition(this.viewLowValue)),this.maxHandleLabelElement.show(),this.minHandleLabelElement.show(),this.combinedLabelElement.hide();this.viewOptions.autoHideLimitLabels&&this.updateFloorAndCeilLabelsVisibility()}getDisplayValue(_,A){return!ce.isNullOrUndefined(this.viewOptions.stepsArray)&&!this.viewOptions.bindIndexForStepsArray&&(_=this.getStepValue(_)),this.viewOptions.translate(_,A)}roundStep(_,A){const H=ce.isNullOrUndefined(A)?this.viewOptions.step:A;let E=ln.roundToPrecisionLimit((_-this.viewOptions.floor)/H,this.viewOptions.precisionLimit);return E=Math.round(E)*H,ln.roundToPrecisionLimit(this.viewOptions.floor+E,this.viewOptions.precisionLimit)}valueToPosition(_){let A=ce.linearValueToPosition;ce.isNullOrUndefined(this.viewOptions.customValueToPosition)?this.viewOptions.logScale&&(A=ce.logValueToPosition):A=this.viewOptions.customValueToPosition;let H=A(_=ln.clampToRange(_,this.viewOptions.floor,this.viewOptions.ceil),this.viewOptions.floor,this.viewOptions.ceil);return ce.isNullOrUndefined(H)&&(H=0),this.viewOptions.rightToLeft&&(H=1-H),H*this.maxHandlePosition}positionToValue(_){let A=_/this.maxHandlePosition;this.viewOptions.rightToLeft&&(A=1-A);let H=ce.linearPositionToValue;ce.isNullOrUndefined(this.viewOptions.customPositionToValue)?this.viewOptions.logScale&&(H=ce.logPositionToValue):H=this.viewOptions.customPositionToValue;const E=H(A,this.viewOptions.floor,this.viewOptions.ceil);return ce.isNullOrUndefined(E)?0:E}getEventXY(_,A){if(_ instanceof MouseEvent)return this.viewOptions.vertical||0!==this.viewOptions.rotate?_.clientY:_.clientX;let H=0;const E=_.touches;if(!ce.isNullOrUndefined(A))for(let ye=0;yeE?Ve.Max:this.viewOptions.rightToLeft?A>this.minHandleElement.position?Ve.Min:Ve.Max:Athis.onBarStart(null,_,A,!0,!0,!0)),this.viewOptions.draggableRangeOnly?(this.minHandleElement.on("mousedown",A=>this.onBarStart(Ve.Min,_,A,!0,!0)),this.maxHandleElement.on("mousedown",A=>this.onBarStart(Ve.Max,_,A,!0,!0))):(this.minHandleElement.on("mousedown",A=>this.onStart(Ve.Min,A,!0,!0)),this.range&&this.maxHandleElement.on("mousedown",A=>this.onStart(Ve.Max,A,!0,!0)),this.viewOptions.onlyBindHandles||(this.fullBarElement.on("mousedown",A=>this.onStart(null,A,!0,!0,!0)),this.ticksElement.on("mousedown",A=>this.onStart(null,A,!0,!0,!0,!0)))),this.viewOptions.onlyBindHandles||this.selectionBarElement.onPassive("touchstart",A=>this.onBarStart(null,_,A,!0,!0,!0)),this.viewOptions.draggableRangeOnly?(this.minHandleElement.onPassive("touchstart",A=>this.onBarStart(Ve.Min,_,A,!0,!0)),this.maxHandleElement.onPassive("touchstart",A=>this.onBarStart(Ve.Max,_,A,!0,!0))):(this.minHandleElement.onPassive("touchstart",A=>this.onStart(Ve.Min,A,!0,!0)),this.range&&this.maxHandleElement.onPassive("touchstart",A=>this.onStart(Ve.Max,A,!0,!0)),this.viewOptions.onlyBindHandles||(this.fullBarElement.onPassive("touchstart",A=>this.onStart(null,A,!0,!0,!0)),this.ticksElement.onPassive("touchstart",A=>this.onStart(null,A,!1,!1,!0,!0)))),this.viewOptions.keyboardSupport&&(this.minHandleElement.on("focus",()=>this.onPointerFocus(Ve.Min)),this.range&&this.maxHandleElement.on("focus",()=>this.onPointerFocus(Ve.Max)))}getOptionsInfluencingEventBindings(_){return[_.disabled,_.readOnly,_.draggableRange,_.draggableRangeOnly,_.onlyBindHandles,_.keyboardSupport]}unbindEvents(){this.unsubscribeOnMove(),this.unsubscribeOnEnd();for(const _ of this.getAllSliderElements())ce.isNullOrUndefined(_)||_.off()}onBarStart(_,A,H,E,ye,Je,gt){A?this.onDragStart(_,H,E,ye):this.onStart(_,H,E,ye,Je,gt)}onStart(_,A,H,E,ye,Je){A.stopPropagation(),!os.isTouchEvent(A)&&!Ee&&A.preventDefault(),this.moving=!1,this.calculateViewDimensions(),ce.isNullOrUndefined(_)&&(_=this.getNearestHandle(A)),this.currentTrackingPointer=_;const gt=this.getPointerElement(_);if(gt.active=!0,this.preStartHandleValue=this.getCurrentTrackingValue(),this.viewOptions.keyboardSupport&>.focus(),H){this.unsubscribeOnMove();const zt=bt=>this.dragging.active?this.onDragMove(bt):this.onMove(bt);this.onMoveEventListener=os.isTouchEvent(A)?this.eventListenerHelper.attachPassiveEventListener(document,"touchmove",zt):this.eventListenerHelper.attachEventListener(document,"mousemove",zt)}if(E){this.unsubscribeOnEnd();const zt=bt=>this.onEnd(bt);this.onEndEventListener=os.isTouchEvent(A)?this.eventListenerHelper.attachPassiveEventListener(document,"touchend",zt):this.eventListenerHelper.attachEventListener(document,"mouseup",zt)}this.userChangeStart.emit(this.getChangeContext()),os.isTouchEvent(A)&&!ce.isNullOrUndefined(A.changedTouches)&&ce.isNullOrUndefined(this.touchId)&&(this.touchId=A.changedTouches[0].identifier),ye&&this.onMove(A,!0),Je&&this.onEnd(A)}onMove(_,A){let H=null;if(os.isTouchEvent(_)){const zt=_.changedTouches;for(let bt=0;bt=this.maxHandlePosition?ye=this.viewOptions.rightToLeft?this.viewOptions.floor:this.viewOptions.ceil:(ye=this.positionToValue(E),ye=A&&!ce.isNullOrUndefined(this.viewOptions.tickStep)?this.roundStep(ye,this.viewOptions.tickStep):this.roundStep(ye)),this.positionTrackingHandle(ye)}forceEnd(_=!1){this.moving=!1,this.viewOptions.animate&&(this.sliderElementAnimateClass=!0),_&&(this.sliderElementAnimateClass=!1,setTimeout(()=>{this.sliderElementAnimateClass=this.viewOptions.animate})),this.touchId=null,this.viewOptions.keyboardSupport||(this.minHandleElement.active=!1,this.maxHandleElement.active=!1,this.currentTrackingPointer=null),this.dragging.active=!1,this.unsubscribeOnMove(),this.unsubscribeOnEnd(),this.userChangeEnd.emit(this.getChangeContext())}onEnd(_){os.isTouchEvent(_)&&_.changedTouches[0].identifier!==this.touchId||this.forceEnd()}onPointerFocus(_){const A=this.getPointerElement(_);A.on("blur",()=>this.onPointerBlur(A)),A.on("keydown",H=>this.onKeyboardEvent(H)),A.on("keyup",()=>this.onKeyUp()),A.active=!0,this.currentTrackingPointer=_,this.currentFocusPointer=_,this.firstKeyDown=!0}onKeyUp(){this.firstKeyDown=!0,this.userChangeEnd.emit(this.getChangeContext())}onPointerBlur(_){_.off("blur"),_.off("keydown"),_.off("keyup"),_.active=!1,ce.isNullOrUndefined(this.touchId)&&(this.currentTrackingPointer=null,this.currentFocusPointer=null)}getKeyActions(_){const A=this.viewOptions.ceil-this.viewOptions.floor;let H=_+this.viewOptions.step,E=_-this.viewOptions.step,ye=_+A/10,Je=_-A/10;this.viewOptions.reversedControls&&(H=_-this.viewOptions.step,E=_+this.viewOptions.step,ye=_-A/10,Je=_+A/10);const gt={UP:H,DOWN:E,LEFT:E,RIGHT:H,PAGEUP:ye,PAGEDOWN:Je,HOME:this.viewOptions.reversedControls?this.viewOptions.ceil:this.viewOptions.floor,END:this.viewOptions.reversedControls?this.viewOptions.floor:this.viewOptions.ceil};return this.viewOptions.rightToLeft&&(gt.LEFT=H,gt.RIGHT=E,(this.viewOptions.vertical||0!==this.viewOptions.rotate)&&(gt.UP=E,gt.DOWN=H)),gt}onKeyboardEvent(_){const A=this.getCurrentTrackingValue(),H=ce.isNullOrUndefined(_.keyCode)?_.which:_.keyCode,gt=this.getKeyActions(A)[{38:"UP",40:"DOWN",37:"LEFT",39:"RIGHT",33:"PAGEUP",34:"PAGEDOWN",36:"HOME",35:"END"}[H]];if(ce.isNullOrUndefined(gt)||ce.isNullOrUndefined(this.currentTrackingPointer))return;_.preventDefault(),this.firstKeyDown&&(this.firstKeyDown=!1,this.userChangeStart.emit(this.getChangeContext()));const zt=ln.clampToRange(gt,this.viewOptions.floor,this.viewOptions.ceil),bt=this.roundStep(zt);if(this.viewOptions.draggableRangeOnly){const xn=this.viewHighValue-this.viewLowValue;let In,jn;this.currentTrackingPointer===Ve.Min?(In=bt,jn=bt+xn,jn>this.viewOptions.ceil&&(jn=this.viewOptions.ceil,In=jn-xn)):this.currentTrackingPointer===Ve.Max&&(jn=bt,In=bt-xn,In=this.maxHandlePosition-H;let bt,xn;if(A<=E){if(0===ye.position)return;bt=this.getMinValue(A,!0,!1),xn=this.getMaxValue(A,!0,!1)}else if(zt){if(Je.position===this.maxHandlePosition)return;xn=this.getMaxValue(A,!0,!0),bt=this.getMinValue(A,!0,!0)}else bt=this.getMinValue(A,!1,!1),xn=this.getMaxValue(A,!1,!1);this.positionTrackingBar(bt,xn)}positionTrackingBar(_,A){!ce.isNullOrUndefined(this.viewOptions.minLimit)&&_this.viewOptions.maxLimit&&(_=ln.roundToPrecisionLimit((A=this.viewOptions.maxLimit)-this.dragging.difference,this.viewOptions.precisionLimit)),this.viewLowValue=_,this.viewHighValue=A,this.applyViewChange(),this.updateHandles(Ve.Min,this.valueToPosition(_)),this.updateHandles(Ve.Max,this.valueToPosition(A))}positionTrackingHandle(_){_=this.applyMinMaxLimit(_),this.range&&(this.viewOptions.pushRange?_=this.applyPushRange(_):(this.viewOptions.noSwitching&&(this.currentTrackingPointer===Ve.Min&&_>this.viewHighValue?_=this.applyMinMaxRange(this.viewHighValue):this.currentTrackingPointer===Ve.Max&&_this.viewHighValue?(this.viewLowValue=this.viewHighValue,this.applyViewChange(),this.updateHandles(Ve.Min,this.maxHandleElement.position),this.updateAriaAttributes(),this.currentTrackingPointer=Ve.Max,this.minHandleElement.active=!1,this.maxHandleElement.active=!0,this.viewOptions.keyboardSupport&&this.maxHandleElement.focus()):this.currentTrackingPointer===Ve.Max&&_this.viewOptions.maxLimit?this.viewOptions.maxLimit:_}applyMinMaxRange(_){const H=Math.abs(_-(this.currentTrackingPointer===Ve.Min?this.viewHighValue:this.viewLowValue));if(!ce.isNullOrUndefined(this.viewOptions.minRange)&&Hthis.viewOptions.maxRange){if(this.currentTrackingPointer===Ve.Min)return ln.roundToPrecisionLimit(this.viewHighValue-this.viewOptions.maxRange,this.viewOptions.precisionLimit);if(this.currentTrackingPointer===Ve.Max)return ln.roundToPrecisionLimit(this.viewLowValue+this.viewOptions.maxRange,this.viewOptions.precisionLimit)}return _}applyPushRange(_){const A=this.currentTrackingPointer===Ve.Min?this.viewHighValue-_:_-this.viewLowValue,H=ce.isNullOrUndefined(this.viewOptions.minRange)?this.viewOptions.step:this.viewOptions.minRange,E=this.viewOptions.maxRange;return AE&&(this.currentTrackingPointer===Ve.Min?(this.viewHighValue=ln.roundToPrecisionLimit(_+E,this.viewOptions.precisionLimit),this.applyViewChange(),this.updateHandles(Ve.Max,this.valueToPosition(this.viewHighValue))):this.currentTrackingPointer===Ve.Max&&(this.viewLowValue=ln.roundToPrecisionLimit(_-E,this.viewOptions.precisionLimit),this.applyViewChange(),this.updateHandles(Ve.Min,this.valueToPosition(this.viewLowValue))),this.updateAriaAttributes()),_}getChangeContext(){const _=new ra;return _.pointerType=this.currentTrackingPointer,_.value=+this.value,this.range&&(_.highValue=+this.highValue),_}static \u0275fac=function(A){return new(A||ve)(F.rXU(F.sFG),F.rXU(F.aKT),F.rXU(F.gRc),F.rXU(F.SKi),F.rXU(Hl,8))};static \u0275cmp=F.VBU({type:ve,selectors:[["ngx-slider"]],contentQueries:function(A,H,E){if(1&A&&F.wni(E,ie,5),2&A){let ye;F.mGM(ye=F.lsd())&&(H.tooltipTemplate=ye.first)}},viewQuery:function(A,H){if(1&A&&(F.GBs(T,5,Cs),F.GBs(Me,5,Cs),F.GBs(Ye,5,Cs),F.GBs(K,5,Cs),F.GBs(Pt,5,vi),F.GBs(Rt,5,vi),F.GBs(rt,5,Ue),F.GBs(St,5,Ue),F.GBs(Mr,5,Ue),F.GBs(Vs,5,Ue),F.GBs(Ya,5,Ue),F.GBs(zs,5,Cs)),2&A){let E;F.mGM(E=F.lsd())&&(H.leftOuterSelectionBarElement=E.first),F.mGM(E=F.lsd())&&(H.rightOuterSelectionBarElement=E.first),F.mGM(E=F.lsd())&&(H.fullBarElement=E.first),F.mGM(E=F.lsd())&&(H.selectionBarElement=E.first),F.mGM(E=F.lsd())&&(H.minHandleElement=E.first),F.mGM(E=F.lsd())&&(H.maxHandleElement=E.first),F.mGM(E=F.lsd())&&(H.floorLabelElement=E.first),F.mGM(E=F.lsd())&&(H.ceilLabelElement=E.first),F.mGM(E=F.lsd())&&(H.minHandleLabelElement=E.first),F.mGM(E=F.lsd())&&(H.maxHandleLabelElement=E.first),F.mGM(E=F.lsd())&&(H.combinedLabelElement=E.first),F.mGM(E=F.lsd())&&(H.ticksElement=E.first)}},hostVars:10,hostBindings:function(A,H){1&A&&F.bIt("resize",function(ye){return H.onResize(ye)},!1,F.tSv),2&A&&(F.BMQ("disabled",H.sliderElementDisabledAttr)("aria-label",H.sliderElementAriaLabel),F.AVh("ngx-slider",H.sliderElementNgxSliderClass)("vertical",H.sliderElementVerticalClass)("animate",H.sliderElementAnimateClass)("with-legend",H.sliderElementWithLegendClass))},inputs:{value:"value",highValue:"highValue",options:"options",manualRefresh:"manualRefresh",triggerFocus:"triggerFocus",cancelUserChange:"cancelUserChange"},outputs:{valueChange:"valueChange",highValueChange:"highValueChange",userChangeStart:"userChangeStart",userChange:"userChange",userChangeEnd:"userChangeEnd"},standalone:!1,features:[F.Jv_([Is]),F.OA$],decls:29,vars:13,consts:[["leftOuterSelectionBar",""],["rightOuterSelectionBar",""],["fullBar",""],["selectionBar",""],["minHandle",""],["maxHandle",""],["floorLabel",""],["ceilLabel",""],["minHandleLabel",""],["maxHandleLabel",""],["combinedLabel",""],["ticksElement",""],["ngxSliderElement","",1,"ngx-slider-span","ngx-slider-bar-wrapper","ngx-slider-left-out-selection"],[1,"ngx-slider-span","ngx-slider-bar"],["ngxSliderElement","",1,"ngx-slider-span","ngx-slider-bar-wrapper","ngx-slider-right-out-selection"],["ngxSliderElement","",1,"ngx-slider-span","ngx-slider-bar-wrapper","ngx-slider-full-bar"],["ngxSliderElement","",1,"ngx-slider-span","ngx-slider-bar-wrapper","ngx-slider-selection-bar"],[1,"ngx-slider-span","ngx-slider-bar","ngx-slider-selection",3,"ngStyle"],["ngxSliderHandle","",1,"ngx-slider-span","ngx-slider-pointer","ngx-slider-pointer-min",3,"ngStyle"],["ngxSliderHandle","",1,"ngx-slider-span","ngx-slider-pointer","ngx-slider-pointer-max",3,"ngStyle"],["ngxSliderLabel","",1,"ngx-slider-span","ngx-slider-bubble","ngx-slider-limit","ngx-slider-floor"],["ngxSliderLabel","",1,"ngx-slider-span","ngx-slider-bubble","ngx-slider-limit","ngx-slider-ceil"],["ngxSliderLabel","",1,"ngx-slider-span","ngx-slider-bubble","ngx-slider-model-value"],["ngxSliderLabel","",1,"ngx-slider-span","ngx-slider-bubble","ngx-slider-model-high"],["ngxSliderLabel","",1,"ngx-slider-span","ngx-slider-bubble","ngx-slider-combined"],["ngxSliderElement","",1,"ngx-slider-ticks",3,"hidden"],["class","ngx-slider-tick",3,"ngClass","ngStyle",4,"ngFor","ngForOf"],[1,"ngx-slider-tick",3,"ngClass","ngStyle"],[3,"template","tooltip","placement"],["class","ngx-slider-span ngx-slider-tick-value",3,"template","tooltip","placement","content",4,"ngIf"],["class","ngx-slider-span ngx-slider-tick-legend",3,"innerText",4,"ngIf"],["class","ngx-slider-span ngx-slider-tick-legend",3,"innerHTML",4,"ngIf"],[1,"ngx-slider-span","ngx-slider-tick-value",3,"template","tooltip","placement","content"],[1,"ngx-slider-span","ngx-slider-tick-legend",3,"innerText"],[1,"ngx-slider-span","ngx-slider-tick-legend",3,"innerHTML"]],template:function(A,H){1&A&&(F.j41(0,"span",12,0),F.nrm(2,"span",13),F.k0s(),F.j41(3,"span",14,1),F.nrm(5,"span",13),F.k0s(),F.j41(6,"span",15,2),F.nrm(8,"span",13),F.k0s(),F.j41(9,"span",16,3),F.nrm(11,"span",17),F.k0s(),F.nrm(12,"span",18,4)(14,"span",19,5)(16,"span",20,6)(18,"span",21,7)(20,"span",22,8)(22,"span",23,9)(24,"span",24,10),F.j41(26,"span",25,11),F.DNE(28,Cn,5,10,"span",26),F.k0s()),2&A&&(F.R7$(6),F.AVh("ngx-slider-transparent",H.fullBarTransparentClass),F.R7$(3),F.AVh("ngx-slider-draggable",H.selectionBarDraggableClass),F.R7$(2),F.Y8G("ngStyle",H.barStyle),F.R7$(),F.Y8G("ngStyle",H.minPointerStyle),F.R7$(2),F.xc7("display",H.range?"inherit":"none"),F.Y8G("ngStyle",H.maxPointerStyle),F.R7$(12),F.AVh("ngx-slider-ticks-values-under",H.ticksUnderValuesClass),F.Y8G("hidden",!H.showTicks),F.R7$(2),F.Y8G("ngForOf",H.ticks))},dependencies:[Re.YU,Re.Sq,Re.bT,Re.B3,Cs,vi,Ue,jl],styles:['.ngx-slider{display:inline-block;position:relative;height:4px;width:100%;margin:35px 0 15px;vertical-align:middle;-webkit-user-select:none;user-select:none;touch-action:pan-y} .ngx-slider.with-legend{margin-bottom:40px} .ngx-slider[disabled]{cursor:not-allowed} .ngx-slider[disabled] .ngx-slider-pointer{cursor:not-allowed;background-color:#d8e0f3} .ngx-slider[disabled] .ngx-slider-draggable{cursor:not-allowed} .ngx-slider[disabled] .ngx-slider-selection{background:#8b91a2} .ngx-slider[disabled] .ngx-slider-tick{cursor:not-allowed} .ngx-slider[disabled] .ngx-slider-tick.ngx-slider-selected{background:#8b91a2} .ngx-slider .ngx-slider-span{white-space:nowrap;position:absolute;display:inline-block} .ngx-slider .ngx-slider-base{width:100%;height:100%;padding:0} .ngx-slider .ngx-slider-bar-wrapper{left:0;box-sizing:border-box;margin-top:-16px;padding-top:16px;width:100%;height:32px;z-index:1} .ngx-slider .ngx-slider-draggable{cursor:move} .ngx-slider .ngx-slider-bar{left:0;width:100%;height:4px;z-index:1;background:#d8e0f3;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px} .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-transparent .ngx-slider-bar{background:transparent} .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-left-out-selection .ngx-slider-bar{background:#df002d} .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-right-out-selection .ngx-slider-bar{background:#03a688} .ngx-slider .ngx-slider-selection{z-index:2;background:#0db9f0;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px} .ngx-slider .ngx-slider-pointer{cursor:pointer;width:32px;height:32px;top:-14px;background-color:#0db9f0;z-index:3;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px} .ngx-slider .ngx-slider-pointer:after{content:"";width:8px;height:8px;position:absolute;top:12px;left:12px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;background:#fff} .ngx-slider .ngx-slider-pointer:hover:after{background-color:#fff} .ngx-slider .ngx-slider-pointer.ngx-slider-active{z-index:4} .ngx-slider .ngx-slider-pointer.ngx-slider-active:after{background-color:#451aff} .ngx-slider .ngx-slider-bubble{cursor:default;bottom:16px;padding:1px 3px;color:#55637d;font-size:16px} .ngx-slider .ngx-slider-bubble.ngx-slider-limit{color:#55637d} .ngx-slider .ngx-slider-ticks{box-sizing:border-box;width:100%;height:0;position:absolute;left:0;top:-3px;margin:0;z-index:1;list-style:none} .ngx-slider .ngx-slider-ticks-values-under .ngx-slider-tick-value{top:auto;bottom:-36px} .ngx-slider .ngx-slider-tick{text-align:center;cursor:pointer;width:10px;height:10px;background:#d8e0f3;border-radius:50%;position:absolute;top:0;left:0;margin-left:11px} .ngx-slider .ngx-slider-tick.ngx-slider-selected{background:#0db9f0} .ngx-slider .ngx-slider-tick-value{position:absolute;top:-34px;transform:translate(-50%)} .ngx-slider .ngx-slider-tick-legend{position:absolute;top:24px;transform:translate(-50%);max-width:50px;white-space:normal} .ngx-slider.vertical{position:relative;width:4px;height:100%;margin:0 20px;padding:0;vertical-align:baseline;touch-action:pan-x} .ngx-slider.vertical .ngx-slider-base{width:100%;height:100%;padding:0} .ngx-slider.vertical .ngx-slider-bar-wrapper{top:auto;left:0;margin:0 0 0 -16px;padding:0 0 0 16px;height:100%;width:32px} .ngx-slider.vertical .ngx-slider-bar{bottom:0;left:auto;width:4px;height:100%} .ngx-slider.vertical .ngx-slider-pointer{left:-14px!important;top:auto;bottom:0} .ngx-slider.vertical .ngx-slider-bubble{left:16px!important;bottom:0} .ngx-slider.vertical .ngx-slider-ticks{height:100%;width:0;left:-3px;top:0;z-index:1} .ngx-slider.vertical .ngx-slider-tick{vertical-align:middle;margin-left:auto;margin-top:11px} .ngx-slider.vertical .ngx-slider-tick-value{left:24px;top:auto;transform:translateY(-28%)} .ngx-slider.vertical .ngx-slider-tick-legend{top:auto;right:24px;transform:translateY(-28%);max-width:none;white-space:nowrap} .ngx-slider.vertical .ngx-slider-ticks-values-under .ngx-slider-tick-value{bottom:auto;left:auto;right:24px} .ngx-slider *{transition:none} .ngx-slider.animate .ngx-slider-bar-wrapper{transition:all linear .3s} .ngx-slider.animate .ngx-slider-selection{transition:background-color linear .3s} .ngx-slider.animate .ngx-slider-pointer{transition:all linear .3s} .ngx-slider.animate .ngx-slider-pointer:after{transition:all linear .3s} .ngx-slider.animate .ngx-slider-bubble{transition:all linear .3s} .ngx-slider.animate .ngx-slider-bubble.ngx-slider-limit{transition:opacity linear .3s} .ngx-slider.animate .ngx-slider-bubble.ngx-slider-combined{transition:opacity linear .3s} .ngx-slider.animate .ngx-slider-tick{transition:background-color linear .3s}']})}return ve})(),aa=(()=>{class ve{static \u0275fac=function(A){return new(A||ve)};static \u0275mod=F.$C({type:ve});static \u0275inj=F.G2t({imports:[Re.MD]})}return ve})()},3881:(_t,ct,W)=>{"use strict";W.d(ct,{Ez:()=>qe}),W(6860);var Re=W(4438),Ke=W(3);W(9417),W(1413);let qe=(()=>{class R{static \u0275fac=function(M){return new(M||R)};static \u0275mod=Re.$C({type:R});static \u0275inj=Re.G2t({imports:[Ke.yE,Ke.pZ]})}return R})()},2723:(_t,ct,W)=>{"use strict";W.d(ct,{A:()=>at});var F=W(4786),Re=W(6832),Ke=W(4888),Tt=W(4958),nt=W(9539),Xe=W(6210),st=W(6401),Ce=W(973),q=W(1043),de=W(9609),_e=W(8618),ue=W(3301);class Pe extends Ke.Ay{constructor(Ee,Be,Qe,et){super(Ee),this.selected=Be,this.deselected=Qe,this.mapBrowserEvent=et}}const Te={};class lt extends nt.Ay{constructor(Ee){let Be;if(super(),Ee=Ee||{},this.boundAddFeature_=this.addFeature_.bind(this),this.boundRemoveFeature_=this.removeFeature_.bind(this),this.condition_=Ee.condition?Ee.condition:ue.t5,this.addCondition_=Ee.addCondition?Ee.addCondition:ue.Zm,this.removeCondition_=Ee.removeCondition?Ee.removeCondition:ue.Zm,this.toggleCondition_=Ee.toggleCondition?Ee.toggleCondition:ue.Kg,this.multi_=!!Ee.multi&&Ee.multi,this.filter_=Ee.filter?Ee.filter:st.rT,this.hitTolerance_=Ee.hitTolerance?Ee.hitTolerance:0,this.style_=void 0!==Ee.style?Ee.style:function Ht(){const jt=(0,q.mY)();return(0,de.X$)(jt.Polygon,jt.LineString),(0,de.X$)(jt.GeometryCollection,jt.LineString),function(Ee){return Ee.getGeometry()?jt[Ee.getGeometry().getType()]:null}}(),this.features_=Ee.features||new F.A,Ee.layers)if("function"==typeof Ee.layers)Be=Ee.layers;else{const Qe=Ee.layers;Be=function(et){return Qe.includes(et)}}else Be=st.rT;this.layerFilter_=Be,this.featureLayerAssociation_={}}addFeatureLayerAssociation_(Ee,Be){this.featureLayerAssociation_[(0,_e.v6)(Ee)]=Be}getFeatures(){return this.features_}getHitTolerance(){return this.hitTolerance_}getLayer(Ee){return this.featureLayerAssociation_[(0,_e.v6)(Ee)]}setHitTolerance(Ee){this.hitTolerance_=Ee}setMap(Ee){this.getMap()&&this.style_&&this.features_.forEach(this.restorePreviousStyle_.bind(this)),super.setMap(Ee),Ee?(this.features_.addEventListener(Re.A.ADD,this.boundAddFeature_),this.features_.addEventListener(Re.A.REMOVE,this.boundRemoveFeature_),this.style_&&this.features_.forEach(this.applySelectedStyle_.bind(this))):(this.features_.removeEventListener(Re.A.ADD,this.boundAddFeature_),this.features_.removeEventListener(Re.A.REMOVE,this.boundRemoveFeature_))}addFeature_(Ee){const Be=Ee.element;if(this.style_&&this.applySelectedStyle_(Be),!this.getLayer(Be)){const Qe=this.getMap().getAllLayers().find(function(et){if(et instanceof Xe.A&&et.getSource()&&et.getSource().hasFeature(Be))return et});Qe&&this.addFeatureLayerAssociation_(Be,Qe)}}removeFeature_(Ee){this.style_&&this.restorePreviousStyle_(Ee.element)}getStyle(){return this.style_}applySelectedStyle_(Ee){const Be=(0,_e.v6)(Ee);Be in Te||(Te[Be]=Ee.getStyle()),Ee.setStyle(this.style_)}restorePreviousStyle_(Ee){const Be=this.getMap().getInteractions().getArray();for(let et=Be.length-1;et>=0;--et){const N=Be[et];if(N!==this&&N instanceof lt&&N.getStyle()&&-1!==N.getFeatures().getArray().lastIndexOf(Ee))return void Ee.setStyle(N.getStyle())}const Qe=(0,_e.v6)(Ee);Ee.setStyle(Te[Qe]),delete Te[Qe]}removeFeatureLayerAssociation_(Ee){delete this.featureLayerAssociation_[(0,_e.v6)(Ee)]}handleEvent(Ee){if(!this.condition_(Ee))return!0;const Be=this.addCondition_(Ee),Qe=this.removeCondition_(Ee),et=this.toggleCondition_(Ee),N=!Be&&!Qe&&!et,oe=Ee.map,O=this.getFeatures(),we=[],Fe=[];if(N){(0,Ce.I)(this.featureLayerAssociation_),oe.forEachFeatureAtPixel(Ee.pixel,($e,qe)=>{if($e instanceof Tt.A&&this.filter_($e,qe))return this.addFeatureLayerAssociation_($e,qe),Fe.push($e),!this.multi_},{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(let $e=O.getLength()-1;$e>=0;--$e){const qe=O.item($e),R=Fe.indexOf(qe);R>-1?Fe.splice(R,1):(O.remove(qe),we.push(qe))}0!==Fe.length&&O.extend(Fe)}else{oe.forEachFeatureAtPixel(Ee.pixel,($e,qe)=>{if($e instanceof Tt.A&&this.filter_($e,qe))return!Be&&!et||O.getArray().includes($e)?(Qe||et)&&O.getArray().includes($e)&&(we.push($e),this.removeFeatureLayerAssociation_($e)):(this.addFeatureLayerAssociation_($e,qe),Fe.push($e)),!this.multi_},{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(let $e=we.length-1;$e>=0;--$e)O.remove(we[$e]);O.extend(Fe)}return(Fe.length>0||we.length>0)&&this.dispatchEvent(new Pe("select",Fe,we,Ee)),!0}}const at=lt}}]); \ No newline at end of file diff --git a/web/912.b9d10d9e0ceb8501.js b/web/912.b9d10d9e0ceb8501.js new file mode 100644 index 0000000000000000000000000000000000000000..8b283038e01d386fa10db28cac31343aff28d0b0 --- /dev/null +++ b/web/912.b9d10d9e0ceb8501.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[912],{6173:(y,W,a)=>{a.d(W,{S:()=>T});var r=a(9974),A=a(4360),M=a(7908);function T(t,n=null){return n=n??t,(0,r.N)((u,h)=>{let e=[],c=0;u.subscribe((0,A._)(h,o=>{let f=null;c++%n==0&&e.push([]);for(const s of e)s.push(o),t<=s.length&&(f=f??[],f.push(s));if(f)for(const s of f)(0,M.o)(e,s),h.next(s)},()=>{for(const o of e)h.next(o);h.complete()},void 0,()=>{e=null}))})}},6705:(y,W,a)=>{a.d(W,{A:()=>u});var r=a(8698),A=a(9557),M=a(5664),T=a(8701);const u=class t extends r.A{constructor(e,c,o,f,s,l){super(e,c,l),this.crossOrigin_=f,this.src_=o,this.key=o,this.image_=new Image,null!==f&&(this.image_.crossOrigin=f),this.unlisten_=null,this.tileLoadFunction_=s}getImage(){return this.image_}setImage(e){this.image_=e,this.state=A.A.LOADED,this.unlistenImage_(),this.changed()}handleImageError_(){this.state=A.A.ERROR,this.unlistenImage_(),this.image_=function n(){const h=(0,M.Y)(1,1);return h.fillStyle="rgba(0,0,0,0)",h.fillRect(0,0,1,1),h.canvas}(),this.changed()}handleImageLoad_(){const e=this.image_;this.state=e.naturalWidth&&e.naturalHeight?A.A.LOADED:A.A.EMPTY,this.unlistenImage_(),this.changed()}load(){this.state==A.A.ERROR&&(this.state=A.A.IDLE,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==A.A.IDLE&&(this.state=A.A.LOADING,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=(0,T.f6)(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))}unlistenImage_(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)}}},8698:(y,W,a)=>{a.d(W,{A:()=>u});var r=a(6339),A=a(8864),M=a(9557),T=a(8618),t=a(1999);const u=class n extends r.A{constructor(e,c,o){super(),o=o||{},this.tileCoord=e,this.state=c,this.interimTile=null,this.key="",this.transition_=void 0===o.transition?250:o.transition,this.transitionStarts_={},this.interpolate=!!o.interpolate}changed(){this.dispatchEvent(A.A.CHANGE)}release(){this.state===M.A.ERROR&&this.setState(M.A.EMPTY)}getKey(){return this.key+"/"+this.tileCoord}getInterimTile(){let e=this.interimTile;if(!e)return this;do{if(e.getState()==M.A.LOADED)return this.transition_=0,e;e=e.interimTile}while(e);return this}refreshInterimChain(){let e=this.interimTile;if(!e)return;let c=this;do{if(e.getState()==M.A.LOADED){e.interimTile=null;break}e.getState()==M.A.LOADING?c=e:e.getState()==M.A.IDLE?c.interimTile=e.interimTile:c=e,e=c.interimTile}while(e)}getTileCoord(){return this.tileCoord}getState(){return this.state}setState(e){if(this.state!==M.A.ERROR&&this.state>e)throw new Error("Tile load sequence violation");this.state=e,this.changed()}load(){(0,T.b0)()}getAlpha(e,c){if(!this.transition_)return 1;let o=this.transitionStarts_[e];if(o){if(-1===o)return 1}else o=c,this.transitionStarts_[e]=o;const f=c-o+1e3/60;return f>=this.transition_?1:(0,t.a6)(f/this.transition_)}inTransition(e){return!!this.transition_&&-1!==this.transitionStarts_[e]}endTransition(e){this.transition_&&(this.transitionStarts_[e]=-1)}}},1113:(y,W,a)=>{a.d(W,{A:()=>M,N:()=>A});class r{constructor(t,n,u,h){this.minX=t,this.maxX=n,this.minY=u,this.maxY=h}contains(t){return this.containsXY(t[1],t[2])}containsTileRange(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY}containsXY(t,n){return this.minX<=t&&t<=this.maxX&&this.minY<=n&&n<=this.maxY}equals(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY}extend(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)}getHeight(){return this.maxY-this.minY+1}getSize(){return[this.getWidth(),this.getHeight()]}getWidth(){return this.maxX-this.minX+1}intersects(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY}}function A(T,t,n,u,h){return void 0!==h?(h.minX=T,h.maxX=t,h.minY=n,h.maxY=u,h):new r(T,t,n,u)}const M=r},9557:(y,W,a)=>{a.d(W,{A:()=>r});const r={IDLE:0,LOADING:1,LOADED:2,ERROR:3,EMPTY:4}},5112:(y,W,a)=>{a.d(W,{BV:()=>n,KQ:()=>c,XX:()=>f,aY:()=>o});var r=a(4378),A=a(5664),M=a(3036),T=a(8092);let t;const n=[];function u(s,l,_,m,g){s.beginPath(),s.moveTo(0,0),s.lineTo(l,_),s.lineTo(m,g),s.closePath(),s.save(),s.clip(),s.fillRect(0,0,Math.max(l,m)+1,Math.max(_,g)),s.restore()}function h(s,l){return Math.abs(s[4*l]-210)>2||Math.abs(s[4*l+3]-191.25)>2}function c(s,l,_,m){const g=(0,M.pd)(_,l,s);let d=(0,M.hO)(l,m,_);const x=l.getMetersPerUnit();void 0!==x&&(d*=x);const p=s.getMetersPerUnit();void 0!==p&&(d/=p);const L=s.getExtent();if(!L||(0,r.Ym)(L,g)){const v=(0,M.hO)(s,d,g)/d;isFinite(v)&&v>0&&(d/=v)}return d}function o(s,l,_,m){const g=(0,r.q1)(_);let d=c(s,l,g,m);return(!isFinite(d)||d<=0)&&(0,r.sB)(_,function(x){return d=c(s,l,x,m),isFinite(d)&&d>0}),d}function f(s,l,_,m,g,d,x,p,L,v,R,D,C,O){const i=(0,A.Y)(Math.round(_*s),Math.round(_*l),n);if(D||(i.imageSmoothingEnabled=!1),0===L.length)return i.canvas;function E(P){return Math.round(P*_)/_}i.scale(_,_),i.globalCompositeOperation="lighter";const X=(0,r.S5)();let K;L.forEach(function(P,B,F){(0,r.X$)(X,P.extent)});const Y=_/m,G=(D?1:1+Math.pow(2,-24))/Y;if(!C||1!==L.length||0!==v){if(K=(0,A.Y)(Math.round((0,r.RG)(X)*Y),Math.round((0,r.Oq)(X)*Y),n),D||(K.imageSmoothingEnabled=!1),g&&O){const P=(g[0]-X[0])*Y,B=-(g[3]-X[3])*Y,F=(0,r.RG)(g)*Y,I=(0,r.Oq)(g)*Y;K.rect(P,B,F,I),K.clip()}L.forEach(function(P,B,F){const I=(P.extent[0]-X[0])*Y,w=-(P.extent[3]-X[3])*Y,k=(0,r.RG)(P.extent)*Y,N=(0,r.Oq)(P.extent)*Y;P.image.width>0&&P.image.height>0&&K.drawImage(P.image,v,v,P.image.width-2*v,P.image.height-2*v,D?I:Math.round(I),D?w:Math.round(w),D?k:Math.round(I+k)-Math.round(I),D?N:Math.round(w+N)-Math.round(w))})}const U=(0,r.Py)(x);return p.getTriangles().forEach(function(P,B,F){const I=P.source,w=P.target;let k=I[0][0],N=I[0][1],Q=I[1][0],b=I[1][1],z=I[2][0],et=I[2][1];const V=E((w[0][0]-U[0])/d),$=E(-(w[0][1]-U[1])/d),H=E((w[1][0]-U[0])/d),Z=E(-(w[1][1]-U[1])/d),st=E((w[2][0]-U[0])/d),it=E(-(w[2][1]-U[1])/d),nt=k,ot=N;k=0,N=0,Q-=nt,b-=ot,z-=nt,et-=ot;const J=(0,T.KU)([[Q,b,0,0,H-V],[z,et,0,0,st-V],[0,0,Q,b,Z-$],[0,0,z,et,it-$]]);if(!J)return;if(i.save(),i.beginPath(),function e(){if(void 0===t){const s=(0,A.Y)(6,6,n);s.globalCompositeOperation="lighter",s.fillStyle="rgba(210, 0, 0, 0.75)",u(s,4,5,4,0),u(s,4,5,0,5);const l=s.getImageData(0,0,3,3).data;t=h(l,0)||h(l,4)||h(l,8),(0,A.Yg)(s),n.push(s.canvas)}return t}()||!D){i.moveTo(H,Z);const j=4,tt=V-H,rt=$-Z;for(let S=0;S{a.d(W,{A:()=>f});var r=a(7326),A=a(8864),M=a(8698),T=a(9557),t=a(9056),n=a(5112),u=a(8092),h=a(4378),e=a(7443),c=a(5664);const f=class o extends M.A{constructor(l,_,m,g,d,x,p,L,v,R,D,C){super(d,T.A.IDLE,C),this.renderEdges_=void 0!==D&&D,this.pixelRatio_=p,this.gutter_=L,this.canvas_=null,this.sourceTileGrid_=_,this.targetTileGrid_=g,this.wrappedTileCoord_=x||d,this.sourceTiles_=[],this.sourcesListenerKeys_=null,this.sourceZ_=0;const O=g.getTileCoordExtent(this.wrappedTileCoord_),i=this.targetTileGrid_.getExtent();let E=this.sourceTileGrid_.getExtent();const X=i?(0,h._N)(O,i):O;if(0===(0,h.UG)(X))return void(this.state=T.A.EMPTY);const K=l.getExtent();K&&(E=E?(0,h._N)(E,K):K);const Y=g.getResolution(this.wrappedTileCoord_[0]),G=(0,n.aY)(l,m,X,Y);if(!isFinite(G)||G<=0)return void(this.state=T.A.EMPTY);if(this.triangulation_=new t.A(l,m,X,E,G*(void 0!==R?R:r.l),Y),0===this.triangulation_.getTriangles().length)return void(this.state=T.A.EMPTY);this.sourceZ_=_.getZForResolution(G);let P=this.triangulation_.calculateSourceExtent();if(E&&(l.canWrapX()?(P[1]=(0,u.qE)(P[1],E[1],E[3]),P[3]=(0,u.qE)(P[3],E[1],E[3])):P=(0,h._N)(P,E)),(0,h.UG)(P)){const B=_.getTileRangeForExtentAndZ(P,this.sourceZ_);for(let F=B.minX;F<=B.maxX;F++)for(let I=B.minY;I<=B.maxY;I++){const w=v(this.sourceZ_,F,I,p);w&&this.sourceTiles_.push(w)}0===this.sourceTiles_.length&&(this.state=T.A.EMPTY)}else this.state=T.A.EMPTY}getImage(){return this.canvas_}reproject_(){const l=[];if(this.sourceTiles_.forEach(_=>{_&&_.getState()==T.A.LOADED&&l.push({extent:this.sourceTileGrid_.getTileCoordExtent(_.tileCoord),image:_.getImage()})}),this.sourceTiles_.length=0,0===l.length)this.state=T.A.ERROR;else{const _=this.wrappedTileCoord_[0],m=this.targetTileGrid_.getTileSize(_),g="number"==typeof m?m:m[0],d="number"==typeof m?m:m[1],x=this.targetTileGrid_.getResolution(_),p=this.sourceTileGrid_.getResolution(this.sourceZ_),L=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=(0,n.XX)(g,d,this.pixelRatio_,p,this.sourceTileGrid_.getExtent(),x,L,this.triangulation_,l,this.gutter_,this.renderEdges_,this.interpolate),this.state=T.A.LOADED}this.changed()}load(){if(this.state==T.A.IDLE){this.state=T.A.LOADING,this.changed();let l=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach(_=>{const m=_.getState();if(m==T.A.IDLE||m==T.A.LOADING){l++;const g=(0,e.KT)(_,A.A.CHANGE,function(d){const x=_.getState();(x==T.A.LOADED||x==T.A.ERROR||x==T.A.EMPTY)&&((0,e.JH)(g),l--,0===l&&(this.unlistenSources_(),this.reproject_()))},this);this.sourcesListenerKeys_.push(g)}}),0===l?setTimeout(this.reproject_.bind(this),0):this.sourceTiles_.forEach(function(_,m,g){_.getState()==T.A.IDLE&&_.load()})}}unlistenSources_(){this.sourcesListenerKeys_.forEach(e.JH),this.sourcesListenerKeys_=null}release(){this.canvas_&&((0,c.Yg)(this.canvas_.getContext("2d")),n.BV.push(this.canvas_),this.canvas_=null),super.release()}}},9056:(y,W,a)=>{a.d(W,{A:()=>u});var r=a(4378),A=a(3036),M=a(8092);const u=class n{constructor(e,c,o,f,s,l){this.sourceProj_=e,this.targetProj_=c;let _={};const m=(0,A.RG)(this.targetProj_,this.sourceProj_);this.transformInv_=function(O){const i=O[0]+"/"+O[1];return _[i]||(_[i]=m(O)),_[i]},this.maxSourceExtent_=f,this.errorThresholdSquared_=s*s,this.triangles_=[],this.wrapsXInSource_=!1,this.canWrapXInSource_=this.sourceProj_.canWrapX()&&!!f&&!!this.sourceProj_.getExtent()&&(0,r.RG)(f)>=(0,r.RG)(this.sourceProj_.getExtent()),this.sourceWorldWidth_=this.sourceProj_.getExtent()?(0,r.RG)(this.sourceProj_.getExtent()):null,this.targetWorldWidth_=this.targetProj_.getExtent()?(0,r.RG)(this.targetProj_.getExtent()):null;const g=(0,r.Py)(o),d=(0,r.WU)(o),x=(0,r.k_)(o),p=(0,r.R)(o),L=this.transformInv_(g),v=this.transformInv_(d),R=this.transformInv_(x),D=this.transformInv_(p),C=10+(l?Math.max(0,Math.ceil(Math.log2((0,r.UG)(o)/(l*l*256*256)))):0);if(this.addQuad_(g,d,x,p,L,v,R,D,C),this.wrapsXInSource_){let O=1/0;this.triangles_.forEach(function(i,E,X){O=Math.min(O,i.source[0][0],i.source[1][0],i.source[2][0])}),this.triangles_.forEach(i=>{if(Math.max(i.source[0][0],i.source[1][0],i.source[2][0])-O>this.sourceWorldWidth_/2){const E=[[i.source[0][0],i.source[0][1]],[i.source[1][0],i.source[1][1]],[i.source[2][0],i.source[2][1]]];E[0][0]-O>this.sourceWorldWidth_/2&&(E[0][0]-=this.sourceWorldWidth_),E[1][0]-O>this.sourceWorldWidth_/2&&(E[1][0]-=this.sourceWorldWidth_),E[2][0]-O>this.sourceWorldWidth_/2&&(E[2][0]-=this.sourceWorldWidth_);const X=Math.min(E[0][0],E[1][0],E[2][0]);Math.max(E[0][0],E[1][0],E[2][0])-X.5&&x<1;let v=!1;if(g>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_){const D=(0,r.Tr)([e,c,o,f]);v=(0,r.RG)(D)/this.targetWorldWidth_>.25||v}!L&&this.sourceProj_.isGlobal()&&x&&(v=x>.25||v)}if(!v&&this.maxSourceExtent_&&isFinite(d[0])&&isFinite(d[1])&&isFinite(d[2])&&isFinite(d[3])&&!(0,r.HY)(d,this.maxSourceExtent_))return;let R=0;if(!(v||isFinite(s[0])&&isFinite(s[1])&&isFinite(l[0])&&isFinite(l[1])&&isFinite(_[0])&&isFinite(_[1])&&isFinite(m[0])&&isFinite(m[1])))if(g>0)v=!0;else if(R=(isFinite(s[0])&&isFinite(s[1])?0:8)+(isFinite(l[0])&&isFinite(l[1])?0:4)+(isFinite(_[0])&&isFinite(_[1])?0:2)+(isFinite(m[0])&&isFinite(m[1])?0:1),1!=R&&2!=R&&4!=R&&8!=R)return;if(g>0){if(!v){const C=this.transformInv_([(e[0]+o[0])/2,(e[1]+o[1])/2]);let O;O=L?((0,M.xP)(s[0],p)+(0,M.xP)(_[0],p))/2-(0,M.xP)(C[0],p):(s[0]+_[0])/2-C[0];const i=(s[1]+_[1])/2-C[1];v=O*O+i*i>this.errorThresholdSquared_}if(v){if(Math.abs(e[0]-o[0])<=Math.abs(e[1]-o[1])){const D=[(c[0]+o[0])/2,(c[1]+o[1])/2],C=this.transformInv_(D),O=[(f[0]+e[0])/2,(f[1]+e[1])/2],i=this.transformInv_(O);this.addQuad_(e,c,D,O,s,l,C,i,g-1),this.addQuad_(O,D,o,f,i,C,_,m,g-1)}else{const D=[(e[0]+c[0])/2,(e[1]+c[1])/2],C=this.transformInv_(D),O=[(o[0]+f[0])/2,(o[1]+f[1])/2],i=this.transformInv_(O);this.addQuad_(e,D,O,f,s,C,i,m,g-1),this.addQuad_(D,c,o,O,C,l,_,i,g-1)}return}}if(L){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}11&R||this.addTriangle_(e,o,f,s,_,m),14&R||this.addTriangle_(e,o,c,s,_,l),R&&(13&R||this.addTriangle_(c,f,e,l,m,s),7&R||this.addTriangle_(c,f,o,l,m,_))}calculateSourceExtent(){const e=(0,r.S5)();return this.triangles_.forEach(function(c,o,f){const s=c.source;(0,r.$C)(e,s[0]),(0,r.$C)(e,s[1]),(0,r.$C)(e,s[2])}),e}getTriangles(){return this.triangles_}}},7326:(y,W,a)=>{a.d(W,{l:()=>r});const r=.5},4680:(y,W,a)=>{a.d(W,{A:()=>M});var r=a(9791);const M=class A{constructor(t){this.highWaterMark=void 0!==t?t:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}canExpireCache(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark}expireCache(t){for(;this.canExpireCache();)this.pop()}clear(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}containsKey(t){return this.entries_.hasOwnProperty(t)}forEach(t){let n=this.oldest_;for(;n;)t(n.value_,n.key_,this),n=n.newer}get(t,n){const u=this.entries_[t];return(0,r.v)(void 0!==u,"Tried to get a value for a key that does not exist in the cache"),u===this.newest_||(u===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(u.newer.older=u.older,u.older.newer=u.newer),u.newer=null,u.older=this.newest_,this.newest_.newer=u,this.newest_=u),u.value_}remove(t){const n=this.entries_[t];return(0,r.v)(void 0!==n,"Tried to get a value for a key that does not exist in the cache"),n===this.newest_?(this.newest_=n.older,this.newest_&&(this.newest_.newer=null)):n===this.oldest_?(this.oldest_=n.newer,this.oldest_&&(this.oldest_.older=null)):(n.newer.older=n.older,n.older.newer=n.newer),delete this.entries_[t],--this.count_,n.value_}getCount(){return this.count_}getKeys(){const t=new Array(this.count_);let u,n=0;for(u=this.newest_;u;u=u.older)t[n++]=u.key_;return t}getValues(){const t=new Array(this.count_);let u,n=0;for(u=this.newest_;u;u=u.older)t[n++]=u.value_;return t}peekLast(){return this.oldest_.value_}peekLastKey(){return this.oldest_.key_}peekFirstKey(){return this.newest_.key_}peek(t){return this.entries_[t]?.value_}pop(){const t=this.oldest_;return delete this.entries_[t.key_],t.newer&&(t.newer.older=null),this.oldest_=t.newer,this.oldest_||(this.newest_=null),--this.count_,t.value_}replace(t,n){this.get(t),this.entries_[t].value_=n}set(t,n){(0,r.v)(!(t in this.entries_),"Tried to set a value for a key that is used already");const u={key_:t,newer:null,older:this.newest_,value_:n};this.newest_?this.newest_.newer=u:this.oldest_=u,this.newest_=u,this.entries_[t]=u,++this.count_}setSize(t){this.highWaterMark=t}}},7709:(y,W,a)=>{function r(h,e,c,o){return void 0!==o?(o[0]=h,o[1]=e,o[2]=c,o):[h,e,c]}function A(h,e,c){return h+"/"+e+"/"+c}function M(h){return A(h[0],h[1],h[2])}function t(h){return h.split("/").map(Number)}function n(h){return(h[1]<c||c>e.getMaxZoom())return!1;const s=e.getFullTileRange(c);return!s||s.containsXY(o,f)}a.d(W,{K:()=>t,N:()=>r,N5:()=>u,dp:()=>A,i7:()=>M,tW:()=>n})}}]); \ No newline at end of file diff --git a/web/956.0b61c76986faf675.js b/web/956.0b61c76986faf675.js new file mode 100644 index 0000000000000000000000000000000000000000..687f3dba82d37fe212fc448dcaa9bc86f23bb9ac --- /dev/null +++ b/web/956.0b61c76986faf675.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[956],{2194:(De,oe,h)=>{h.d(oe,{x:()=>C});var d=h(4438),$=h(2168),v=h(6979),Z=h(4506);let Q=(()=>{class j{transform(n,E){let A={series:String(n.id)};return E?.name&&(A={...A,cohortName:E.name}),A}static{this.\u0275fac=function(E){return new(E||j)}}static{this.\u0275pipe=d.EJ8({name:"SlideDescriptorToViewerUrlParamsPipe",type:j,pure:!0})}}return j})(),B=(()=>{class j{transform(n,E){let A=n?.slideName??"";return E?.caseId&&(A=A.replace(E.caseId+"-","")),A}static{this.\u0275fac=function(E){return new(E||j)}}static{this.\u0275pipe=d.EJ8({name:"QuickViewSlideDescriptorNamePipe",type:j,pure:!0})}}return j})();var M=h(177),J=h(9213),pe=h(8834),ae=h(4572),y=h(8141),O=h(7955),_=h(9423),q=h(6372);const I=["quickviewImageDialogTemplate"];function D(j,g){if(1&j){const n=d.RV6();d.j41(0,"ol-tile-viewer",7),d.bIt("olMapLoaded",function(A){d.eBV(n);const T=d.XpG();return d.Njj(T.olMapLoadedHandler(A))}),d.k0s()}if(2&j){const n=d.XpG();d.Y8G("slideDescriptor",n.slideDescriptor)("slideInfo",n.slideInfo)("isThumbnail",!0)}}function X(j,g){if(1&j&&(d.j41(0,"div",8),d.EFF(1),d.nI1(2,"QuickViewSlideDescriptorNamePipe"),d.k0s()),2&j){const n=d.XpG();d.R7$(),d.SpI(" ",d.i5U(2,1,n.slideInfo,n.selectedExtraMetaData)," ")}}function ne(j,g){if(1&j){const n=d.RV6();d.j41(0,"button",9),d.bIt("click",function(A){d.eBV(n);const T=d.XpG();return T.openQuickviewImage(T.slideDescriptor),d.Njj(A.stopPropagation())}),d.j41(1,"mat-icon"),d.EFF(2,"preview"),d.k0s()()}}function xe(j,g){if(1&j){const n=d.RV6();d.j41(0,"button",10),d.bIt("click",function(A){return d.eBV(n),d.XpG().openSlideData(),d.Njj(A.stopPropagation())}),d.j41(1,"mat-icon"),d.EFF(2,"account_tree"),d.k0s()()}}function me(j,g){if(1&j&&d.nrm(0,"ol-tile-viewer",15),2&j){const n=d.XpG().$implicit;d.Y8G("slideInfo",n.slideInfo)("slideDescriptor",n.slideDescriptor)}}function ge(j,g){if(1&j&&(d.j41(0,"div",11)(1,"button",12)(2,"mat-icon"),d.EFF(3,"close"),d.k0s()(),d.j41(4,"button",13),d.nI1(5,"SlideDescriptorToViewerUrlParamsPipe"),d.j41(6,"mat-icon"),d.EFF(7,"open_in_full"),d.k0s()(),d.DNE(8,me,1,2,"ol-tile-viewer",14),d.k0s()),2&j){const n=g.$implicit;d.R7$(4),d.Y8G("queryParams",d.bMT(5,2,n.slideDescriptor)),d.R7$(4),d.Y8G("ngIf",n.slideDescriptor.id&&n.slideInfo)}}let C=(()=>{class j{constructor(n,E,A,T,he){this.slideApiService=n,this.dialogService=E,this.imageViewerPageStore=A,this.router=T,this.cdRef=he,this.enableExpandedView=!0,this.showSlideData=!1,this.olMapLoaded=new d.bkB,this.isLoaded=!1,this.selectedExtraMetaData=void 0}ngOnInit(){this.setupMetadata(),this.slideApiService.getSlideInfo(this.slideDescriptor.id).subscribe(n=>{n&&(this.slideInfo=n,this.cdRef.detectChanges())})}setupMetadata(){(0,ae.z)([this.imageViewerPageStore.selectedSplitViewSlideDescriptor$,this.imageViewerPageStore.slideMetaDataBySlideDescriptorId$]).pipe((0,y.M)(([n,E])=>{!n||!E||(this.selectedExtraMetaData=E.get(n.id))})).subscribe()}openQuickviewImage(n){n&&this.dialogService.openComponentDialog(this.quickviewImageDialogTemplate,{autoFocus:!1,disableClose:!1,data:{slideDescriptor:n,slideInfo:this.slideInfo}}).afterClosed().subscribe(()=>{})}openSlideData(){this.dialogService.openComponentDialog(v.r,{autoFocus:!1,disableClose:!1}).afterClosed().subscribe(()=>{})}olMapLoadedHandler(n){this.isLoaded=!0,this.cdRef.detectChanges(),this.olMapLoaded.emit(n)}goToViewer(n,E){const A=[...this.imageViewerPageStore.splitViewSlideDescriptors$.value];let T=(new Q).transform(n,E);const he=this.imageViewerPageStore.selectedSplitViewSlideDescriptor$.value,Te=this.router.url.startsWith("/viewer");if(Te&&he){const _e=this.imageViewerPageStore.multiViewScreenSelectedIndex$.value;if(-1!==_e){A.splice(_e,1,n);const ke=this.router.parseUrl(this.router.url).queryParams;delete ke.r,delete ke.x,delete ke.y,delete ke.z,T={...ke,series:A.map(Pe=>String(Pe?.id??" ")).join(",").replaceAll(" ","")}}}this.router.navigate(["/viewer"],{queryParams:T,replaceUrl:Te&&!!he})}static{this.\u0275fac=function(E){return new(E||j)(d.rXU(O.T),d.rXU(_.o),d.rXU(q.y),d.rXU($.Ix),d.rXU(d.gRc))}}static{this.\u0275cmp=d.VBU({type:j,selectors:[["image-viewer-quick-view"]],viewQuery:function(E,A){if(1&E&&d.GBs(I,7),2&E){let T;d.mGM(T=d.lsd())&&(A.quickviewImageDialogTemplate=T.first)}},inputs:{slideDescriptor:"slideDescriptor",enableExpandedView:"enableExpandedView",showSlideData:"showSlideData",cohortInfo:"cohortInfo"},outputs:{olMapLoaded:"olMapLoaded"},decls:8,vars:4,consts:[["quickviewImageDialogTemplate",""],[1,"image-viewer-quick-view"],[1,"ol-viewer-quick-view",3,"click"],[3,"slideDescriptor","slideInfo","isThumbnail","olMapLoaded",4,"ngIf"],["class","slide-name",4,"ngIf"],["mat-icon-button","","aria-label","Quickview image","class","quickview-button","matTooltip","Expand Image",3,"click",4,"ngIf"],["mat-icon-button","","aria-label","Slide data","class","slide-data-button","matTooltip","Open slide data",3,"click",4,"ngIf"],[3,"olMapLoaded","slideDescriptor","slideInfo","isThumbnail"],[1,"slide-name"],["mat-icon-button","","aria-label","Quickview image","matTooltip","Expand Image",1,"quickview-button",3,"click"],["mat-icon-button","","aria-label","Slide data","matTooltip","Open slide data",1,"slide-data-button",3,"click"],["mat-dialog-content","",1,"quickview-dialog-content"],["mat-icon-button","","matTooltip","Close","mat-dialog-close","","cdkFocusInitial","","aria-label","Close quickview",1,"quickview-dialog-close-button"],["routerLink","/viewer","mat-dialog-close","","mat-icon-button","","aria-label","Open full image","matTooltip","Expand",1,"quickview-dialog-open-full-image-button",3,"queryParams"],["class","quickview-dialog-viewer",3,"slideInfo","slideDescriptor",4,"ngIf"],[1,"quickview-dialog-viewer",3,"slideInfo","slideDescriptor"]],template:function(E,A){if(1&E){const T=d.RV6();d.j41(0,"div",1)(1,"div",2),d.bIt("click",function(){return d.eBV(T),d.Njj(A.goToViewer(A.slideDescriptor,A.cohortInfo))}),d.DNE(2,D,1,3,"ol-tile-viewer",3),d.k0s(),d.DNE(3,X,3,4,"div",4)(4,ne,3,0,"button",5)(5,xe,3,0,"button",6),d.k0s(),d.DNE(6,ge,9,4,"ng-template",null,0,d.C5r)}2&E&&(d.R7$(2),d.Y8G("ngIf",A.slideDescriptor&&A.slideInfo),d.R7$(),d.Y8G("ngIf",null==A.slideInfo?null:A.slideInfo.slideName),d.R7$(),d.Y8G("ngIf",A.isLoaded&&A.enableExpandedView),d.R7$(),d.Y8G("ngIf",A.showSlideData))},dependencies:[Z.Bh,J.m_,J.An,Q,B,$.iI,$.Wk,M.MD,M.bT,pe.Hl,pe.iY],styles:[".image-viewer-quick-view[_ngcontent-%COMP%]{cursor:pointer;position:relative;height:inherit;height:100%;width:100%;overflow:hidden;display:grid;grid-template-rows:1fr min-content}.image-viewer-quick-view[_ngcontent-%COMP%] .ol-viewer-quick-view[_ngcontent-%COMP%]{height:100%;overflow:hidden}.image-viewer-quick-view[_ngcontent-%COMP%] .slide-name[_ngcontent-%COMP%]{padding:.4em .5em .1em;background:#d3e3fd;font-weight:700;font-size:1em;color:#5f6368;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}.quickview-checkbox[_ngcontent-%COMP%]{top:.5em;left:.2em;position:absolute;z-index:2}.quickview-dialog-content[_ngcontent-%COMP%] .quickview-dialog-viewer[_ngcontent-%COMP%]{position:relative}.selected-quickview-checkbox[_ngcontent-%COMP%]{border:1px solid blue}.quickview-button[_ngcontent-%COMP%]{top:.5em;position:absolute;right:.2em}.quickview-button[_ngcontent-%COMP%]:hover{transform:scale(1.2)}.slide-data-button[_ngcontent-%COMP%]{bottom:1em;position:absolute;right:.2em}.slide-data-button[_ngcontent-%COMP%]:hover{transform:scale(1.2)}.quickview-dialog-content[_ngcontent-%COMP%]{height:60vh;position:relative;overflow:hidden;width:70vw}.quickview-dialog-close-button[_ngcontent-%COMP%]{position:absolute;right:.2em;top:.2em;z-index:2}.quickview-dialog-open-full-image-button[_ngcontent-%COMP%]{bottom:.2em;position:absolute;right:.2em;z-index:2}"]})}}return j})()},6979:(De,oe,h)=>{h.d(oe,{r:()=>jt});var d=h(177),$=h(1626),v=h(9417),Z=h(8834),Q=h(2408),B=h(9213),M=h(9631),J=h(2798),pe=h(2771),ae=h(8810),y=h(6648),O=h(7468),_=h(7673),q=h(6977),I=h(3294),D=h(1594),X=h(9437),ne=h(8141),xe=h(1397),me=h(6173),ge=h(6354),Ie=h(6594),C=h(5717),j=h(3738),g=h(6211),n=h(4438),E=h(7955),A=h(2168),T=h(5351);const he=["callTable"],Te=w=>({"even-row-style":w});function _e(w,W){if(1&w){const f=n.RV6();n.j41(0,"button",6),n.bIt("click",function(){n.eBV(f);const P=n.XpG();return n.Njj(P.dialogRef.close())}),n.j41(1,"mat-icon"),n.EFF(2,"close"),n.k0s()()}}function ke(w,W){if(1&w&&(n.j41(0,"tr")(1,"td"),n.EFF(2),n.k0s(),n.j41(3,"td"),n.EFF(4),n.k0s(),n.j41(5,"td"),n.EFF(6),n.k0s(),n.j41(7,"td"),n.EFF(8),n.k0s()()),2&w){const f=W.$implicit;n.R7$(2),n.JRh(f.type),n.R7$(2),n.JRh(f.width),n.R7$(2),n.JRh(f.height),n.R7$(2),n.JRh(f.instanceUid)}}function Pe(w,W){if(1&w&&(n.j41(0,"table")(1,"thead")(2,"tr")(3,"td"),n.EFF(4,"Type"),n.k0s(),n.j41(5,"td"),n.EFF(6,"width"),n.k0s(),n.j41(7,"td"),n.EFF(8,"height"),n.k0s(),n.j41(9,"td"),n.EFF(10,"UID"),n.k0s()()(),n.j41(11,"tbody"),n.DNE(12,ke,9,4,"tr",11),n.k0s()()),2&w){const f=n.XpG(3);n.R7$(12),n.Y8G("ngForOf",f.slideInfo.associatedImages)}}function ct(w,W){1&w&&(n.j41(0,"div"),n.EFF(1," No associate images found. "),n.k0s())}function dt(w,W){if(1&w&&(n.j41(0,"div",9)(1,"h3"),n.EFF(2,"Associated Images"),n.k0s(),n.DNE(3,Pe,13,1,"table",10)(4,ct,2,0,"div",10),n.k0s()),2&w){const f=n.XpG(2);n.R7$(3),n.Y8G("ngIf",f.slideInfo.associatedImages.length>0),n.R7$(),n.Y8G("ngIf",!f.slideInfo.associatedImages.length)}}function it(w,W){if(1&w&&(n.j41(0,"span",16),n.EFF(1),n.nI1(2,"number"),n.k0s()),2&w){const f=n.XpG().$implicit;n.AVh("strike-through",void 0!==f.downSampleMultiplier),n.R7$(),n.SpI(" ",n.i5U(2,3,f.storedBytes/1048576,"1.0-0"),"")}}function Ne(w,W){if(1&w&&(n.j41(0,"span"),n.EFF(1),n.nI1(2,"number"),n.k0s()),2&w){const f=n.XpG().$implicit;n.R7$(),n.JRh(n.i5U(2,1,1e3*f.pixelWidth,"1.0-2"))}}function ce(w,W){if(1&w&&(n.j41(0,"span"),n.EFF(1),n.nI1(2,"number"),n.k0s()),2&w){const f=n.XpG().$implicit;n.R7$(),n.JRh(n.i5U(2,1,1e3*f.pixelHeight,"1.0-2"))}}function $e(w,W){if(1&w&&(n.j41(0,"span"),n.EFF(1),n.k0s()),2&w){const f=W.$implicit;n.R7$(),n.JRh(f.frames)}}function St(w,W){if(1&w&&(n.j41(0,"span"),n.EFF(1),n.k0s()),2&w){const f=W.$implicit;n.R7$(),n.JRh(f.offset)}}function Qe(w,W){if(1&w&&(n.j41(0,"span"),n.EFF(1),n.k0s()),2&w){const f=W.$implicit;n.R7$(),n.JRh(f.instanceUid)}}function Ot(w,W){if(1&w&&(n.j41(0,"tr",14)(1,"td"),n.EFF(2),n.nI1(3,"percent"),n.k0s(),n.j41(4,"td"),n.EFF(5),n.k0s(),n.j41(6,"td"),n.EFF(7),n.k0s(),n.j41(8,"td"),n.DNE(9,it,3,6,"span",15),n.k0s(),n.j41(10,"td"),n.EFF(11),n.k0s(),n.j41(12,"td"),n.EFF(13),n.k0s(),n.j41(14,"td"),n.DNE(15,Ne,3,4,"span",10),n.k0s(),n.j41(16,"td"),n.DNE(17,ce,3,4,"span",10),n.k0s(),n.j41(18,"td"),n.EFF(19),n.k0s(),n.j41(20,"td"),n.DNE(21,$e,2,1,"span",11),n.k0s(),n.j41(22,"td"),n.DNE(23,St,2,1,"span",11),n.k0s(),n.j41(24,"td"),n.DNE(25,Qe,2,1,"span",11),n.k0s()()),2&w){const f=W.$implicit,k=W.index,P=n.XpG(3);n.Y8G("ngClass",n.eq3(16,Te,k%2==0)),n.R7$(2),n.JRh(n.i5U(3,13,f.zoom,"1.0-0")),n.R7$(3),n.SpI("",!f.pixelWidth||P.pixelSpacingToMagnification(1e6*f.pixelWidth),"X"),n.R7$(2),n.JRh(void 0===f.downSampleMultiplier),n.R7$(2),n.Y8G("ngIf",f.storedBytes),n.R7$(2),n.JRh(f.width),n.R7$(2),n.JRh(f.height),n.R7$(2),n.Y8G("ngIf",f.pixelWidth),n.R7$(2),n.Y8G("ngIf",f.pixelHeight),n.R7$(2),n.JRh(f.tileSize),n.R7$(2),n.Y8G("ngForOf",f.properties),n.R7$(2),n.Y8G("ngForOf",f.properties),n.R7$(2),n.Y8G("ngForOf",f.properties)}}function Ft(w,W){if(1&w&&(n.j41(0,"div",9)(1,"h3"),n.EFF(2,"Zoom Levels"),n.k0s(),n.j41(3,"div",12)(4,"table")(5,"thead")(6,"tr")(7,"td"),n.EFF(8,"Zoom"),n.k0s(),n.j41(9,"td"),n.EFF(10,"Magnification"),n.k0s(),n.j41(11,"td"),n.EFF(12,"Real"),n.k0s(),n.j41(13,"td"),n.EFF(14,"Storage [MB]"),n.k0s(),n.j41(15,"td"),n.EFF(16,"Width"),n.k0s(),n.j41(17,"td"),n.EFF(18,"Height"),n.k0s(),n.j41(19,"td"),n.EFF(20,"Pixel width [\xb5m]"),n.k0s(),n.j41(21,"td"),n.EFF(22,"Pixel height [\xb5m]"),n.k0s(),n.j41(23,"td"),n.EFF(24,"Tile size"),n.k0s(),n.j41(25,"td"),n.EFF(26,"Frames"),n.k0s(),n.j41(27,"td"),n.EFF(28,"Offset"),n.k0s(),n.j41(29,"td"),n.EFF(30,"UID"),n.k0s()()(),n.j41(31,"tbody"),n.DNE(32,Ot,26,18,"tr",13),n.k0s()()()()),2&w){const f=n.XpG(2);n.R7$(32),n.Y8G("ngForOf",f.slideInfo.levelMap)}}function Je(w,W){if(1&w&&(n.j41(0,"div",7)(1,"span")(2,"b"),n.EFF(3,"Slide name:"),n.k0s(),n.EFF(4),n.k0s(),n.j41(5,"span")(6,"b"),n.EFF(7,"Series URL:"),n.k0s(),n.EFF(8),n.k0s(),n.j41(9,"span")(10,"b"),n.EFF(11,"Channel count:"),n.k0s(),n.EFF(12),n.k0s(),n.j41(13,"span")(14,"b"),n.EFF(15,"Flat image:"),n.k0s(),n.EFF(16),n.k0s(),n.DNE(17,dt,5,2,"div",8)(18,Ft,33,1,"div",8),n.k0s()),2&w){const f=n.XpG();n.R7$(4),n.SpI(" ",f.slideInfo.slideName,""),n.R7$(4),n.SpI(" ",f.urlSeriesUid,""),n.R7$(4),n.SpI(" ",f.slideInfo.channelCount,""),n.R7$(4),n.SpI(" ",f.slideInfo.isFlatImage,""),n.R7$(),n.Y8G("ngIf",f.slideInfo.associatedImages),n.R7$(),n.Y8G("ngIf",f.slideInfo.levelMap)}}function Me(w,W){1&w&&(n.j41(0,"div"),n.EFF(1," Benchmark running..."),n.k0s())}function te(w,W){if(1&w&&(n.j41(0,"div")(1,"div"),n.EFF(2,"Average latency per tile: "),n.j41(3,"span",27),n.EFF(4),n.nI1(5,"number"),n.k0s()(),n.j41(6,"div"),n.EFF(7,"Benchmark real time: "),n.j41(8,"span",27),n.EFF(9),n.nI1(10,"number"),n.k0s()(),n.j41(11,"div"),n.EFF(12,"Calls made: "),n.j41(13,"span",27),n.EFF(14),n.k0s()()()),2&w){const f=n.XpG(3);n.R7$(4),n.SpI("",n.i5U(5,3,f.benchmark.latency,"1.0-0")," ms"),n.R7$(5),n.SpI("",n.i5U(10,6,f.benchmark.realTime,"1.0-0")," ms"),n.R7$(5),n.JRh(f.benchmark.callComplete)}}function nt(w,W){if(1&w&&(n.j41(0,"div",28),n.EFF(1),n.k0s()),2&w){const f=n.XpG(3);n.R7$(),n.SpI(" ERROR: ",f.errorMsg," ")}}function Dt(w,W){if(1&w&&(n.j41(0,"div",25),n.nrm(1,"hr"),n.DNE(2,Me,2,0,"div",10)(3,te,15,9,"div",10)(4,nt,2,1,"div",26),n.k0s()),2&w){const f=n.XpG(2);n.R7$(2),n.Y8G("ngIf",f.benchmarkRunning),n.R7$(),n.Y8G("ngIf",f.benchmark.latency),n.R7$(),n.Y8G("ngIf",f.errorMsg)}}function kt(w,W){if(1&w){const f=n.RV6();n.j41(0,"div",17)(1,"h2"),n.EFF(2," Tile Latency Benchmark "),n.k0s(),n.j41(3,"div",18)(4,"button",19),n.bIt("click",function(){n.eBV(f);const P=n.XpG();return n.Njj(P.benchmark.icc=!P.benchmark.icc)}),n.j41(5,"mat-icon"),n.EFF(6),n.k0s(),n.EFF(7," Dicom proxy ICC color correction "),n.k0s(),n.j41(8,"button",19),n.bIt("click",function(){n.eBV(f);const P=n.XpG();return n.Njj(P.benchmark.disableCache=!P.benchmark.disableCache)}),n.j41(9,"mat-icon"),n.EFF(10),n.k0s(),n.EFF(11," Dicom proxy disable caching "),n.k0s(),n.j41(12,"button",19),n.bIt("click",function(){n.eBV(f);const P=n.XpG();return n.Njj(P.benchmark.realLayersOnly=!P.benchmark.realLayersOnly)}),n.j41(13,"mat-icon"),n.EFF(14),n.k0s(),n.EFF(15," Dicom proxy real layers only (no server scaled layers) "),n.k0s(),n.j41(16,"div"),n.EFF(17,"Number of tiles to load in base layer (if available): "),n.j41(18,"input",20),n.mxI("ngModelChange",function(P){n.eBV(f);const F=n.XpG();return n.DH7(F.benchmark.numTilesToLoadBaseLayer,P)||(F.benchmark.numTilesToLoadBaseLayer=P),n.Njj(P)}),n.k0s(),n.EFF(19),n.k0s(),n.j41(20,"div"),n.EFF(21,"Number of continous frame batch per stride: "),n.j41(22,"input",21),n.mxI("ngModelChange",function(P){n.eBV(f);const F=n.XpG();return n.DH7(F.benchmark.numFramesPerStride,P)||(F.benchmark.numFramesPerStride=P),n.Njj(P)}),n.k0s(),n.EFF(23),n.k0s(),n.j41(24,"div"),n.EFF(25,"Number of tiles requests per call: "),n.j41(26,"input",21),n.mxI("ngModelChange",function(P){n.eBV(f);const F=n.XpG();return n.DH7(F.benchmark.numTilesPerCall,P)||(F.benchmark.numTilesPerCall=P),n.Njj(P)}),n.k0s(),n.EFF(27),n.k0s(),n.j41(28,"div"),n.EFF(29,"Concurrency: "),n.j41(30,"input",22),n.mxI("ngModelChange",function(P){n.eBV(f);const F=n.XpG();return n.DH7(F.benchmark.concurency,P)||(F.benchmark.concurency=P),n.Njj(P)}),n.k0s(),n.EFF(31),n.k0s()(),n.j41(32,"button",23),n.bIt("click",function(){n.eBV(f);const P=n.XpG();return n.Njj(P.start())}),n.EFF(33," Start Benchmark "),n.k0s(),n.DNE(34,Dt,5,3,"div",24),n.k0s()}if(2&w){const f=n.XpG();n.R7$(4),n.Y8G("disabled",f.benchmarkRunning),n.R7$(2),n.SpI(" ",f.benchmark.icc?"check_box":"check_box_outline_blank"," "),n.R7$(2),n.Y8G("disabled",f.benchmarkRunning),n.R7$(2),n.SpI(" ",f.benchmark.disableCache?"check_box":"check_box_outline_blank"," "),n.R7$(2),n.Y8G("disabled",f.benchmarkRunning),n.R7$(2),n.SpI(" ",f.benchmark.realLayersOnly?"check_box":"check_box_outline_blank"," "),n.R7$(4),n.R50("ngModel",f.benchmark.numTilesToLoadBaseLayer),n.Y8G("disabled",f.benchmarkRunning),n.R7$(),n.JRh(f.benchmark.numTilesToLoadBaseLayer),n.R7$(3),n.R50("ngModel",f.benchmark.numFramesPerStride),n.Y8G("disabled",f.benchmarkRunning),n.R7$(),n.JRh(f.benchmark.numFramesPerStride),n.R7$(3),n.R50("ngModel",f.benchmark.numTilesPerCall),n.Y8G("disabled",f.benchmarkRunning),n.R7$(),n.JRh(f.benchmark.numTilesPerCall),n.R7$(3),n.R50("ngModel",f.benchmark.concurency),n.Y8G("disabled",f.benchmarkRunning),n.R7$(),n.JRh(f.benchmark.concurency),n.R7$(),n.Y8G("disabled",f.benchmarkRunning),n.R7$(2),n.Y8G("ngIf",f.benchmark.latency||f.benchmarkRunning||f.errorMsg)}}const Nt=C.xI[C.hs.IMAGE];let jt=(()=>{class w{constructor(f,k,P,F,ue,Ce,Ve){this.elRef=f,this.dicomwebService=k,this.slideApiService=P,this.ref=F,this.route=ue,this.router=Ce,this.dialogRef=Ve,this.urlSeriesUid="",this.seriesUids=[],this.errorMsg="",this.benchmark={icc:!0,disableCache:!1,realLayersOnly:!1,callComplete:0,tilesComplete:0,numTilesToLoadBaseLayer:16,numFramesPerStride:5,numTilesPerCall:1,concurency:5,latency:0,realTime:0,first10TilesTime:0},this.benchmarkRunning=!1,this.enableDevOptions=!1,this.cleanDicomwebRegex=new RegExp(".*dicomWeb/"),this.destroyed$=new pe.m(1),this.enableDevOptions=!this.dialogRef}ngOnInit(){this.route.queryParams.pipe((0,q.Q)(this.destroyed$),(0,I.F)()).subscribe(f=>{const k=f.series;k&&(this.urlSeriesUid=k,this.load())})}ngOnDestroy(){this.destroyed$.next(!0),this.destroyed$.complete()}updateUrl(){this.router.navigate(["."],{relativeTo:this.route,queryParams:{series:this.urlSeriesUid},queryParamsHandling:"merge"})}onSeriesUidChanged(){this.slideInfo=void 0,this.updateUrl()}drawCallTable(f){const k=this.callTable.nativeElement;for(;k.firstChild;)k.removeChild(k.firstChild);for(const[P,F]of f.entries()){const ue=document.createElement("th");ue.appendChild(document.createTextNode(P.toString()));const Ce=k.insertRow();Ce.appendChild(ue);for(const Ve of F){const qe=document.createElement("div");qe.appendChild(document.createTextNode(Ve.frame.toString())),qe.id=P.toString()+"_"+Ve.frame.toString(),Ce.insertCell().appendChild(qe)}}}drawCallTileId(f,k){const P=document.getElementById(f);if(P){switch(k){case"called":P.classList.add("called");break;case"complete":P.classList.add("complete")}this.elRef.nativeElement.scrollTo(0,this.elRef.nativeElement.scrollHeight)}}load(){this.benchmarkRunning=!1,this.errorMsg="",this.slideInfo=void 0;try{this.slideApiService.getSlideInfo(this.urlSeriesUid).pipe((0,D.$)(),(0,X.W)(f=>(0,ae.$)(f)),(0,ne.M)(f=>{this.slideInfo=f})).subscribe({error:f=>{this.errorHandle(f)}})}catch(f){return void this.errorHandle(f)}}start(){if(void 0===this.slideInfo||!this.slideInfo.levelMap)return void(this.errorMsg="Missing slide level map");this.benchmarkRunning=!0,this.benchmark.callComplete=0,this.benchmark.tilesComplete=0,this.errorMsg="",this.ref.markForCheck(),this.benchmark.latency=0;const f=[];let k=0;for(const F of this.slideInfo.levelMap){const ue=F.properties[0];if(this.benchmark.realLayersOnly&&F.downSampleMultiplier)continue;const Ce=Math.ceil(ue.frames/Math.pow(F.downSampleMultiplier??1,2)),Ve=Math.min(Math.ceil(this.benchmark.numTilesToLoadBaseLayer/Math.pow(2,k)),Ce),qe=Math.floor(Ce/this.benchmark.numFramesPerStride/Ve);f[k]=[];let st=0;for(let ht=0;ht(0,y.H)(F).pipe((0,me.S)(this.benchmark.numTilesPerCall))),(0,xe.Z)(F=>{for(const ue of F)this.drawCallTileId(ue.uid,"called");return(0,O.p)({startTime:(0,_.of)(performance.now()),bytes:this.dicomwebService.getEncodedImageTiles(this.urlSeriesUid,F[0].instanceUid,F.map(ue=>ue.frame+1),Nt,F[0].downsample,this.benchmark.icc?j.PQ.SRGB:j.PQ.NONE,this.benchmark.disableCache),tileUids:(0,_.of)(F.map(ue=>ue.uid))})},this.benchmark.concurency),(0,ge.T)(F=>({tileUids:F.tileUids,latency:performance.now()-F.startTime})),(0,ne.M)(F=>{++this.benchmark.callComplete,this.benchmark.tilesComplete+=F.tileUids.length,0===this.benchmark.first10TilesTime&&this.benchmark.tilesComplete>=10&&(this.benchmark.first10TilesTime=performance.now()-P);for(const ue of F.tileUids)this.drawCallTileId(ue,"complete")}),(0,ge.T)(F=>F.latency),(0,Ie.$)()).subscribe(F=>{this.benchmark.realTime=performance.now()-P,this.benchmarkRunning=!1,this.benchmark.latency=F.reduce((ue,Ce)=>ue+Ce)/this.benchmark.tilesComplete},F=>{this.errorHandle(F)})}errorHandle(f){this.errorMsg="string"==typeof f?f:f instanceof Error||f instanceof $.yz?f.message+"\n"+JSON.stringify(f):"failed",this.benchmarkRunning=!1}pixelSpacingToMagnification(f){return(0,g.CB)(f/1e6)}static{this.\u0275fac=function(k){return new(k||w)(n.rXU(n.aKT),n.rXU(j.w),n.rXU(E.T),n.rXU(n.gRc),n.rXU(A.nX),n.rXU(A.Ix),n.rXU(T.CP,8))}}static{this.\u0275cmp=n.VBU({type:w,selectors:[["inspect-page"]],viewQuery:function(k,P){if(1&k&&n.GBs(he,7),2&k){let F;n.mGM(F=n.lsd())&&(P.callTable=F.first)}},decls:8,vars:3,consts:[["callTable",""],[1,"container"],["mat-icon-button","","cdkFocusInitial","","aria-label","Close slide data","class","dialog-close-button",3,"click",4,"ngIf"],["class","slide-detail-section",4,"ngIf"],["class","latency-benchmark-section",4,"ngIf"],[1,"call-table"],["mat-icon-button","","cdkFocusInitial","","aria-label","Close slide data",1,"dialog-close-button",3,"click"],[1,"slide-detail-section"],["class","flexColumn pad",4,"ngIf"],[1,"flexColumn","pad"],[4,"ngIf"],[4,"ngFor","ngForOf"],[1,"zoom-level-section-data"],[3,"ngClass",4,"ngFor","ngForOf"],[3,"ngClass"],["class","level-storage",3,"strike-through",4,"ngIf"],[1,"level-storage"],[1,"latency-benchmark-section"],[1,"latency-options"],["mat-stroked-button","","color","primary",1,"select-all",3,"click","disabled"],["type","range","min","1",3,"ngModelChange","ngModel","disabled"],["type","range","min","1","max","20",3,"ngModelChange","ngModel","disabled"],["type","range","min","1","max","200",3,"ngModelChange","ngModel","disabled"],["mat-flat-button","","color","primary",3,"click","disabled"],["class","latency-results",4,"ngIf"],[1,"latency-results"],["class","error",4,"ngIf"],[1,"benchmark-result"],[1,"error"]],template:function(k,P){1&k&&(n.j41(0,"div",1),n.DNE(1,_e,3,0,"button",2),n.j41(2,"h1"),n.EFF(3," Slide Data "),n.k0s(),n.DNE(4,Je,19,6,"div",3)(5,kt,35,20,"div",4),n.nrm(6,"table",5,0),n.k0s()),2&k&&(n.R7$(),n.Y8G("ngIf",P.dialogRef),n.R7$(3),n.Y8G("ngIf",P.slideInfo),n.R7$(),n.Y8G("ngIf",P.urlSeriesUid&&void 0!==P.slideInfo))},dependencies:[d.MD,d.YU,d.Sq,d.bT,d.QX,d.m1,Q.RG,M.fS,v.YN,v.me,v.MR,v.BC,v.vS,B.m_,B.An,J.Ve,Z.Hl,Z.$z,Z.iY],styles:["[_nghost-%COMP%]{height:100%;display:block;overflow-y:scroll}.pad[_ngcontent-%COMP%]{padding:8px}.container[_ngcontent-%COMP%]{padding:1em;position:relative}.textInput[_ngcontent-%COMP%]{width:100%}.error[_ngcontent-%COMP%]{color:red}.flexColumn[_ngcontent-%COMP%]{display:flex;flex-direction:column}td[_ngcontent-%COMP%], th[_ngcontent-%COMP%]{padding:1px 10px}thead[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{font-weight:700}.zoom-level-section-data[_ngcontent-%COMP%]{display:grid;overflow:scroll} .call-table{table-layout:fixed} .call-table div{width:25px;height:18px;line-height:19px;overflow:hidden;text-align:center;font-size:10px;background-color:#add8e6} .call-table .called{background-color:#ff0} .call-table .complete{background-color:#90ee90}.series-info[_ngcontent-%COMP%]{display:grid}.latency-options[_ngcontent-%COMP%]{display:grid;grid-row-gap:1em}.latency-options[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:max-content}.latency-benchmark-section[_ngcontent-%COMP%]{display:grid;gap:.5em}.latency-benchmark-section[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:max-content}.latency-benchmark-section[_ngcontent-%COMP%] .latency-results[_ngcontent-%COMP%]{font-size:1.2em}.latency-benchmark-section[_ngcontent-%COMP%] .benchmark-result[_ngcontent-%COMP%]{font-weight:700}.series-option[_ngcontent-%COMP%]{word-break:break-all}.dialog-close-button[_ngcontent-%COMP%]{position:absolute;right:.3em;top:.5em;z-index:2}.slide-detail-section[_ngcontent-%COMP%]{display:grid;overflow:auto;padding:0}.strike-through[_ngcontent-%COMP%]{text-decoration:line-through}.even-row-style[_ngcontent-%COMP%]{background:#d3d3d3}.level-storage[_ngcontent-%COMP%]{font-weight:700;font-size:1.2em}"]})}}return w})()},4506:(De,oe,h)=>{h.d(oe,{Gl:()=>Mi,oG:()=>Pi,Bh:()=>Ps});var d=h(467),$=h(177),v=h(4438),Z=h(6601),Q=h(4037),B=h(4786),M=h(6832),J=h(2512),pe=h(1208),ae=h(6401),y=h(8618),O=h(9984),_=h(4378),q=h(7048),I=h(6523),D=h(1504);function ne(l,e){q.ue.expire()}const xe=class X extends pe.A{constructor(e){super(),this.map_=e}dispatchRenderEvent(e,t){(0,y.b0)()}calculateMatrices2D(e){const t=e.viewState,i=e.coordinateToPixelTransform,s=e.pixelToCoordinateTransform;(0,O.Zz)(i,e.size[0]/2,e.size[1]/2,1/t.resolution,-1/t.resolution,-t.rotation,-t.center[0],-t.center[1]),(0,O.T9)(s,i)}forEachFeatureAtCoordinate(e,t,i,s,r,o,a,c){let u;const m=t.viewState;function p(L,H,z,de){return r.call(o,H,L?z:null,de)}const x=m.projection,b=(0,D.Li)(e.slice(),x),R=[[0,0]];if(x.canWrapX()&&s){const L=x.getExtent(),H=(0,_.RG)(L);R.push([-H,0],[H,0])}const N=t.layerStatesArray,V=N.length,G=[],S=[];for(let L=0;L=0;--H){const z=N[H],de=z.layer;if(de.hasRenderer()&&(0,I.l)(z,m)&&a.call(c,de)){const ye=de.getRenderer(),U=de.getSource();if(ye&&U){const le=U.getWrapX()?b:e,be=p.bind(null,z.managed);S[0]=le[0]+R[L][0],S[1]=le[1]+R[L][1],u=ye.forEachFeatureAtCoordinate(S,t,i,be,G)}if(u)return u}}if(0===G.length)return;const K=1/G.length;return G.forEach((L,H)=>L.distanceSq+=H*K),G.sort((L,H)=>L.distanceSq-H.distanceSq),G.some(L=>u=L.callback(L.feature,L.layer,L.geometry)),u}hasFeatureAtCoordinate(e,t,i,s,r,o){return void 0!==this.forEachFeatureAtCoordinate(e,t,i,s,ae.rT,this,r,o)}getMap(){return this.map_}renderFrame(e){(0,y.b0)()}scheduleExpireIconCache(e){q.ue.canExpireCache()&&e.postRenderFunctions.push(ne)}};var me=h(6953),ge=h(8133),Ie=h(8933),C=h(215),j=h(8045),g=h(7443),n=h(5664);const A=class E extends xe{constructor(e){super(e),this.fontChangeListenerKey_=(0,g.KT)(j.yY,me.A.PROPERTYCHANGE,e.redrawText.bind(e)),this.element_=document.createElement("div");const t=this.element_.style;t.position="absolute",t.width="100%",t.height="100%",t.zIndex="0",this.element_.className=C.XI+" ol-layers";const i=e.getViewport();i.insertBefore(this.element_,i.firstChild||null),this.children_=[],this.renderedVisible_=!0}dispatchRenderEvent(e,t){const i=this.getMap();if(i.hasListener(e)){const s=new ge.A(e,void 0,t);i.dispatchEvent(s)}}disposeInternal(){(0,g.JH)(this.fontChangeListenerKey_),this.element_.parentNode.removeChild(this.element_),super.disposeInternal()}renderFrame(e){if(!e)return void(this.renderedVisible_&&(this.element_.style.display="none",this.renderedVisible_=!1));this.calculateMatrices2D(e),this.dispatchRenderEvent(Ie.A.PRECOMPOSE,e);const t=e.layerStatesArray.sort(function(a,c){return a.zIndex-c.zIndex});t.some(a=>a.layer instanceof J.A&&a.layer.getDeclutter())&&(e.declutter={});const s=e.viewState;this.children_.length=0;const r=[];let o=null;for(let a=0,c=t.length;a=0;--i){const s=t[i],r=s.layer;r.getDeclutter()&&r.renderDeclutter(e,s)}t.forEach(i=>i.layer.renderDeferred(e))}};var T=h(8864),he=h(8945),Te=h(4888),_e=h(9791),ke=h(973);class Pe extends Te.Ay{constructor(e,t){super(e),this.layer=t}}class dt extends he.A{constructor(e){e=e||{};const t=Object.assign({},e);delete t.layers;let i=e.layers;super(t),this.layersListenerKeys_=[],this.listenerKeys_={},this.addChangeListener("layers",this.handleLayersChanged_),i?Array.isArray(i)?i=new B.A(i.slice(),{unique:!0}):(0,_e.v)("function"==typeof i.getArray,"Expected `layers` to be an array or a `Collection`"):i=new B.A(void 0,{unique:!0}),this.setLayers(i)}handleLayerChange_(){this.changed()}handleLayersChanged_(){this.layersListenerKeys_.forEach(g.JH),this.layersListenerKeys_.length=0;const e=this.getLayers();this.layersListenerKeys_.push((0,g.KT)(e,M.A.ADD,this.handleLayersAdd_,this),(0,g.KT)(e,M.A.REMOVE,this.handleLayersRemove_,this));for(const i in this.listenerKeys_)this.listenerKeys_[i].forEach(g.JH);(0,ke.I)(this.listenerKeys_);const t=e.getArray();for(let i=0,s=t.length;i{this.clickTimeoutId_=void 0;const i=new Ne.A(ce.A.SINGLECLICK,this.map_,e);this.dispatchEvent(i)},250)}updateActivePointers_(e){const t=e,i=t.pointerId;if(t.type==ce.A.POINTERUP||t.type==ce.A.POINTERCANCEL){delete this.trackedTouches_[i];for(const s in this.trackedTouches_)if(this.trackedTouches_[s].target!==t.target){delete this.trackedTouches_[s];break}}else(t.type==ce.A.POINTERDOWN||t.type==ce.A.POINTERMOVE)&&(this.trackedTouches_[i]=t);this.activePointers_=Object.values(this.trackedTouches_)}handlePointerUp_(e){this.updateActivePointers_(e);const t=new Ne.A(ce.A.POINTERUP,this.map_,e,void 0,void 0,this.activePointers_);this.dispatchEvent(t),this.emulateClicks_&&!t.defaultPrevented&&!this.dragging_&&this.isMouseActionButton_(e)&&this.emulateClick_(this.down_),0===this.activePointers_.length&&(this.dragListenerKeys_.forEach(g.JH),this.dragListenerKeys_.length=0,this.dragging_=!1,this.down_=null)}isMouseActionButton_(e){return 0===e.button}handlePointerDown_(e){this.emulateClicks_=0===this.activePointers_.length,this.updateActivePointers_(e);const t=new Ne.A(ce.A.POINTERDOWN,this.map_,e,void 0,void 0,this.activePointers_);if(this.dispatchEvent(t),this.down_=new PointerEvent(e.type,e),Object.defineProperty(this.down_,"target",{writable:!1,value:e.target}),0===this.dragListenerKeys_.length){const i=this.map_.getOwnerDocument();this.dragListenerKeys_.push((0,g.KT)(i,ce.A.POINTERMOVE,this.handlePointerMove_,this),(0,g.KT)(i,ce.A.POINTERUP,this.handlePointerUp_,this),(0,g.KT)(this.element_,ce.A.POINTERCANCEL,this.handlePointerUp_,this)),this.element_.getRootNode&&this.element_.getRootNode()!==i&&this.dragListenerKeys_.push((0,g.KT)(this.element_.getRootNode(),ce.A.POINTERUP,this.handlePointerUp_,this))}}handlePointerMove_(e){if(this.isMoving_(e)){this.updateActivePointers_(e),this.dragging_=!0;const t=new Ne.A(ce.A.POINTERDRAG,this.map_,e,this.dragging_,void 0,this.activePointers_);this.dispatchEvent(t)}}relayMoveEvent_(e){this.originalPointerMoveEvent_=e;const t=!(!this.down_||!this.isMoving_(e));this.dispatchEvent(new Ne.A(ce.A.POINTERMOVE,this.map_,e,t))}handleTouchMove_(e){const t=this.originalPointerMoveEvent_;(!t||t.defaultPrevented)&&("boolean"!=typeof e.cancelable||!0===e.cancelable)&&e.preventDefault()}isMoving_(e){return this.dragging_||Math.abs(e.clientX-this.down_.clientX)>this.moveTolerance_||Math.abs(e.clientY-this.down_.clientY)>this.moveTolerance_}disposeInternal(){this.relayedListenerKey_&&((0,g.JH)(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(T.A.TOUCHMOVE,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&((0,g.JH)(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(g.JH),this.dragListenerKeys_.length=0,this.element_=null,super.disposeInternal()}};var Je=h(9136),Me=h(3035);const nt=1/0,kt=class Dt{constructor(e,t){this.priorityFunction_=e,this.keyFunction_=t,this.elements_=[],this.priorities_=[],this.queuedElements_={}}clear(){this.elements_.length=0,this.priorities_.length=0,(0,ke.I)(this.queuedElements_)}dequeue(){const e=this.elements_,t=this.priorities_,i=e[0];1==e.length?(e.length=0,t.length=0):(e[0]=e.pop(),t[0]=t.pop(),this.siftUp_(0));const s=this.keyFunction_(i);return delete this.queuedElements_[s],i}enqueue(e){(0,_e.v)(!(this.keyFunction_(e)in this.queuedElements_),"Tried to enqueue an `element` that was already added to the queue");const t=this.priorityFunction_(e);return t!=nt&&(this.elements_.push(e),this.priorities_.push(t),this.queuedElements_[this.keyFunction_(e)]=!0,this.siftDown_(0,this.elements_.length-1),!0)}getCount(){return this.elements_.length}getLeftChildIndex_(e){return 2*e+1}getRightChildIndex_(e){return 2*e+2}getParentIndex_(e){return e-1>>1}heapify_(){let e;for(e=(this.elements_.length>>1)-1;e>=0;e--)this.siftUp_(e)}isEmpty(){return 0===this.elements_.length}isKeyQueued(e){return e in this.queuedElements_}isQueued(e){return this.isKeyQueued(this.keyFunction_(e))}siftUp_(e){const t=this.elements_,i=this.priorities_,s=t.length,r=t[e],o=i[e],a=e;for(;e>1;){const c=this.getLeftChildIndex_(e),u=this.getRightChildIndex_(e),m=ue;){const a=this.getParentIndex_(t);if(!(s[a]>o))break;i[t]=i[a],s[t]=s[a],t=a}i[t]=r,s[t]=o}reprioritize(){const e=this.priorityFunction_,t=this.elements_,i=this.priorities_;let s=0;const r=t.length;let o,a,c;for(a=0;a0;)r=this.dequeue()[0],o=r.getKey(),s=r.getState(),s===ee.A.IDLE&&!(o in this.tilesLoadingKeys_)&&(this.tilesLoadingKeys_[o]=!0,++this.tilesLoading_,++i,r.load())}};var W=h(8130);const k=class f extends Q.A{constructor(e){super();const t=e.element;t&&!e.target&&!t.style.pointerEvents&&(t.style.pointerEvents="auto"),this.element=t||null,this.target_=null,this.map_=null,this.listenerKeys=[],e.render&&(this.render=e.render),e.target&&this.setTarget(e.target)}disposeInternal(){(0,n.bf)(this.element),super.disposeInternal()}getMap(){return this.map_}setMap(e){this.map_&&(0,n.bf)(this.element);for(let t=0,i=this.listenerKeys.length;ts.getAttributions(e)))),i=!this.getMap().getAllLayers().some(s=>s.getSource()&&!1===s.getSource().getAttributionsCollapsible());return this.overrideCollapsible_||this.setCollapsible(i),t}updateElement_(e){if(!e)return void(this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1));const t=this.collectSourceAttributions_(e),i=t.length>0;if(this.renderedVisible_!=i&&(this.element.style.display=i?"":"none",this.renderedVisible_=i),!(0,P.aI)(t,this.renderedAttributions_)){(0,n.gS)(this.ulElement_);for(let s=0,r=t.length;s0&&i%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.duration_,easing:Ce.vT}):t.setRotation(0))}render(e){const t=e.frameState;if(!t)return;const i=t.viewState.rotation;if(i!=this.rotation_){const s="rotate("+i+"rad)";if(this.autoHide_){const r=this.element.classList.contains(C.Si);r||0!==i?r&&0!==i&&this.element.classList.remove(C.Si):this.element.classList.add(C.Si)}this.label_.style.transform=s}this.rotation_=i}},ht=class st extends k{constructor(e){e=e||{},super({element:document.createElement("div"),target:e.target});const t=void 0!==e.className?e.className:"ol-zoom",i=void 0!==e.delta?e.delta:1,s=void 0!==e.zoomInClassName?e.zoomInClassName:t+"-in",r=void 0!==e.zoomOutClassName?e.zoomOutClassName:t+"-out",o=void 0!==e.zoomInLabel?e.zoomInLabel:"+",a=void 0!==e.zoomOutLabel?e.zoomOutLabel:"\u2013",c=void 0!==e.zoomInTipLabel?e.zoomInTipLabel:"Zoom in",u=void 0!==e.zoomOutTipLabel?e.zoomOutTipLabel:"Zoom out",m=document.createElement("button");m.className=s,m.setAttribute("type","button"),m.title=c,m.appendChild("string"==typeof o?document.createTextNode(o):o),m.addEventListener(T.A.CLICK,this.handleClick_.bind(this,i),!1);const p=document.createElement("button");p.className=r,p.setAttribute("type","button"),p.title=u,p.appendChild("string"==typeof a?document.createTextNode(a):a),p.addEventListener(T.A.CLICK,this.handleClick_.bind(this,-i),!1);const b=this.element;b.className=t+" "+C.XI+" "+C.$N,b.appendChild(m),b.appendChild(p),this.duration_=void 0!==e.duration?e.duration:250}handleClick_(e,t){t.preventDefault(),this.zoomByDelta_(e)}zoomByDelta_(e){const i=this.getMap().getView();if(!i)return;const s=i.getZoom();if(void 0!==s){const r=i.getConstrainedZoom(s+e);this.duration_>0?(i.getAnimating()&&i.cancelAnimations(),i.animate({zoom:r,duration:this.duration_,easing:Ce.vT})):i.setZoom(r)}}};function ii(l){l=l||{};const e=new B.A;return(void 0===l.zoom||l.zoom)&&e.push(new ht(l.zoomOptions)),(void 0===l.rotate||l.rotate)&&e.push(new qe(l.rotateOptions)),(void 0===l.attribution||l.attribution)&&e.push(new ue(l.attributionOptions)),e}var ze=h(9539);const Vi=class ji extends ze.Ay{constructor(e){super(),this.delta_=(e=e||{}).delta?e.delta:1,this.duration_=void 0!==e.duration?e.duration:250}handleEvent(e){let t=!1;if(e.type==ce.A.DBLCLICK){const i=e.originalEvent,r=e.coordinate,o=i.shiftKey?-this.delta_:this.delta_,a=e.map.getView();(0,ze.D2)(a,o,r,this.duration_),i.preventDefault(),t=!0}return!t}};var Ge=h(3382),ie=h(3301);const Gi=class zi extends Ge.A{constructor(e){super({stopDown:ae.W8}),this.kinetic_=(e=e||{}).kinetic,this.lastCentroid=null,this.panning_=!1;const t=e.condition?e.condition:(0,ie.Q7)(ie.TS,ie.fs);this.condition_=e.onFocusOnly?(0,ie.Q7)(ie.eL,t):t,this.noKinetic_=!1}handleDragEvent(e){const t=e.map;this.panning_||(this.panning_=!0,t.getView().beginInteraction());const i=this.targetPointers,s=t.getEventPixel((0,Ge.v)(i));if(i.length==this.lastPointersCount_){if(this.kinetic_&&this.kinetic_.update(s[0],s[1]),this.lastCentroid){const r=[this.lastCentroid[0]-s[0],s[1]-this.lastCentroid[1]],a=e.map.getView();(0,D.hs)(r,a.getResolution()),(0,D.e$)(r,a.getRotation()),a.adjustCenterInternal(r)}}else this.kinetic_&&this.kinetic_.begin();this.lastCentroid=s,this.lastPointersCount_=i.length,e.originalEvent.preventDefault()}handleUpEvent(e){const t=e.map,i=t.getView();if(0===this.targetPointers.length){if(!this.noKinetic_&&this.kinetic_&&this.kinetic_.end()){const s=this.kinetic_.getDistance(),r=this.kinetic_.getAngle(),o=i.getCenterInternal(),a=t.getPixelFromCoordinateInternal(o),c=t.getCoordinateFromPixelInternal([a[0]-s*Math.cos(r),a[1]-s*Math.sin(r)]);i.animateInternal({center:i.getConstrainedCenter(c),duration:500,easing:Ce.vT})}return this.panning_&&(this.panning_=!1,i.endInteraction()),!1}return this.kinetic_&&this.kinetic_.begin(),this.lastCentroid=null,!0}handleDownEvent(e){if(this.targetPointers.length>0&&this.condition_(e)){const i=e.map.getView();return this.lastCentroid=null,i.getAnimating()&&i.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1}};var ni=h(1947);const Ui=class Ki extends Ge.A{constructor(e){e=e||{},super({stopDown:ae.W8}),this.condition_=e.condition?e.condition:ie.IO,this.lastAngle_=void 0,this.duration_=void 0!==e.duration?e.duration:250}handleDragEvent(e){if(!(0,ie.A4)(e))return;const t=e.map,i=t.getView();if(i.getConstraints().rotation===ni.b8)return;const s=t.getSize(),r=e.pixel,o=Math.atan2(s[1]/2-r[1],r[0]-s[0]/2);void 0!==this.lastAngle_&&i.adjustRotationInternal(-(o-this.lastAngle_)),this.lastAngle_=o}handleUpEvent(e){return!(0,ie.A4)(e)||(e.map.getView().endInteraction(this.duration_),!1)}handleDownEvent(e){return!!((0,ie.A4)(e)&&(0,ie.at)(e)&&this.condition_(e))&&(e.map.getView().beginInteraction(),this.lastAngle_=void 0,!0)}};var si=h(3213);const Wi=class Bi extends pe.A{constructor(e){super(),this.geometry_=null,this.element_=document.createElement("div"),this.element_.style.position="absolute",this.element_.style.pointerEvents="auto",this.element_.className="ol-box "+e,this.map_=null,this.startPixel_=null,this.endPixel_=null}disposeInternal(){this.setMap(null)}render_(){const e=this.startPixel_,t=this.endPixel_,i="px",s=this.element_.style;s.left=Math.min(e[0],t[0])+i,s.top=Math.min(e[1],t[1])+i,s.width=Math.abs(t[0]-e[0])+i,s.height=Math.abs(t[1]-e[1])+i}setMap(e){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);const t=this.element_.style;t.left="inherit",t.top="inherit",t.width="inherit",t.height="inherit"}this.map_=e,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)}setPixels(e,t){this.startPixel_=e,this.endPixel_=t,this.createOrUpdateGeometry(),this.render_()}createOrUpdateGeometry(){const e=this.startPixel_,t=this.endPixel_,s=[e,[e[0],t[1]],t,[t[0],e[1]]].map(this.map_.getCoordinateFromPixelInternal,this.map_);s[4]=s[0].slice(),this.geometry_?this.geometry_.setCoordinates([s]):this.geometry_=new si.Ay([s])}getGeometry(){return this.geometry_}};class Vt extends Te.Ay{constructor(e,t,i){super(e),this.coordinate=t,this.mapBrowserEvent=i}}const Xi=class Hi extends Ge.A{constructor(e){super(),this.box_=new Wi((e=e||{}).className||"ol-dragbox"),this.minArea_=void 0!==e.minArea?e.minArea:64,e.onBoxEnd&&(this.onBoxEnd=e.onBoxEnd),this.startPixel_=null,this.condition_=e.condition?e.condition:ie.at,this.boxEndCondition_=e.boxEndCondition?e.boxEndCondition:this.defaultBoxEndCondition}defaultBoxEndCondition(e,t,i){const s=i[0]-t[0],r=i[1]-t[1];return s*s+r*r>=this.minArea_}getGeometry(){return this.box_.getGeometry()}handleDragEvent(e){this.box_.setPixels(this.startPixel_,e.pixel),this.dispatchEvent(new Vt("boxdrag",e.coordinate,e))}handleUpEvent(e){this.box_.setMap(null);const t=this.boxEndCondition_(e,this.startPixel_,e.pixel);return t&&this.onBoxEnd(e),this.dispatchEvent(new Vt(t?"boxend":"boxcancel",e.coordinate,e)),!1}handleDownEvent(e){return!!this.condition_(e)&&(this.startPixel_=e.pixel,this.box_.setMap(e.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new Vt("boxstart",e.coordinate,e)),!0)}onBoxEnd(e){}},Yi=class Zi extends Xi{constructor(e){super({condition:(e=e||{}).condition?e.condition:ie.Kg,className:e.className||"ol-dragzoom",minArea:e.minArea}),this.duration_=void 0!==e.duration?e.duration:200,this.out_=void 0!==e.out&&e.out}onBoxEnd(e){const i=this.getMap().getView();let s=this.getGeometry();if(this.out_){const r=i.rotatedExtentForGeometry(s),o=i.getResolutionForExtentInternal(r),a=i.getResolution()/o;s=s.clone(),s.scale(a*a)}i.fitInternal(s,{duration:this.duration_,easing:Ce.vT})}},Qi=class $i extends ze.Ay{constructor(e){super(),e=e||{},this.defaultCondition_=function(t){return(0,ie.TS)(t)&&(0,ie.tE)(t)},this.condition_=void 0!==e.condition?e.condition:this.defaultCondition_,this.duration_=void 0!==e.duration?e.duration:100,this.pixelDelta_=void 0!==e.pixelDelta?e.pixelDelta:128}handleEvent(e){let t=!1;if(e.type==T.A.KEYDOWN){const i=e.originalEvent,s=i.key;if(this.condition_(e)&&("ArrowDown"==s||"ArrowLeft"==s||"ArrowRight"==s||"ArrowUp"==s)){const o=e.map.getView(),a=o.getResolution()*this.pixelDelta_;let c=0,u=0;"ArrowDown"==s?u=-a:"ArrowLeft"==s?c=-a:"ArrowRight"==s?c=a:u=a;const m=[c,u];(0,D.e$)(m,o.getRotation()),(0,ze.e4)(o,m,this.duration_),i.preventDefault(),t=!0}}return!t}},qi=class Ji extends ze.Ay{constructor(e){super(),this.condition_=(e=e||{}).condition?e.condition:function(t){return!(0,ie.GB)(t)&&(0,ie.tE)(t)},this.delta_=e.delta?e.delta:1,this.duration_=void 0!==e.duration?e.duration:100}handleEvent(e){let t=!1;if(e.type==T.A.KEYDOWN||e.type==T.A.KEYPRESS){const i=e.originalEvent,s=i.key;if(this.condition_(e)&&("+"===s||"-"===s)){const o="+"===s?this.delta_:-this.delta_,a=e.map.getView();(0,ze.D2)(a,o,void 0,this.duration_),i.preventDefault(),t=!0}}return!t}},tn=class en{constructor(e,t,i){this.decay_=e,this.minVelocity_=t,this.delay_=i,this.points_=[],this.angle_=0,this.initialVelocity_=0}begin(){this.points_.length=0,this.angle_=0,this.initialVelocity_=0}update(e,t){this.points_.push(e,t,Date.now())}end(){if(this.points_.length<6)return!1;const e=Date.now()-this.delay_,t=this.points_.length-3;if(this.points_[t+2]0&&this.points_[i+2]>e;)i-=3;const s=this.points_[t+2]-this.points_[i+2];if(s<1e3/60)return!1;const r=this.points_[t]-this.points_[i],o=this.points_[t+1]-this.points_[i+1];return this.angle_=Math.atan2(o,r),this.initialVelocity_=Math.sqrt(r*r+o*o)/s,this.initialVelocity_>this.minVelocity_}getDistance(){return(this.minVelocity_-this.initialVelocity_)/this.decay_}getAngle(){return this.angle_}};var ve=h(8092);const sn=class nn extends ze.Ay{constructor(e){super(e=e||{}),this.totalDelta_=0,this.lastDelta_=0,this.maxDelta_=void 0!==e.maxDelta?e.maxDelta:1,this.duration_=void 0!==e.duration?e.duration:250,this.timeout_=void 0!==e.timeout?e.timeout:80,this.useAnchor_=void 0===e.useAnchor||e.useAnchor,this.constrainResolution_=void 0!==e.constrainResolution&&e.constrainResolution;const t=e.condition?e.condition:ie.Gk;this.condition_=e.onFocusOnly?(0,ie.Q7)(ie.eL,t):t,this.lastAnchor_=null,this.startTime_=void 0,this.mode_=void 0,this.trackpadEventGap_=400,this.deltaPerZoom_=300}endInteraction_(){this.trackpadTimeoutId_=void 0;const e=this.getMap();e&&e.getView().endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_)}handleEvent(e){if(!this.condition_(e)||e.type!==T.A.WHEEL)return!0;const i=e.map,s=e.originalEvent;let r;if(s.preventDefault(),this.useAnchor_&&(this.lastAnchor_=e.coordinate),e.type==T.A.WHEEL&&(r=s.deltaY,Qe._p&&s.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(r/=Qe.cr),s.deltaMode===WheelEvent.DOM_DELTA_LINE&&(r*=40)),0===r)return!1;this.lastDelta_=r;const o=Date.now();void 0===this.startTime_&&(this.startTime_=o),(!this.mode_||o-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(r)<4?"trackpad":"wheel");const a=i.getView();if("trackpad"===this.mode_&&!a.getConstrainResolution()&&!this.constrainResolution_)return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(a.getAnimating()&&a.cancelAnimations(),a.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),a.adjustZoom(-r/this.deltaPerZoom_,this.lastAnchor_),this.startTime_=o,!1;this.totalDelta_+=r;const c=Math.max(this.timeout_-(o-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,i),c),!1}handleWheelZoom_(e){const t=e.getView();t.getAnimating()&&t.cancelAnimations();let i=-(0,ve.qE)(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;(t.getConstrainResolution()||this.constrainResolution_)&&(i=i?i>0?1:-1:0),(0,ze.D2)(t,i,this.lastAnchor_,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0}setMouseAnchor(e){this.useAnchor_=e,e||(this.lastAnchor_=null)}},on=class rn extends Ge.A{constructor(e){const t=e=e||{};t.stopDown||(t.stopDown=ae.W8),super(t),this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.threshold_=void 0!==e.threshold?e.threshold:.3,this.duration_=void 0!==e.duration?e.duration:250}handleDragEvent(e){let t=0;const i=this.targetPointers[0],s=this.targetPointers[1],r=Math.atan2(s.clientY-i.clientY,s.clientX-i.clientX);if(void 0!==this.lastAngle_){const c=r-this.lastAngle_;this.rotationDelta_+=c,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),t=c}this.lastAngle_=r;const o=e.map,a=o.getView();a.getConstraints().rotation!==ni.b8&&(this.anchor_=o.getCoordinateFromPixelInternal(o.getEventPixel((0,Ge.v)(this.targetPointers))),this.rotating_&&(o.render(),a.adjustRotationInternal(t,this.anchor_)))}handleUpEvent(e){return!(this.targetPointers.length<2&&(e.map.getView().endInteraction(this.duration_),1))}handleDownEvent(e){if(this.targetPointers.length>=2){const t=e.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||t.getView().beginInteraction(),!0}return!1}},ln=class an extends Ge.A{constructor(e){const t=e=e||{};t.stopDown||(t.stopDown=ae.W8),super(t),this.anchor_=null,this.duration_=void 0!==e.duration?e.duration:400,this.lastDistance_=void 0,this.lastScaleDelta_=1}handleDragEvent(e){let t=1;const i=this.targetPointers[0],s=this.targetPointers[1],r=i.clientX-s.clientX,o=i.clientY-s.clientY,a=Math.sqrt(r*r+o*o);void 0!==this.lastDistance_&&(t=this.lastDistance_/a),this.lastDistance_=a;const c=e.map,u=c.getView();1!=t&&(this.lastScaleDelta_=t),this.anchor_=c.getCoordinateFromPixelInternal(c.getEventPixel((0,Ge.v)(this.targetPointers))),c.render(),u.adjustResolutionInternal(t,this.anchor_)}handleUpEvent(e){return!(this.targetPointers.length<2)||(e.map.getView().endInteraction(this.duration_,this.lastScaleDelta_>1?1:-1),!1)}handleDownEvent(e){if(this.targetPointers.length>=2){const t=e.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||t.getView().beginInteraction(),!0}return!1}};var Y=h(3036),Le=h(8443),dn=h(4205);function ri(l){l instanceof I.A?l.setMapInternal(null):l instanceof it&&l.getLayers().forEach(ri)}function oi(l,e){if(l instanceof I.A)l.setMapInternal(e);else if(l instanceof it){const t=l.getLayers().getArray();for(let i=0,s=t.length;ithis.updateSize()),this.controls=t.controls||ii(),this.interactions=t.interactions||function cn(l){l=l||{};const e=new B.A,t=new tn(-.005,.05,100);return(void 0===l.altShiftDragRotate||l.altShiftDragRotate)&&e.push(new Ui),(void 0===l.doubleClickZoom||l.doubleClickZoom)&&e.push(new Vi({delta:l.zoomDelta,duration:l.zoomDuration})),(void 0===l.dragPan||l.dragPan)&&e.push(new Gi({onFocusOnly:l.onFocusOnly,kinetic:t})),(void 0===l.pinchRotate||l.pinchRotate)&&e.push(new on),(void 0===l.pinchZoom||l.pinchZoom)&&e.push(new ln({duration:l.zoomDuration})),(void 0===l.keyboard||l.keyboard)&&(e.push(new Qi),e.push(new qi({delta:l.zoomDelta,duration:l.zoomDuration}))),(void 0===l.mouseWheelZoom||l.mouseWheelZoom)&&e.push(new sn({onFocusOnly:l.onFocusOnly,duration:l.zoomDuration})),(void 0===l.shiftDragZoom||l.shiftDragZoom)&&e.push(new Yi({duration:l.zoomDuration})),e}({onFocusOnly:!0}),this.overlays_=t.overlays,this.overlayIdIndex_={},this.renderer_=null,this.postRenderFunctions_=[],this.tileQueue_=new jt(this.getTilePriority.bind(this),this.handleTileChange_.bind(this)),this.addChangeListener("layergroup",this.handleLayerGroupChanged_),this.addChangeListener("view",this.handleViewChanged_),this.addChangeListener("size",this.handleSizeChanged_),this.addChangeListener("target",this.handleTargetChanged_),this.setProperties(t.values);const i=this;e.view&&!(e.view instanceof Z.Ay)&&e.view.then(function(s){i.setView(new Z.Ay(s))}),this.controls.addEventListener(M.A.ADD,s=>{s.element.setMap(this)}),this.controls.addEventListener(M.A.REMOVE,s=>{s.element.setMap(null)}),this.interactions.addEventListener(M.A.ADD,s=>{s.element.setMap(this)}),this.interactions.addEventListener(M.A.REMOVE,s=>{s.element.setMap(null)}),this.overlays_.addEventListener(M.A.ADD,s=>{this.addOverlayInternal_(s.element)}),this.overlays_.addEventListener(M.A.REMOVE,s=>{const r=s.element.getId();void 0!==r&&delete this.overlayIdIndex_[r.toString()],s.element.setMap(null)}),this.controls.forEach(s=>{s.setMap(this)}),this.interactions.forEach(s=>{s.setMap(this)}),this.overlays_.forEach(this.addOverlayInternal_.bind(this))}addControl(e){this.getControls().push(e)}addInteraction(e){this.getInteractions().push(e)}addLayer(e){this.getLayerGroup().getLayers().push(e)}handleLayerAdd_(e){oi(e.layer,this)}addOverlay(e){this.getOverlays().push(e)}addOverlayInternal_(e){const t=e.getId();void 0!==t&&(this.overlayIdIndex_[t.toString()]=e),e.setMap(this)}disposeInternal(){this.controls.clear(),this.interactions.clear(),this.overlays_.clear(),this.resizeObserver_.disconnect(),this.setTarget(null),super.disposeInternal()}forEachFeatureAtPixel(e,t,i){if(!this.frameState_||!this.renderer_)return;const s=this.getCoordinateFromPixelInternal(e);return this.renderer_.forEachFeatureAtCoordinate(s,this.frameState_,void 0!==(i=void 0!==i?i:{}).hitTolerance?i.hitTolerance:0,!1!==i.checkWrapped,t,null,void 0!==i.layerFilter?i.layerFilter:ae.rT,null)}getFeaturesAtPixel(e,t){const i=[];return this.forEachFeatureAtPixel(e,function(s){i.push(s)},t),i}getAllLayers(){const e=[];return function t(i){i.forEach(function(s){s instanceof it?t(s.getLayers()):e.push(s)})}(this.getLayers()),e}hasFeatureAtPixel(e,t){if(!this.frameState_||!this.renderer_)return!1;const i=this.getCoordinateFromPixelInternal(e);return this.renderer_.hasFeatureAtCoordinate(i,this.frameState_,void 0!==(t=void 0!==t?t:{}).hitTolerance?t.hitTolerance:0,!1!==t.checkWrapped,void 0!==t.layerFilter?t.layerFilter:ae.rT,null)}getEventCoordinate(e){return this.getCoordinateFromPixel(this.getEventPixel(e))}getEventCoordinateInternal(e){return this.getCoordinateFromPixelInternal(this.getEventPixel(e))}getEventPixel(e){const i=this.viewport_.getBoundingClientRect(),s=this.getSize(),a="changedTouches"in e?e.changedTouches[0]:e;return[(a.clientX-i.left)/(i.width/s[0]),(a.clientY-i.top)/(i.height/s[1])]}getTarget(){return this.get("target")}getTargetElement(){return this.targetElement_}getCoordinateFromPixel(e){return(0,Y.te)(this.getCoordinateFromPixelInternal(e),this.getView().getProjection())}getCoordinateFromPixelInternal(e){const t=this.frameState_;return t?(0,O.Bb)(t.pixelToCoordinateTransform,e.slice()):null}getControls(){return this.controls}getOverlays(){return this.overlays_}getOverlayById(e){const t=this.overlayIdIndex_[e.toString()];return void 0!==t?t:null}getInteractions(){return this.interactions}getLayerGroup(){return this.get("layergroup")}setLayers(e){const t=this.getLayerGroup();if(e instanceof B.A)return void t.setLayers(e);const i=t.getLayers();i.clear(),i.extend(e)}getLayers(){return this.getLayerGroup().getLayers()}getLoadingOrNotReady(){const e=this.getLayerGroup().getLayerStatesArray();for(let t=0,i=e.length;t=0;r--){const o=s[r];if(o.getMap()===this&&o.getActive()&&this.getTargetElement()&&(!o.handleEvent(e)||e.propagationStopped))break}}}handlePostRender(){const e=this.frameState_,t=this.tileQueue_;if(!t.isEmpty()){let s=this.maxTilesLoading_,r=s;if(e){const o=e.viewHints;if(o[W.A.ANIMATING]||o[W.A.INTERACTING]){const a=Date.now()-e.time>8;s=a?0:8,r=a?0:2}}t.getTilesLoading(){this.postRenderTimeoutHandle_=void 0,this.handlePostRender()},0))}setLayerGroup(e){const t=this.getLayerGroup();t&&this.handleLayerRemove_(new Pe("removelayer",t)),this.set("layergroup",e)}setSize(e){this.set("size",e)}setTarget(e){this.set("target",e)}setView(e){if(!e||e instanceof Z.Ay)return void this.set("view",e);this.set("view",new Z.Ay);const t=this;e.then(function(i){t.setView(new Z.Ay(i))})}updateSize(){const e=this.getTargetElement();let t;if(e){const s=getComputedStyle(e),r=e.offsetWidth-parseFloat(s.borderLeftWidth)-parseFloat(s.paddingLeft)-parseFloat(s.paddingRight)-parseFloat(s.borderRightWidth),o=e.offsetHeight-parseFloat(s.borderTopWidth)-parseFloat(s.paddingTop)-parseFloat(s.paddingBottom)-parseFloat(s.borderBottomWidth);!isNaN(r)&&!isNaN(o)&&(t=[r,o],!(0,Le.Ie)(t)&&(e.offsetWidth||e.offsetHeight||e.getClientRects().length)&&(0,dn.R8)("No map visible because the map container's width or height are 0."))}const i=this.getSize();t&&(!i||!(0,P.aI)(t,i))&&(this.setSize(t),this.updateViewportSize_(t))}updateViewportSize_(e){const t=this.getView();t&&t.setViewportSize(e)}};var zt=h(6705),mn=h(9200),ai=h(2698);const li=class gn extends k{constructor(e){e=e||{},super({element:document.createElement("div"),render:e.render,target:e.target}),this.boundHandleRotationChanged_=this.handleRotationChanged_.bind(this),this.collapsed_=void 0===e.collapsed||e.collapsed,this.collapsible_=void 0===e.collapsible||e.collapsible,this.collapsible_||(this.collapsed_=!1),this.rotateWithView_=void 0!==e.rotateWithView&&e.rotateWithView,this.viewExtent_=void 0;const t=void 0!==e.className?e.className:"ol-overviewmap",i=void 0!==e.tipLabel?e.tipLabel:"Overview map",s=void 0!==e.collapseLabel?e.collapseLabel:"\u2039";"string"==typeof s?(this.collapseLabel_=document.createElement("span"),this.collapseLabel_.textContent=s):this.collapseLabel_=s;const r=void 0!==e.label?e.label:"\u203a";"string"==typeof r?(this.label_=document.createElement("span"),this.label_.textContent=r):this.label_=r;const o=this.collapsible_&&!this.collapsed_?this.collapseLabel_:this.label_,a=document.createElement("button");a.setAttribute("type","button"),a.title=i,a.appendChild(o),a.addEventListener(T.A.CLICK,this.handleClick_.bind(this),!1),this.ovmapDiv_=document.createElement("div"),this.ovmapDiv_.className="ol-overviewmap-map",this.view_=e.view;const c=new ut({view:e.view,controls:new B.A,interactions:new B.A});this.ovmap_=c,e.layers&&e.layers.forEach(function(S){c.addLayer(S)});const u=document.createElement("div");u.className="ol-overviewmap-box",u.style.boxSizing="border-box",this.boxOverlay_=new mn.A({position:[0,0],positioning:"center-center",element:u}),this.ovmap_.addOverlay(this.boxOverlay_);const p=this.element;p.className=t+" "+C.XI+" "+C.$N+(this.collapsed_&&this.collapsible_?" "+C.nT:"")+(this.collapsible_?"":" ol-uncollapsible"),p.appendChild(this.ovmapDiv_),p.appendChild(a);const x=this,b=this.boxOverlay_,R=this.boxOverlay_.getElement(),V=function(S){const K=function(S){return{clientX:S.clientX,clientY:S.clientY}}(S),L=c.getEventCoordinateInternal(K);b.setPosition(L)},G=function(S){const K=c.getEventCoordinateInternal(S);x.getMap().getView().setCenterInternal(K),window.removeEventListener("mousemove",V),window.removeEventListener("mouseup",G)};R.addEventListener("mousedown",function(){window.addEventListener("mousemove",V),window.addEventListener("mouseup",G)})}setMap(e){const t=this.getMap();if(e!==t){if(t){const i=t.getView();i&&this.unbindView_(i),this.ovmap_.setTarget(null)}if(super.setMap(e),e){this.ovmap_.setTarget(this.ovmapDiv_),this.listenerKeys.push((0,g.KT)(e,me.A.PROPERTYCHANGE,this.handleMapPropertyChange_,this));const i=e.getView();i&&(this.bindView_(i),i.isDef()&&(this.ovmap_.updateSize(),this.resetExtent_())),this.ovmap_.isRendered()||this.updateBoxAfterOvmapIsRendered_()}}}handleMapPropertyChange_(e){if("view"===e.key){const t=e.oldValue;t&&this.unbindView_(t);const i=this.getMap().getView();this.bindView_(i)}else!this.ovmap_.isRendered()&&("target"===e.key||"size"===e.key)&&this.ovmap_.updateSize()}bindView_(e){if(!this.view_){const t=new Z.Ay({projection:e.getProjection()});this.ovmap_.setView(t)}e.addChangeListener(ai.A.ROTATION,this.boundHandleRotationChanged_),this.handleRotationChanged_()}unbindView_(e){e.removeChangeListener(ai.A.ROTATION,this.boundHandleRotationChanged_)}handleRotationChanged_(){this.rotateWithView_&&this.ovmap_.getView().setRotation(this.getMap().getView().getRotation())}validateExtent_(){const e=this.getMap(),t=this.ovmap_;if(!e.isRendered()||!t.isRendered())return;const i=e.getSize(),r=e.getView().calculateExtentInternal(i);if(this.viewExtent_&&(0,_.aI)(r,this.viewExtent_))return;this.viewExtent_=r;const o=t.getSize(),c=t.getView().calculateExtentInternal(o),u=t.getPixelFromCoordinateInternal((0,_.Py)(r)),m=t.getPixelFromCoordinateInternal((0,_.k_)(r)),p=Math.abs(u[0]-m[0]),x=Math.abs(u[1]-m[1]),b=o[0],R=o[1];p<.1*b||x<.1*R||p>.75*b||x>.75*R?this.resetExtent_():(0,_.ms)(c,r)||this.recenter_()}resetExtent_(){const e=this.getMap(),t=this.ovmap_,i=e.getSize(),r=e.getView().calculateExtentInternal(i),o=t.getView(),a=Math.log(7.5)/Math.LN2,c=1/(.1*Math.pow(2,a/2));(0,_.Af)(r,c),o.fitInternal((0,si.VY)(r))}recenter_(){const e=this.getMap(),t=this.ovmap_,i=e.getView();t.getView().setCenterInternal(i.getCenterInternal())}updateBox_(){const e=this.getMap(),t=this.ovmap_;if(!e.isRendered()||!t.isRendered())return;const i=e.getSize(),s=e.getView(),r=t.getView(),o=this.rotateWithView_?0:-s.getRotation(),a=this.boxOverlay_,c=this.boxOverlay_.getElement(),u=s.getCenterInternal(),m=s.getResolution(),p=r.getResolution(),x=i[0]*m/p,b=i[1]*m/p;a.setPosition(u),c&&(c.style.width=x+"px",c.style.height=b+"px",c.style.transform="rotate("+o+"rad)")}updateBoxAfterOvmapIsRendered_(){this.ovmapPostrenderKey_||(this.ovmapPostrenderKey_=(0,g.Jz)(this.ovmap_,Me.A.POSTRENDER,function(e){delete this.ovmapPostrenderKey_,this.updateBox_()},this))}handleClick_(e){e.preventDefault(),this.handleToggle_()}handleToggle_(){this.element.classList.toggle(C.nT),this.collapsed_?(0,n.fo)(this.collapseLabel_,this.label_):(0,n.fo)(this.label_,this.collapseLabel_),this.collapsed_=!this.collapsed_;const e=this.ovmap_;if(!this.collapsed_){if(e.isRendered())return this.viewExtent_=void 0,void e.render();e.updateSize(),this.resetExtent_(),this.updateBoxAfterOvmapIsRendered_()}}getCollapsible(){return this.collapsible_}setCollapsible(e){this.collapsible_!==e&&(this.collapsible_=e,this.element.classList.toggle("ol-uncollapsible"),!e&&this.collapsed_&&this.handleToggle_())}setCollapsed(e){!this.collapsible_||this.collapsed_===e||this.handleToggle_()}getCollapsed(){return this.collapsed_}getRotateWithView(){return this.rotateWithView_}setRotateWithView(e){this.rotateWithView_!==e&&(this.rotateWithView_=e,0!==this.getMap().getView().getRotation()&&(this.rotateWithView_?this.handleRotationChanged_():this.ovmap_.getView().setRotation(0),this.viewExtent_=void 0,this.validateExtent_(),this.updateBox_()))}getOverviewMap(){return this.ovmap_}render(e){this.validateExtent_(),this.updateBox_()}},Gt="units",fn=[1,2,5],gt=25.4/.28,_n=class pn extends k{constructor(e){e=e||{};const t=document.createElement("div");t.style.pointerEvents="none",super({element:t,render:e.render,target:e.target});const i=void 0!==e.className?e.className:e.bar?"ol-scale-bar":"ol-scale-line";this.innerElement_=document.createElement("div"),this.innerElement_.className=i+"-inner",this.element.className=i+" "+C.XI,this.element.appendChild(this.innerElement_),this.viewState_=null,this.minWidth_=void 0!==e.minWidth?e.minWidth:64,this.maxWidth_=e.maxWidth,this.renderedVisible_=!1,this.renderedWidth_=void 0,this.renderedHTML_="",this.addChangeListener(Gt,this.handleUnitsChanged_),this.setUnits(e.units||"metric"),this.scaleBar_=e.bar||!1,this.scaleBarSteps_=e.steps||4,this.scaleBarText_=e.text||!1,this.dpi_=e.dpi||void 0}getUnits(){return this.get(Gt)}handleUnitsChanged_(){this.updateElement_()}setUnits(e){this.set(Gt,e)}setDpi(e){this.dpi_=e}updateElement_(){const e=this.viewState_;if(!e)return void(this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1));const t=e.center,i=e.projection,s=this.getUnits();let o=(0,Y.hO)(i,e.resolution,t,"degrees"==s?"degrees":"m");const a=this.minWidth_*(this.dpi_||gt)/gt,c=void 0!==this.maxWidth_?this.maxWidth_*(this.dpi_||gt)/gt:void 0;let u=a*o,m="";if("degrees"==s){const K=Y.Ig.degrees;u*=K,u=c){x=N,b=V,R=G;break}if(b>=a)break;N=x,V=b,G=R,++p}const S=this.scaleBar_?this.createScaleBar(b,x,m):x.toFixed(R<0?-R:0)+" "+m;this.renderedHTML_!=S&&(this.innerElement_.innerHTML=S,this.renderedHTML_=S),this.renderedWidth_!=b&&(this.innerElement_.style.width=b+"px",this.renderedWidth_=b),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}createScaleBar(e,t,i){const s=this.getScaleForResolution(),r=s<1?Math.round(1/s).toLocaleString()+" : 1":"1 : "+Math.round(s).toLocaleString(),o=this.scaleBarSteps_,a=e/o,c=[this.createMarker("absolute")];for(let m=0;m
`+this.createMarker("relative")+(m%2==0||2===o?this.createStepText(m,e,!1,t,i):"")+"");return c.push(this.createStepText(o,e,!0,t,i)),(this.scaleBarText_?`
`+r+"
":"")+c.join("")}createMarker(e){return`
`}createStepText(e,t,i,s,r){const a=(0===e?0:Math.round(s/this.scaleBarSteps_*e*100)/100)+(0===e?"":" "+r);return`
`+a+"
"}getScaleForResolution(){return(0,Y.hO)(this.viewState_.projection,this.viewState_.resolution,this.viewState_.center,"m")*(1e3/25.4)*(this.dpi_||gt)}render(e){const t=e.frameState;this.viewState_=t?t.viewState:null,this.updateElement_()}},Kt="projection",ci="coordinateFormat",yn=class vn extends k{constructor(e){e=e||{};const t=document.createElement("div");t.className=void 0!==e.className?e.className:"ol-mouse-position",super({element:t,render:e.render,target:e.target}),this.addChangeListener(Kt,this.handleProjectionChanged_),e.coordinateFormat&&this.setCoordinateFormat(e.coordinateFormat),e.projection&&this.setProjection(e.projection),this.renderOnMouseOut_=void 0!==e.placeholder,this.placeholder_=this.renderOnMouseOut_?e.placeholder:" ",this.renderedHTML_=t.innerHTML,this.mapProjection_=null,this.transform_=null,this.wrapX_=!1!==e.wrapX}handleProjectionChanged_(){this.transform_=null}getCoordinateFormat(){return this.get(ci)}getProjection(){return this.get(Kt)}handleMouseMove(e){const t=this.getMap();this.updateHTML_(t.getEventPixel(e))}handleMouseOut(e){this.updateHTML_(null)}setMap(e){if(super.setMap(e),e){const t=e.getViewport();this.listenerKeys.push((0,g.KT)(t,"pointermove",this.handleMouseMove,this)),this.renderOnMouseOut_&&this.listenerKeys.push((0,g.KT)(t,"pointerout",this.handleMouseOut,this)),this.updateHTML_(null)}}setCoordinateFormat(e){this.set(ci,e)}setProjection(e){this.set(Kt,(0,Y.Jt)(e))}updateHTML_(e){let t=this.placeholder_;if(e&&this.mapProjection_){if(!this.transform_){const r=this.getProjection();this.transform_=r?(0,Y.FO)(this.mapProjection_,r):Y.R6}const s=this.getMap().getCoordinateFromPixelInternal(e);if(s){const r=(0,Y.Tf)();if(r&&(this.transform_=(0,Y.FO)(this.mapProjection_,r)),this.transform_(s,s),this.wrapX_){const a=r||this.getProjection()||this.mapProjection_;(0,D.Li)(s,a)}const o=this.getCoordinateFormat();t=o?o(s):s.toString()}}(!this.renderedHTML_||t!==this.renderedHTML_)&&(this.element.innerHTML=t,this.renderedHTML_=t)}render(e){const t=e.frameState;t?this.mapProjection_!=t.viewState.projection&&(this.mapProjection_=t.viewState.projection,this.transform_=null):this.mapProjection_=null}},di=["fullscreenchange","webkitfullscreenchange","MSFullscreenChange"];function ui(l){const e=l.body;return!!(e.webkitRequestFullscreen||e.requestFullscreen&&l.fullscreenEnabled)}function mi(l){return!(!l.webkitIsFullScreen&&!l.fullscreenElement)}function gi(l){l.requestFullscreen?l.requestFullscreen():l.webkitRequestFullscreen&&l.webkitRequestFullscreen()}const Tn=class En extends k{constructor(e){e=e||{},super({element:document.createElement("div"),target:e.target}),this.keys_=void 0!==e.keys&&e.keys,this.source_=e.source,this.isInFullscreen_=!1,this.boundHandleMapTargetChange_=this.handleMapTargetChange_.bind(this),this.cssClassName_=void 0!==e.className?e.className:"ol-full-screen",this.documentListeners_=[],this.activeClassName_=void 0!==e.activeClassName?e.activeClassName.split(" "):[this.cssClassName_+"-true"],this.inactiveClassName_=void 0!==e.inactiveClassName?e.inactiveClassName.split(" "):[this.cssClassName_+"-false"];const t=void 0!==e.label?e.label:"\u2922";this.labelNode_="string"==typeof t?document.createTextNode(t):t;const i=void 0!==e.labelActive?e.labelActive:"\xd7";this.labelActiveNode_="string"==typeof i?document.createTextNode(i):i;const s=e.tipLabel?e.tipLabel:"Toggle full-screen";this.button_=document.createElement("button"),this.button_.title=s,this.button_.setAttribute("type","button"),this.button_.appendChild(this.labelNode_),this.button_.addEventListener(T.A.CLICK,this.handleClick_.bind(this),!1),this.setClassName_(this.button_,this.isInFullscreen_),this.element.className=`${this.cssClassName_} ${C.XI} ${C.$N}`,this.element.appendChild(this.button_)}handleClick_(e){e.preventDefault(),this.handleFullScreen_()}handleFullScreen_(){const e=this.getMap();if(!e)return;const t=e.getOwnerDocument();if(ui(t))if(mi(t))!function bn(l){l.exitFullscreen?l.exitFullscreen():l.webkitExitFullscreen&&l.webkitExitFullscreen()}(t);else{let i;i=this.source_?"string"==typeof this.source_?t.getElementById(this.source_):this.source_:e.getTargetElement(),this.keys_?function xn(l){l.webkitRequestFullscreen?l.webkitRequestFullscreen():gi(l)}(i):gi(i)}}handleFullScreenChange_(){const e=this.getMap();if(!e)return;const t=this.isInFullscreen_;this.isInFullscreen_=mi(e.getOwnerDocument()),t!==this.isInFullscreen_&&(this.setClassName_(this.button_,this.isInFullscreen_),this.isInFullscreen_?((0,n.fo)(this.labelActiveNode_,this.labelNode_),this.dispatchEvent("enterfullscreen")):((0,n.fo)(this.labelNode_,this.labelActiveNode_),this.dispatchEvent("leavefullscreen")),e.updateSize())}setClassName_(e,t){t?(e.classList.remove(...this.inactiveClassName_),e.classList.add(...this.activeClassName_)):(e.classList.remove(...this.activeClassName_),e.classList.add(...this.inactiveClassName_))}setMap(e){const t=this.getMap();t&&t.removeChangeListener("target",this.boundHandleMapTargetChange_),super.setMap(e),this.handleMapTargetChange_(),e&&e.addChangeListener("target",this.boundHandleMapTargetChange_)}handleMapTargetChange_(){const e=this.documentListeners_;for(let i=0,s=e.length;i(i[s]=!0,i),{}),this.replace_=e.replace,this.prefix_=e.prefix,this.listenerKeys_=[],this.initial_=!0,this.updateState_=this.updateState_.bind(this),this.trackedCallbacks_={},this.trackedValues_={}}getParamName_(e){return this.prefix_?this.prefix_+e:e}get_(e,t){return e.get(this.getParamName_(t))}set_(e,t,i){t in this.params_&&e.set(this.getParamName_(t),i)}delete_(e,t){t in this.params_&&e.delete(this.getParamName_(t))}setMap(e){const t=this.getMap();super.setMap(e),e!==t&&(t&&this.unregisterListeners_(t),e&&(this.initial_=!0,this.updateState_(),this.registerListeners_(e)))}registerListeners_(e){this.listenerKeys_.push((0,g.KT)(e,Me.A.MOVEEND,this.updateUrl_,this),(0,g.KT)(e.getLayerGroup(),T.A.CHANGE,this.updateUrl_,this),(0,g.KT)(e,"change:layergroup",this.handleChangeLayerGroup_,this)),this.replace_||addEventListener("popstate",this.updateState_)}unregisterListeners_(e){for(let s=0,r=this.listenerKeys_.length;s1?1:-1),this.lastScaleDelta_=0,!1)}handleDownEvent(e){return!(!(0,ie.A4)(e)||!this.condition_(e)||(e.map.getView().beginInteraction(),this.lastAngle_=void 0,this.lastMagnitude_=void 0,0))}},Ln=class Mn extends I.A{constructor(e){super(e=e||{})}};var fi=h(7350),we=h(7068);const On=class Sn extends fi.A{constructor(e){super(e),this.image_=null}getImage(){return this.image_?this.image_.getImage():null}prepareFrame(e){const t=e.layerStatesArray[e.layerIndex],i=e.pixelRatio,s=e.viewState,r=s.resolution,o=this.getLayer().getSource(),a=e.viewHints;let c=e.extent;if(void 0!==t.extent&&(c=(0,_._N)(c,(0,Y.SD)(t.extent,s.projection))),!a[W.A.ANIMATING]&&!a[W.A.INTERACTING]&&!(0,_.Im)(c))if(o){const m=o.getImage(c,r,i,s.projection);m&&(this.loadImage(m)?this.image_=m:m.getState()===we.A.EMPTY&&(this.image_=null))}else this.image_=null;return!!this.image_}getData(e){const t=this.frameState;if(!t)return null;const i=this.getLayer(),s=(0,O.Bb)(t.pixelToCoordinateTransform,e.slice()),r=i.getExtent();if(r&&!(0,_.Ym)(r,s))return null;const o=this.image_.getExtent(),a=this.image_.getImage(),c=(0,_.RG)(o),u=Math.floor(a.width*((s[0]-o[0])/c));if(u<0||u>=a.width)return null;const m=(0,_.Oq)(o),p=Math.floor(a.height*((o[3]-s[1])/m));return p<0||p>=a.height?null:this.getImageData(a,u,p)}renderFrame(e,t){const i=this.image_,s=i.getExtent(),r=i.getResolution(),[o,a]=Array.isArray(r)?r:[r,r],c=i.getPixelRatio(),u=e.layerStatesArray[e.layerIndex],m=e.pixelRatio,p=e.viewState,x=p.center,b=p.resolution,R=m*o/(b*c),N=m*a/(b*c),V=e.extent,G=p.resolution,S=p.rotation,K=Math.round((0,_.RG)(V)/G*m),L=Math.round((0,_.Oq)(V)/G*m);(0,O.Zz)(this.pixelTransform,e.size[0]/2,e.size[1]/2,1/m,1/m,S,-K/2,-L/2),(0,O.T9)(this.inversePixelTransform,this.pixelTransform);const H=(0,O.dI)(this.pixelTransform);this.useContainer(t,H,this.getBackground(e));const z=this.getRenderContext(e),de=this.context.canvas;de.width!=K||de.height!=L?(de.width=K,de.height=L):this.containerReused||z.clearRect(0,0,K,L);let ye=!1,U=!0;if(u.extent){const se=(0,Y.SD)(u.extent,p.projection);U=(0,_.HY)(se,e.extent),ye=U&&!(0,_.ms)(se,e.extent),ye&&this.clipUnrotated(z,e,se)}const le=i.getImage(),be=(0,O.Zz)(this.tempTransform,K/2,L/2,R,N,0,c*(s[0]-x[0])/o,c*(x[1]-s[3])/a);this.renderedResolution=a*m/c;const Re=le.width*be[0],Ze=le.height*be[3];if(this.getLayer().getSource().getInterpolate()||(z.imageSmoothingEnabled=!1),this.preRender(z,e),U&&Re>=.5&&Ze>=.5){const se=be[4],Ke=be[5],Oe=u.opacity;1!==Oe&&(z.save(),z.globalAlpha=Oe),z.drawImage(le,0,0,+le.width,+le.height,se,Ke,Re,Ze),1!==Oe&&z.restore()}return this.postRender(this.context,e),ye&&z.restore(),z.imageSmoothingEnabled=!0,H!==de.style.transform&&(de.style.transform=H),this.container}},pi=class Fn extends Ln{constructor(e){super(e)}createRenderer(){return new On(this)}getData(e){return super.getData(e)}},kn=class Dn extends I.A{constructor(e){e=e||{};const t=Object.assign({},e);delete t.preload,delete t.useInterimTilesOnError,super(t),this.setPreload(void 0!==e.preload?e.preload:0),this.setUseInterimTilesOnError(void 0===e.useInterimTilesOnError||e.useInterimTilesOnError)}getPreload(){return this.get("preload")}setPreload(e){this.set("preload",e)}getUseInterimTilesOnError(){return this.get("useInterimTilesOnError")}setUseInterimTilesOnError(e){this.set("useInterimTilesOnError",e)}getData(e){return super.getData(e)}};var Ut=h(6263),He=h(1113);const jn=class Nn extends fi.A{constructor(e){super(e),this.extentChanged=!0,this.renderedExtent_=null,this.renderedProjection=null,this.renderedTiles=[],this.newTiles_=!1,this.tmpExtent=(0,_.S5)(),this.tmpTileRange_=new He.A(0,0,0,0)}isDrawableTile(e){const t=this.getLayer(),i=e.getState(),s=t.getUseInterimTilesOnError();return i==ee.A.LOADED||i==ee.A.EMPTY||i==ee.A.ERROR&&!s}getTile(e,t,i,s){const r=s.pixelRatio,o=s.viewState.projection,a=this.getLayer();let u=a.getSource().getTile(e,t,i,r,o);return u.getState()==ee.A.ERROR&&a.getUseInterimTilesOnError()&&a.getPreload()>0&&(this.newTiles_=!0),this.isDrawableTile(u)||(u=u.getInterimTile()),u}getData(e){const t=this.frameState;if(!t)return null;const i=this.getLayer(),s=(0,O.Bb)(t.pixelToCoordinateTransform,e.slice()),r=i.getExtent();if(r&&!(0,_.Ym)(r,s))return null;const o=t.pixelRatio,a=t.viewState.projection,c=t.viewState,u=i.getRenderSource(),m=u.getTileGridForProjection(c.projection),p=u.getTilePixelRatio(t.pixelRatio);for(let x=m.getZForResolution(c.resolution);x>=m.getMinZoom();--x){const b=m.getTileCoordForCoordAndZ(s,x),R=u.getTile(x,b[1],b[2],o,a);if(!(R instanceof zt.A||R instanceof Ut.A)||R instanceof Ut.A&&R.getState()===ee.A.EMPTY)return null;if(R.getState()!==ee.A.LOADED)continue;const N=m.getOrigin(x),V=(0,Le.xq)(m.getTileSize(x)),G=m.getResolution(x),S=Math.floor(p*((s[0]-N[0])/G-b[1]*V[0])),K=Math.floor(p*((N[1]-s[1])/G-b[2]*V[1])),L=Math.round(p*u.getGutterForProjection(c.projection));return this.getImageData(R.getImage(),S+L,K+L)}return null}loadedTileCallback(e,t,i){return!!this.isDrawableTile(i)&&super.loadedTileCallback(e,t,i)}prepareFrame(e){return!!this.getLayer().getSource()}renderFrame(e,t){const i=e.layerStatesArray[e.layerIndex],s=e.viewState,r=s.projection,o=s.resolution,a=s.center,c=s.rotation,u=e.pixelRatio,m=this.getLayer(),p=m.getSource(),x=p.getRevision(),b=p.getTileGridForProjection(r),R=b.getZForResolution(o,p.zDirection),N=b.getResolution(R);let V=e.extent;const G=e.viewState.resolution,S=p.getTilePixelRatio(u),K=Math.round((0,_.RG)(V)/G*u),L=Math.round((0,_.Oq)(V)/G*u),H=i.extent&&(0,Y.SD)(i.extent,r);H&&(V=(0,_._N)(V,(0,Y.SD)(i.extent,r)));const z=N*K/2/S,de=N*L/2/S,ye=[a[0]-z,a[1]-de,a[0]+z,a[1]+de],U=b.getTileRangeForExtentAndZ(V,R),le={};le[R]={};const be=this.createLoadedTileFinder(p,r,le),Re=this.tmpExtent,Ze=this.tmpTileRange_;this.newTiles_=!1;const se=c?(0,_.Yw)(s.center,G,c,e.size):void 0;for(let Fe=U.minX;Fe<=U.maxX;++Fe)for(let fe=U.minY;fe<=U.maxY;++fe){if(c&&!b.tileCoordIntersectsViewport([R,Fe,fe],se))continue;const Ee=this.getTile(R,Fe,fe,e);if(this.isDrawableTile(Ee)){const ot=(0,y.v6)(this);if(Ee.getState()==ee.A.LOADED){le[R][Ee.tileCoord.toString()]=Ee;let at=Ee.inTransition(ot);at&&1!==i.opacity&&(Ee.endTransition(ot),at=!1),!this.newTiles_&&(at||!this.renderedTiles.includes(Ee))&&(this.newTiles_=!0)}if(1===Ee.getAlpha(ot,e.time))continue}const qt=b.getTileCoordChildTileRange(Ee.tileCoord,Ze,Re);let Et=!1;qt&&(Et=be(R+1,qt)),Et||b.forEachTileCoordParentTileRange(Ee.tileCoord,be,Ze,Re)}const Ke=N/o*u/S;(0,O.Zz)(this.pixelTransform,e.size[0]/2,e.size[1]/2,1/u,1/u,c,-K/2,-L/2);const Oe=(0,O.dI)(this.pixelTransform);this.useContainer(t,Oe,this.getBackground(e));const re=this.getRenderContext(e),Ue=this.context.canvas;(0,O.T9)(this.inversePixelTransform,this.pixelTransform),(0,O.Zz)(this.tempTransform,K/2,L/2,Ke,Ke,0,-K/2,-L/2),Ue.width!=K||Ue.height!=L?(Ue.width=K,Ue.height=L):this.containerReused||re.clearRect(0,0,K,L),H&&this.clipUnrotated(re,e,H),p.getInterpolate()||(re.imageSmoothingEnabled=!1),this.preRender(re,e),this.renderedTiles.length=0;let Ye,yt,Ae,tt=Object.keys(le).map(Number);tt.sort(P.V_),1!==i.opacity||this.containerReused&&!p.getOpaque(e.viewState.projection)?(Ye=[],yt=[]):tt=tt.reverse();for(let Fe=tt.length-1;Fe>=0;--Fe){const fe=tt[Fe],Ee=p.getTilePixelSize(fe,u,r),Et=b.getResolution(fe)/N,ot=Ee[0]*Et*Ke,at=Ee[1]*Et*Ke,ei=b.getTileCoordForCoordAndZ((0,_.Py)(ye),fe),Li=b.getTileCoordExtent(ei),Mt=(0,O.Bb)(this.tempTransform,[S*(Li[0]-ye[0])/N,S*(ye[3]-Li[3])/N]),Ms=S*p.getGutterForProjection(r),Si=le[fe];for(const Ls in Si){const lt=Si[Ls],Oi=lt.tileCoord,Fi=ei[1]-Oi[1],Ss=Math.round(Mt[0]-(Fi-1)*ot),Di=ei[2]-Oi[2],Os=Math.round(Mt[1]-(Di-1)*at),Be=Math.round(Mt[0]-Fi*ot),We=Math.round(Mt[1]-Di*at),xt=Ss-Be,bt=Os-We,ki=R===fe,Ni=ki&&1!==lt.getAlpha((0,y.v6)(this),e.time);let ti=!1;if(!Ni)if(Ye){Ae=[Be,We,Be+xt,We,Be+xt,We+bt,Be,We+bt];for(let Lt=0,Fs=Ye.length;Ltthis.getImageInternal(o,a,c,r),this.getInterpolate()),this.reprojectedRevision_=this.getRevision(),this.reprojectedImage_}getImageInternal(e,t,i,s){if(this.loader){const r=function Xn(l,e,t,i){const s=e/t,r=(0,_.q1)(l),o=(0,ve.mk)((0,_.RG)(l)/s,4),a=(0,ve.mk)((0,_.Oq)(l)/s,4),u=o+2*(0,ve.mk)((i-1)*o/2,4),m=(0,ve.mk)((i-1)*a/2,4);return(0,_.Bg)(r,s,0,[u,a+2*m])}(e,t,i,1),o=this.findNearestResolution(t);if(this.image&&(this.static_||this.wantedProjection_===s&&(this.wantedExtent_&&(0,_.ms)(this.wantedExtent_,r)||(0,_.ms)(this.image.getExtent(),r))&&(this.wantedResolution_&&Wt(this.wantedResolution_)===o||Wt(this.image.getResolution())===o)))return this.image;this.wantedProjection_=s,this.wantedExtent_=r,this.wantedResolution_=o,this.image=new _t.Ay(r,o,i,this.loader),this.image.addEventListener(T.A.CHANGE,this.handleImageChange.bind(this))}return this.image}handleImageChange(e){const t=e.target;let i;switch(t.getState()){case we.A.LOADING:this.loading=!0,i="imageloadstart";break;case we.A.LOADED:this.loading=!1,i="imageloadend";break;case we.A.ERROR:this.loading=!1,i="imageloaderror";break;default:return}this.hasListener(i)&&this.dispatchEvent(new Bn(i,t))}},xi=class $n extends Zn{constructor(e){const t=void 0!==e.crossOrigin?e.crossOrigin:null,i=void 0!==e.imageLoadFunction?e.imageLoadFunction:Hn;super({attributions:e.attributions,interpolate:e.interpolate,projection:(0,Y.Jt)(e.projection)}),this.url_=e.url,this.imageExtent_=e.imageExtent,this.image=null,this.image=new _t.Ay(this.imageExtent_,void 0,1,function Yn(l){const e=l.load||_t.D4,t=l.imageExtent,i=new Image;return null!==l.crossOrigin&&(i.crossOrigin=l.crossOrigin),()=>e(i,l.url).then(s=>{const r=(0,_.RG)(t)/s.width,o=(0,_.Oq)(t)/s.height;return{image:s,extent:t,resolution:r!==o?[r,o]:o,pixelRatio:1}})}({url:e.url,imageExtent:e.imageExtent,crossOrigin:t,load:(s,r)=>(this.image.setImage(s),i(this.image,r),(0,_t.D4)(s))})),this.image.addEventListener(T.A.CHANGE,this.handleImageChange.bind(this))}getImageExtent(){return this.imageExtent_}getImageInternal(e,t,i,s){return(0,_.HY)(e,this.image.getExtent())?this.image:null}getUrl(){return this.url_}};var Qn=h(4680),je=h(7709);const bi=class Jn extends Qn.A{clear(){for(;this.getCount()>0;)this.pop().release();super.clear()}expireCache(e){for(;this.canExpireCache()&&!(this.peekLast().getKey()in e);)this.pop().release()}pruneExceptNewestZ(){if(0===this.getCount())return;const e=this.peekFirstKey(),i=(0,je.K)(e)[0];this.forEach(s=>{s.tileCoord[0]!==i&&(this.remove((0,je.i7)(s.tileCoord)),s.release())})}};var Zt=h(8828),qn=h(8183);const rt=[0,0,0],Yt=class es{constructor(e){let t;if(this.minZoom=void 0!==e.minZoom?e.minZoom:0,this.resolutions_=e.resolutions,(0,_e.v)((0,P.WC)(this.resolutions_,(s,r)=>r-s,!0),"`resolutions` must be sorted in descending order"),!e.origins)for(let s=0,r=this.resolutions_.length-1;s{const o=new He.A(Math.min(0,s[0]),Math.max(s[0]-1,-1),Math.min(0,s[1]),Math.max(s[1]-1,-1));if(i){const a=this.getTileRangeForExtentAndZ(i,r);o.minX=Math.max(a.minX,o.minX),o.maxX=Math.min(a.maxX,o.maxX),o.minY=Math.max(a.minY,o.minY),o.maxY=Math.min(a.maxY,o.maxY)}return o}):i&&this.calculateTileRanges_(i)}forEachTileCoord(e,t,i){const s=this.getTileRangeForExtentAndZ(e,t);for(let r=s.minX,o=s.maxX;r<=o;++r)for(let a=s.minY,c=s.maxY;a<=c;++a)i([t,r,a])}forEachTileCoordParentTileRange(e,t,i,s){let r,o,a,c=null,u=e[0]-1;for(2===this.zoomFactor_?(o=e[1],a=e[2]):c=this.getTileCoordExtent(e,s);u>=this.minZoom;){if(void 0!==o&&void 0!==a?(o=Math.floor(o/2),a=Math.floor(a/2),r=(0,He.N)(o,o,a,a,i)):r=this.getTileRangeForExtentAndZ(c,u,i),t(u,r))return!0;--u}return!1}getExtent(){return this.extent_}getMaxZoom(){return this.maxZoom}getMinZoom(){return this.minZoom}getOrigin(e){return this.origin_?this.origin_:this.origins_[e]}getResolution(e){return this.resolutions_[e]}getResolutions(){return this.resolutions_}getTileCoordChildTileRange(e,t,i){if(e[0]this.maxZoom||t0?i:Math.max(r/t[0],s/t[1]);const o=e+1,a=new Array(o);for(let c=0;ci.highWaterMark&&(i.highWaterMark=e)}useTile(e,t,i,s){}};function ls(l,e){const t=/\{z\}/g,i=/\{x\}/g,s=/\{y\}/g,r=/\{-y\}/g;return function(o,a,c){if(o)return l.replace(t,o[0].toString()).replace(i,o[1].toString()).replace(s,o[2].toString()).replace(r,function(){const m=e.getFullTileRange(o[0]);if(!m)throw new Error("The {-y} placeholder requires a tile grid with extent");return(m.getHeight()-o[2]-1).toString()})}}class Qt extends as{constructor(e){super({attributions:e.attributions,cacheSize:e.cacheSize,opaque:e.opaque,projection:e.projection,state:e.state,tileGrid:e.tileGrid,tilePixelRatio:e.tilePixelRatio,wrapX:e.wrapX,transition:e.transition,interpolate:e.interpolate,key:e.key,attributionsCollapsible:e.attributionsCollapsible,zDirection:e.zDirection}),this.generateTileUrlFunction_=this.tileUrlFunction===Qt.prototype.tileUrlFunction,this.tileLoadFunction=e.tileLoadFunction,e.tileUrlFunction&&(this.tileUrlFunction=e.tileUrlFunction),this.urls=null,e.urls?this.setUrls(e.urls):e.url&&this.setUrl(e.url),this.tileLoadingKeys_={}}getTileLoadFunction(){return this.tileLoadFunction}getTileUrlFunction(){return Object.getPrototypeOf(this).tileUrlFunction===this.tileUrlFunction?this.tileUrlFunction.bind(this):this.tileUrlFunction}getUrls(){return this.urls}handleTileChange(e){const t=e.target,i=(0,y.v6)(t),s=t.getState();let r;s==ee.A.LOADING?(this.tileLoadingKeys_[i]=!0,r="tileloadstart"):i in this.tileLoadingKeys_&&(delete this.tileLoadingKeys_[i],r=s==ee.A.ERROR?"tileloaderror":s==ee.A.LOADED?"tileloadend":void 0),null!=r&&this.dispatchEvent(new os(r,t))}setTileLoadFunction(e){this.tileCache.clear(),this.tileLoadFunction=e,this.changed()}setTileUrlFunction(e,t){this.tileUrlFunction=e,this.tileCache.pruneExceptNewestZ(),typeof t<"u"?this.setKey(t):this.changed()}setUrl(e){const t=function hs(l){const e=[];let t=/\{([a-z])-([a-z])\}/.exec(l);if(t){const i=t[1].charCodeAt(0),s=t[2].charCodeAt(0);let r;for(r=i;r<=s;++r)e.push(l.replace(t[0],String.fromCharCode(r)));return e}if(t=/\{(\d+)-(\d+)\}/.exec(l),t){const i=parseInt(t[2],10);for(let s=parseInt(t[1],10);s<=i;s++)e.push(l.replace(t[0],s.toString()));return e}return e.push(l),e}(e);this.urls=t,this.setUrls(t)}setUrls(e){this.urls=e;const t=e.join("\n");this.generateTileUrlFunction_?this.setTileUrlFunction(function cs(l,e){const t=l.length,i=new Array(t);for(let s=0;sthis.getTileInternal(V,G,S,K,o),this.reprojectionErrorThreshold_,this.renderReprojectionEdges_,this.tileOptions);return N.key=p,u?(N.interimTile=u,N.refreshInterimChain(),a.replace(m,N)):a.set(m,N),N}getTileInternal(e,t,i,s,r){let o=null;const a=(0,je.dp)(e,t,i),c=this.getKey();if(this.tileCache.containsKey(a)){if(o=this.tileCache.get(a),o.key!=c){const u=o;o=this.createTile_(e,t,i,s,r,c),o.interimTile=u.getState()==ee.A.IDLE?u.interimTile:u,o.refreshInterimChain(),this.tileCache.replace(a,o)}}else o=this.createTile_(e,t,i,s,r,c),this.tileCache.set(a,o);return o}setRenderReprojectionEdges(e){if(this.renderReprojectionEdges_!=e){this.renderReprojectionEdges_=e;for(const t in this.tileCacheForProjection)this.tileCacheForProjection[t].clear();this.changed()}}setTileGridForProjection(e,t){const i=(0,Y.Jt)(e);if(i){const s=(0,y.v6)(i);s in this.tileGridForProjection||(this.tileGridForProjection[s]=t)}}clear(){super.clear();for(const e in this.tileCacheForProjection)this.tileCacheForProjection[e].clear()}},wi=class ps extends fs{constructor(e){const t=void 0!==(e=e||{}).projection?e.projection:"EPSG:3857",i=void 0!==e.tileGrid?e.tileGrid:function ns(l){const e=l||{},t=e.extent||(0,Y.Jt)("EPSG:3857").getExtent(),i={extent:t,minZoom:e.minZoom,tileSize:e.tileSize,resolutions:Ci(t,e.maxZoom,e.tileSize,e.maxResolution)};return new Yt(i)}({extent:$t(t),maxResolution:e.maxResolution,maxZoom:e.maxZoom,minZoom:e.minZoom,tileSize:e.tileSize});super({attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,interpolate:e.interpolate,opaque:e.opaque,projection:t,reprojectionErrorThreshold:e.reprojectionErrorThreshold,tileGrid:i,tileLoadFunction:e.tileLoadFunction,tilePixelRatio:e.tilePixelRatio,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition,attributionsCollapsible:e.attributionsCollapsible,zDirection:e.zDirection}),this.gutter_=void 0!==e.gutter?e.gutter:0}getGutter(){return this.gutter_}},vs=class _s extends wi{constructor(e){super({opaque:!1,projection:(e=e||{}).projection,tileGrid:e.tileGrid,wrapX:void 0===e.wrapX||e.wrapX,zDirection:e.zDirection,url:e.template||"z:{z} x:{x} y:{y}",tileLoadFunction:(t,i)=>{const s=t.getTileCoord()[0],r=(0,Le.xq)(this.tileGrid.getTileSize(s)),o=(0,n.Y)(r[0],r[1]);o.strokeStyle="grey",o.strokeRect(.5,.5,r[0]+.5,r[1]+.5),o.fillStyle="grey",o.strokeStyle="white",o.textAlign="center",o.textBaseline="middle",o.font="24px sans-serif",o.lineWidth=4,o.strokeText(i,r[0]/2,r[1]/2,r[0]),o.fillText(i,r[0]/2,r[1]/2,r[0]),t.setImage(o.canvas)}})}};var Ii=h(5862),Ri=h(1043),At=h(5637),Pt=h(4688),ys=h(2872),Es=h(1633),xs=h(8141),bs=h(9437),Ts=h(4119),Jt=h(4907),vt=h(1182),Ai=h(6211),Cs=h(6372),ws=h(3738);const Is=["olMapContainer"],Rs=l=>({"loading-skeleton":l});function As(l,e){if(1&l&&(v.j41(0,"div",3),v.EFF(1),v.k0s()),2&l){const t=v.XpG();v.xc7("display",t.isOverviewMapOpened?"grid":"none"),v.R7$(),v.SpI("\n",t.magnificationLevel,"x\n")}}const Pi=new Ri.Ay({fill:new At.A({color:"transparent"}),stroke:new Pt.A({color:"red",lineDash:[10,10],width:2}),image:new ys.A({radius:5,stroke:new Pt.A({color:"rgba(0, 0, 0, 0.7)"}),fill:new At.A({color:"rgba(255, 255, 255, 0.2)"})})}),Mi=new Ri.Ay({fill:new At.A({color:"transparent"}),stroke:new Pt.A({color:"yellow",width:2}),image:new Es.A({fill:new At.A({color:"transparent"}),stroke:new Pt.A({color:"yellow",width:2}),points:4,radius:5,angle:Math.PI/4})});let Ps=(()=>{class l{constructor(t,i,s,r){this.imageViewerPageStore=t,this.dicomwebService=i,this.olTileViewerElementRef=s,this.cdRef=r,this.ENABLE_SERVER_INTERPOLATION=Ts.c.ENABLE_SERVER_INTERPOLATION??!1,this.isThumbnail=!1,this.isLabelOrOverviewImage=!1,this.olMapLoaded=new v.bkB,this.addedInteraction=null,this.caseId="",this.olMap=null,this.isLoaded=!1,this.disableContextMenuEdit=!1,this.disableContextMenuModifyShapes=!1,this.slideOverviewOpened=!0,this.showXYZCoordinates=!1,this.magnificationLevel="0",this.isOverviewMapOpened=!1,this.iccProfile=vt.PQ.NONE,window.addEventListener("resize",()=>{this.updateTextBoxWidth()}),this.olMapLoaded.subscribe(()=>{this.isLoaded=!0,this.cdRef.detectChanges()}),this.ENABLE_SERVER_INTERPOLATION&&this.imageViewerPageStore.iccProfile$.subscribe(o=>{this.iccProfile=o??vt.PQ.NONE,this.setupViewer()}),this.imageViewerPageStore.showXYZCoordinates$.subscribe(o=>{this.showXYZCoordinates=o,this.setupDebugLayerVisibilty()})}ngOnChanges(){this.slideDescriptor&&this.slideInfo&&this.setupViewer()}setupViewer(){if(this.slideDescriptor&&this.slideInfo&&(this.resetDisplay(),this.slideInfo)){if(this.isLabelOrOverviewImage)return void this.drawImgLabel(this.slideInfo);if(this.slideInfo.isFlatImage)return void this.flatImage();if(this.isThumbnail)return void this.drawImgThumbnail(this.slideInfo);this.initializeOpenLayerSlideViewer(this.slideInfo)}}flatImage(){var t=this;if(!this.slideInfo)return;const i=this.slideInfo,s=[0,0,this.slideInfo.size.x??1024,this.slideInfo.size.y??968],r=new Y.MF({code:"flat-image",units:"pixels",extent:s}),a={url:"",projection:r,imageExtent:s,imageLoadFunction:function(){var N=(0,d.A)(function*(V,G){const S=V.getImage(),L=[...i.levelMap][0],H=L.properties[0].frames,z=L?.properties[0].instanceUid??"";t.dicomwebService.getEncodedImageTile(t.slideDescriptor?.id??"",z,H).subscribe(ye=>{const U=t.imageDataToImageUrl(ye);S instanceof HTMLImageElement&&(S.src=U)})});return function(G,S){return N.apply(this,arguments)}}()},m={extent:s,constrainOnlyCenter:!0,center:(0,_.q1)(s),zoom:.5,minZoom:.5,maxZoom:8,projection:r},p=new Z.Ay(m),x=new li({collapsed:!1,view:new Z.Ay(m),layers:[new pi({source:new xi(a)})]}),b=x.getOverviewMap().on("loadend",()=>{b&&(0,vi.e)(b);const[,,N,V]=s;this.setOverviewAspectRatio(`${N}/${V}`)}),R=new pi({source:new xi(a),properties:{name:"flat-image-layer",title:this.slideInfo?.slideName??""}});this.isThumbnail?(p.setMaxZoom(.5),this.olMap=new ut({layers:[R],controls:[],interactions:[],target:this.olMapContainer.nativeElement,view:p})):this.olMap=new ut({layers:[R],controls:[x],target:this.olMapContainer.nativeElement,view:p}),this.olMap?.once("postrender",N=>{this.olMapLoaded.emit(this.olMap)})}drawImgLabel(t){let i=t.associatedImages.find(o=>o.type===Jt.MV.LABEL);if(i||(i=t.associatedImages.find(o=>o.type===Jt.MV.OVERVIEW)),!i)return;const s=i?.instanceUid??"",r=this.slideDescriptor?.id??"";if(r&&s){const o=new Image;return o.className="thumbnail-image",this.dicomwebService.getImageSecondaryCapture(r,s,vt.jf.DEFAULT,this.iccProfile).subscribe(a=>{o.src=this.imageDataToImageUrl(a)}),this.olMapContainer.nativeElement.appendChild(o),void this.olMapLoaded.emit(this.olMap)}}drawImgThumbnail(t){const i=t.associatedImages.find(o=>o.type===Jt.MV.THUMBNAIL);if(!i)return this.initializeOpenLayerSlideViewer(t),void this.olMapLoaded.emit(this.olMap);const s=i?.instanceUid??"",r=this.slideDescriptor?.id??"";if(r&&s){const o=new Image;return o.className="thumbnail-image",this.dicomwebService.getImageSecondaryCapture(r,s,vt.jf.DEFAULT,this.iccProfile).subscribe(a=>{o.src=this.imageDataToImageUrl(a)}),this.olMapContainer.nativeElement.appendChild(o),void this.olMapLoaded.emit(this.olMap)}}getAllCoordinates(){const t=this.olMap?.getAllLayers()??[];if(2!==t.length)return;const i=t.find(r=>"draw-layer"===r.get("name"));return i?i.getSource()?.getFeatures()?.map(r=>r.getGeometry().getCoordinates()):void 0}initializeOpenLayerSlideViewer(t){let i=[],s=[];t.levelMap.forEach(U=>{i.push(U.width*U.pixelWidth*.001/U.width),s.push(U.tileSize)}),i=i.reverse(),s=s.reverse();const r=t.levelMap[t.levelMap.length-1],o={x:r.width*r.pixelWidth*.001,y:r.height*r.pixelHeight*.001},a=[0,-o.y,o.x,0],c=new Yt({extent:a,resolutions:i,tileSizes:s,origin:[0,0]}),p=new Y.MF({code:"custom-image",units:"m",extent:a}),x=new _n({units:"metric",bar:!0,text:!0,minWidth:140}),b=new wi({tileGrid:c,tileLoadFunction:U=>{const[le,be,Re]=U.tileCoord,se=[...t.levelMap].reverse()[le],{tileSize:Ke}=se,Oe=Math.ceil(Number(se?.width)/Ke),re=Math.ceil(Number(se?.height)/Ke),Ue=be+1+Oe*Re;Ue>Oe*re&&U.setState(ee.A.ERROR);const tt=se?.properties[0].instanceUid??"",Ye=se.downSampleMultiplier??0,Ae=Re+1===re&&se.height%se.tileSize!=0,Fe=be+1===Oe&&se.width%se.tileSize!=0;this.dicomwebService.getEncodedImageTile(this.slideDescriptor?.id??"",tt,Ue,Ye,this.iccProfile).pipe((0,xs.M)(fe=>{const Ee=this.imageDataToImageUrl(fe);U instanceof zt.A&&(Ae||Fe?this.cropTile(se,Ee,U,Fe,Ae):U.getImage().src=Ee)}),(0,bs.W)(fe=>(U.setState(ee.A.ERROR),fe))).subscribe()},tileUrlFunction:()=>"",projection:p}),R=new Bt({preload:3,source:b,properties:{name:"slide-layer",title:this.slideInfo?.slideName??""}}),N=new li({collapsed:!1,view:new Z.Ay({resolutions:[c.getResolution(0)],extent:a,projection:p,maxZoom:0,minZoom:0,zoom:0}),layers:[new Bt({source:b})]}),V=new Bt({source:new vs({tileGrid:c,projection:p}),properties:{name:"debug-layer"}}),G=new Ii.A({wrapX:!1}),S=new _i.A({source:G,style:[Mi],properties:{name:"draw-layer",title:"Annotations"}});S.setZIndex(100);const K=new Ii.A({wrapX:!1}),L=new _i.A({source:K,style:[Pi],properties:{name:"measure-layer"}});let z;if(this.isThumbnail)return void(z=new ut({target:this.olMapContainer.nativeElement,layers:[R],controls:[],interactions:[],view:new Z.Ay({resolutions:i,extent:a,constrainOnlyCenter:!0,center:(0,_.q1)(a),zoom:0,minZoom:0,maxZoom:0,projection:p})}));z=new ut({target:this.olMapContainer.nativeElement,controls:ii().extend([x]),layers:[R,V,S,L],view:new Z.Ay({resolutions:i,extent:a,constrainOnlyCenter:!0,center:(0,_.q1)(a),zoom:.75,minZoom:0,projection:p})});const de=new yn({coordinateFormat:U=>U?(U[0]=1e3*U[0],U[1]=1e3*U[1],(0,D.GP)(U,"{x}mm, {y}mm",2)):"",projection:p}),ye=new Rn({replace:!0,params:["x","y","z","r"]});z.addControl(de),z.addInteraction(ye),z.addInteraction(new Pn),z.addControl(new Tn),this.olMap=z,this.olMap?.once("postrender",U=>{this.olMapLoaded.emit(this.olMap);const le=N.getOverviewMap(),be=le.on("loadend",Ze=>{be&&(0,vi.e)(be),this.setOverviewAspectRatio(`${t.levelMap[0].width}/${t.levelMap[0].height}`),this.handleOverviewMapExpanding(le)});let Re=this.olMap?.getView().getResolution();Re&&(this.magnificationLevel=this.convertDecimalToFraction((0,Ai.FP)(Re)),this.cdRef.detectChanges()),this.olMap?.on("moveend",Ze=>{const se=this.olMap?.getView().getResolution()??0;(Re!==se||!this.magnificationLevel)&&(Re=se,this.magnificationLevel=this.convertDecimalToFraction((0,Ai.FP)(se)),this.cdRef.detectChanges())})}),this.setupDebugLayerVisibilty()}setupDebugLayerVisibilty(){this.olMap&&this.olMap.getAllLayers().find(i=>"debug-layer"===i.get("name"))?.setVisible(this.showXYZCoordinates)}convertDecimalToFraction(t){return this.decimalToFraction(t)}getInitialZoomByContainer(t){const i=this.olMapContainer.nativeElement.offsetHeight,s=this.olMapContainer.nativeElement.offsetWidth,r=[...t].reverse();let o=0;for(let a=0;a{let m=t.width;r&&(m=t.width%t.tileSize);let p=t.height;o&&(p=t.height%t.tileSize),u.drawImage(a,0,0,m,p,0,0,m,p),s.setImage(c)},a.src=i}handleOverviewMapExpanding(t){this.updateTextBoxWidth(),t.on("change:size",i=>{const s=this.olTileViewerElementRef.nativeElement.querySelector(".ol-overviewmap.ol-unselectable.ol-control");s&&(this.isOverviewMapOpened=!s.classList.contains("ol-collapsed"),this.isOverviewMapOpened&&this.updateTextBoxWidth(),this.cdRef.detectChanges())})}updateTextBoxWidth(){const t=this.olTileViewerElementRef.nativeElement.querySelector(".ol-overviewmap"),i=this.olTileViewerElementRef.nativeElement.querySelector(".zoom-level-label");i&&t&&(i.style.width=t.offsetWidth-2+"px",i.style.top=`${t.clientHeight+t.offsetTop+5}px`,i.style.display="grid")}resetDisplay(){this.olMapContainer.nativeElement.innerHTML=""}setOverviewAspectRatio(t="1/1"){const i=this.olTileViewerElementRef.nativeElement.querySelector(".ol-overviewmap");i&&(i.style.aspectRatio=t)}imageDataToImageUrl(t,i=vt.jf.WEBP){return`data:${i};base64,${t}`}static{this.\u0275fac=function(i){return new(i||l)(v.rXU(Cs.y),v.rXU(ws.w),v.rXU(v.aKT),v.rXU(v.gRc))}}static{this.\u0275cmp=v.VBU({type:l,selectors:[["ol-tile-viewer"]],viewQuery:function(i,s){if(1&i&&v.GBs(Is,7),2&i){let r;v.mGM(r=v.lsd())&&(s.olMapContainer=r.first)}},inputs:{slideDescriptor:"slideDescriptor",slideInfo:"slideInfo",isThumbnail:"isThumbnail",isLabelOrOverviewImage:"isLabelOrOverviewImage"},outputs:{olMapLoaded:"olMapLoaded"},features:[v.OA$],decls:3,vars:4,consts:[["olMapContainer",""],[1,"ol-map",3,"contextmenu","ngClass"],["class","zoom-level-label",3,"display",4,"ngIf"],[1,"zoom-level-label"]],template:function(i,s){if(1&i){const r=v.RV6();v.j41(0,"div",1,0),v.bIt("contextmenu",function(a){return v.eBV(r),v.Njj(a.preventDefault())}),v.k0s(),v.DNE(2,As,2,3,"div",2)}2&i&&(v.Y8G("ngClass",v.eq3(2,Rs,!s.isLoaded)),v.R7$(2),v.Y8G("ngIf",s.olMap&&!(null!=s.slideInfo&&s.slideInfo.isFlatImage)))},dependencies:[$.MD,$.YU,$.bT],styles:['[_nghost-%COMP%]{position:relative}.zoom-level-label[_ngcontent-%COMP%]{display:none;position:absolute;color:#212121;text-align:center;background:#fff;border:1px solid #1976d2;top:13em;right:1em}.ol-map[_ngcontent-%COMP%]{height:100%;background:#d3d3d3;background-image:linear-gradient(#eee 1px,transparent 0),linear-gradient(90deg,#eee 1px,transparent 0);background-size:100px 100px,100px 100px,20px 20px,20px 20px;position:relative}.loading-skeleton[_ngcontent-%COMP%]{background:linear-gradient(90deg,#d9d9d9 8%,#f5f5f5 18%,#d9d9d9 33%);border-radius:5px;background-size:200% 100%;animation:1.5s _ngcontent-%COMP%_shine linear infinite;z-index:2}@keyframes _ngcontent-%COMP%_shine{to{background-position-x:-200%}} :root, -shadowcsshost-no-combinator{--ol-background-color: white;--ol-accent-background-color: #f5f5f5;--ol-subtle-background-color: rgba(128, 128, 128, .25);--ol-partial-background-color: rgba(255, 255, 255, .75);--ol-foreground-color: #333;--ol-subtle-foreground-color: #1976d2;--ol-brand-color: #0af} .ol-tooltip{position:relative;background:#00000080;border-radius:4px;color:#fff;padding:4px 8px;opacity:.7;white-space:nowrap;font-size:12px;cursor:default;-webkit-user-select:none;user-select:none} .ol-tooltip-measure{opacity:1;font-weight:700} .ol-tooltip-static{background-color:#fc3;color:#000;border:1px solid white} .ol-tooltip-measure:before, .ol-tooltip-static:before{border-top:6px solid rgba(0,0,0,.5);border-right:6px solid transparent;border-left:6px solid transparent;content:"";position:absolute;bottom:-6px;margin-left:-7px;left:50%} .ol-tooltip-static:before{border-top-color:#fc3} .thumbnail-image{height:100%;width:100%;object-fit:cover} .ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)} .ol-mouse-position{bottom:5em;right:8px;position:absolute;color:#5f6368;font-size:.7em} .ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute} .ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s} .ol-scale-bar{position:absolute;bottom:8px;right:1em} .ol-scale-bar-inner{display:flex} .ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10} .ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)} .ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)} .ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)} .ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)} .ol-scale-singlebar-odd{background-color:var(--ol-background-color)} .ol-unsupported{display:none} .ol-viewport, .ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent} .ol-viewport canvas{all:unset} .ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text} .ol-grabbing{cursor:grabbing} .ol-grab{cursor:move;cursor:grab} .ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px} .ol-zoom{bottom:5em;right:.5em;display:grid;grid-template-columns:1fr 1fr;gap:.2em} .ol-rotate{bottom:5em;right:4em;transition:opacity .25s linear,visibility 0s linear} .ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s} .ol-zoom-extent{top:4.643em;left:.5em} .ol-full-screen{bottom:7em;right:.5em} .ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px} .ol-control button::-moz-focus-inner{border:none;padding:0} .ol-zoom-extent button{line-height:1.4em} .ol-compass{display:block;font-weight:400;will-change:transform} .ol-touch .ol-control button{font-size:1.5em} .ol-touch .ol-zoom-extent{top:5.5em} .ol-control button:hover, .ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)} .ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0} .ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px} .ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center} .ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none} .ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px} .ol-attribution li{display:inline;list-style:none} .ol-attribution li:not(:last-child):after{content:" "} .ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle} .ol-attribution button{flex-shrink:0} .ol-attribution.ol-collapsed ul{display:none} .ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)} .ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0} .ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em} .ol-attribution.ol-uncollapsible button{display:none} .ol-zoomslider{top:4.5em;left:.5em;height:200px} .ol-zoomslider button{position:relative;height:10px} .ol-touch .ol-zoomslider{top:5.5em} .ol-overviewmap{top:1em;right:1em;height:25%;aspect-ratio:3/2} .ol-overviewmap.ol-unselectable.ol-control.ol-collapsed{height:unset} .ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0} .ol-overviewmap .ol-overviewmap-map, .ol-overviewmap button{display:block} .ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:100%;width:100%} .ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute} .ol-overviewmap.ol-collapsed .ol-overviewmap-map, .ol-overviewmap.ol-uncollapsible button{display:none} .ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)} .ol-overviewmap-box{border:2px solid #1976d2} .ol-overviewmap .ol-overviewmap-box:hover{cursor:move}']})}}return l})()},6211:(De,oe,h)=>{h.d(oe,{CB:()=>B,FP:()=>Q});const Z=[100,80,40,20,10,5,2.5,5/4,1,5/8,5/16,5/32,5/64,5/128,0];function Q(M){return B(1e3*M)}function B(M){if(M<=0)return 0;const J=.01/M;return Z.reduce((ae,y)=>Math.abs(y-J){h.d(oe,{u:()=>$});var d=h(6354);function $(v){return(0,d.T)(()=>v)}},9631:(De,oe,h)=>{h.d(oe,{fg:()=>ge,fS:()=>Ie});var d=h(4085),$=h(6860),v=h(4438),Z=h(9046),Q=h(983),B=h(1413);let M=(()=>{class C{static \u0275fac=function(n){return new(n||C)};static \u0275cmp=v.VBU({type:C,selectors:[["ng-component"]],hostAttrs:["cdk-text-field-style-loader",""],decls:0,vars:0,template:function(n,E){},styles:["textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0 !important;box-sizing:content-box !important;height:auto !important;overflow:hidden !important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0 !important;box-sizing:content-box !important;height:0 !important}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}"],encapsulation:2,changeDetection:0})}return C})();const J=(0,$.BQ)({passive:!0});let pe=(()=>{class C{_platform=(0,v.WQX)($.OD);_ngZone=(0,v.WQX)(v.SKi);_styleLoader=(0,v.WQX)(Z.l);_monitoredElements=new Map;constructor(){}monitor(g){if(!this._platform.isBrowser)return Q.w;this._styleLoader.load(M);const n=(0,d.i8)(g),E=this._monitoredElements.get(n);if(E)return E.subject;const A=new B.B,T="cdk-text-field-autofilled",he=Te=>{"cdk-text-field-autofill-start"!==Te.animationName||n.classList.contains(T)?"cdk-text-field-autofill-end"===Te.animationName&&n.classList.contains(T)&&(n.classList.remove(T),this._ngZone.run(()=>A.next({target:Te.target,isAutofilled:!1}))):(n.classList.add(T),this._ngZone.run(()=>A.next({target:Te.target,isAutofilled:!0})))};return this._ngZone.runOutsideAngular(()=>{n.addEventListener("animationstart",he,J),n.classList.add("cdk-text-field-autofill-monitored")}),this._monitoredElements.set(n,{subject:A,unlisten:()=>{n.removeEventListener("animationstart",he,J)}}),A}stopMonitoring(g){const n=(0,d.i8)(g),E=this._monitoredElements.get(n);E&&(E.unlisten(),E.subject.complete(),n.classList.remove("cdk-text-field-autofill-monitored"),n.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(n))}ngOnDestroy(){this._monitoredElements.forEach((g,n)=>this.stopMonitoring(n))}static \u0275fac=function(n){return new(n||C)};static \u0275prov=v.jDH({token:C,factory:C.\u0275fac,providedIn:"root"})}return C})(),O=(()=>{class C{static \u0275fac=function(n){return new(n||C)};static \u0275mod=v.$C({type:C});static \u0275inj=v.G2t({})}return C})();var _=h(9888),q=h(9417),I=h(3),D=h(2408);const ne=new v.nKC("MAT_INPUT_VALUE_ACCESSOR"),xe=["button","checkbox","file","hidden","image","radio","range","reset","submit"],me=new v.nKC("MAT_INPUT_CONFIG");let ge=(()=>{class C{_elementRef=(0,v.WQX)(v.aKT);_platform=(0,v.WQX)($.OD);ngControl=(0,v.WQX)(q.vO,{optional:!0,self:!0});_autofillMonitor=(0,v.WQX)(pe);_ngZone=(0,v.WQX)(v.SKi);_formField=(0,v.WQX)(D.xb,{optional:!0});_renderer=(0,v.WQX)(v.sFG);_uid=(0,v.WQX)(_.g7).getId("mat-input-");_previousNativeValue;_inputValueAccessor;_signalBasedValueAccessor;_previousPlaceholder;_errorStateTracker;_config=(0,v.WQX)(me,{optional:!0});_cleanupIosKeyup;_cleanupWebkitWheel;_formFieldDescribedBy;_isServer;_isNativeSelect;_isTextarea;_isInFormField;focused=!1;stateChanges=new B.B;controlType="mat-input";autofilled=!1;get disabled(){return this._disabled}set disabled(g){this._disabled=(0,d.he)(g),this.focused&&(this.focused=!1,this.stateChanges.next())}_disabled=!1;get id(){return this._id}set id(g){this._id=g||this._uid}_id;placeholder;name;get required(){return this._required??this.ngControl?.control?.hasValidator(q.k0.required)??!1}set required(g){this._required=(0,d.he)(g)}_required;get type(){return this._type}set type(g){const n=this._type;this._type=g||"text",this._validateType(),!this._isTextarea&&(0,$.MU)().has(this._type)&&(this._elementRef.nativeElement.type=this._type),this._type!==n&&this._ensureWheelDefaultBehavior()}_type="text";get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(g){this._errorStateTracker.matcher=g}userAriaDescribedBy;get value(){return this._signalBasedValueAccessor?this._signalBasedValueAccessor.value():this._inputValueAccessor.value}set value(g){g!==this.value&&(this._signalBasedValueAccessor?this._signalBasedValueAccessor.value.set(g):this._inputValueAccessor.value=g,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(g){this._readonly=(0,d.he)(g)}_readonly=!1;disabledInteractive;get errorState(){return this._errorStateTracker.errorState}set errorState(g){this._errorStateTracker.errorState=g}_neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(g=>(0,$.MU)().has(g));constructor(){const g=(0,v.WQX)(q.cV,{optional:!0}),n=(0,v.WQX)(q.j4,{optional:!0}),E=(0,v.WQX)(I.es),A=(0,v.WQX)(ne,{optional:!0,self:!0}),T=this._elementRef.nativeElement,he=T.nodeName.toLowerCase();A?(0,v.Hps)(A.value)?this._signalBasedValueAccessor=A:this._inputValueAccessor=A:this._inputValueAccessor=T,this._previousNativeValue=this.value,this.id=this.id,this._platform.IOS&&this._ngZone.runOutsideAngular(()=>{this._cleanupIosKeyup=this._renderer.listen(T,"keyup",this._iOSKeyupListener)}),this._errorStateTracker=new I.X0(E,this.ngControl,n,g,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect="select"===he,this._isTextarea="textarea"===he,this._isInFormField=!!this._formField,this.disabledInteractive=this._config?.disabledInteractive||!1,this._isNativeSelect&&(this.controlType=T.multiple?"mat-native-select-multiple":"mat-native-select"),this._signalBasedValueAccessor&&(0,v.QZP)(()=>{this._signalBasedValueAccessor.value(),this.stateChanges.next()})}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(g=>{this.autofilled=g.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._cleanupIosKeyup?.(),this._cleanupWebkitWheel?.()}ngDoCheck(){this.ngControl&&(this.updateErrorState(),null!==this.ngControl.disabled&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(g){this._elementRef.nativeElement.focus(g)}updateErrorState(){this._errorStateTracker.updateErrorState()}_focusChanged(g){if(g!==this.focused){if(!this._isNativeSelect&&g&&this.disabled&&this.disabledInteractive){const n=this._elementRef.nativeElement;"number"===n.type?(n.type="text",n.setSelectionRange(0,0),n.type="number"):n.setSelectionRange(0,0)}this.focused=g,this.stateChanges.next()}}_onInput(){}_dirtyCheckNativeValue(){const g=this._elementRef.nativeElement.value;this._previousNativeValue!==g&&(this._previousNativeValue=g,this.stateChanges.next())}_dirtyCheckPlaceholder(){const g=this._getPlaceholder();if(g!==this._previousPlaceholder){const n=this._elementRef.nativeElement;this._previousPlaceholder=g,g?n.setAttribute("placeholder",g):n.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){xe.indexOf(this._type)}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let g=this._elementRef.nativeElement.validity;return g&&g.badInput}get empty(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}get shouldLabelFloat(){if(this._isNativeSelect){const g=this._elementRef.nativeElement,n=g.options[0];return this.focused||g.multiple||!this.empty||!!(g.selectedIndex>-1&&n&&n.label)}return this.focused&&!this.disabled||!this.empty}setDescribedByIds(g){const n=this._elementRef.nativeElement,E=n.getAttribute("aria-describedby");let A;if(E){const T=this._formFieldDescribedBy||g;A=g.concat(E.split(" ").filter(he=>he&&!T.includes(he)))}else A=g;this._formFieldDescribedBy=g,A.length?n.setAttribute("aria-describedby",A.join(" ")):n.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){const g=this._elementRef.nativeElement;return this._isNativeSelect&&(g.multiple||g.size>1)}_iOSKeyupListener=g=>{const n=g.target;!n.value&&0===n.selectionStart&&0===n.selectionEnd&&(n.setSelectionRange(1,1),n.setSelectionRange(0,0))};_webkitBlinkWheelListener=()=>{};_ensureWheelDefaultBehavior(){this._cleanupWebkitWheel?.(),"number"===this._type&&(this._platform.BLINK||this._platform.WEBKIT)&&(this._cleanupWebkitWheel=this._renderer.listen(this._elementRef.nativeElement,"wheel",this._webkitBlinkWheelListener))}_getReadonlyAttribute(){return this._isNativeSelect?null:this.readonly||this.disabled&&this.disabledInteractive?"true":null}static \u0275fac=function(n){return new(n||C)};static \u0275dir=v.FsC({type:C,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:21,hostBindings:function(n,E){1&n&&v.bIt("focus",function(){return E._focusChanged(!0)})("blur",function(){return E._focusChanged(!1)})("input",function(){return E._onInput()}),2&n&&(v.Mr5("id",E.id)("disabled",E.disabled&&!E.disabledInteractive)("required",E.required),v.BMQ("name",E.name||null)("readonly",E._getReadonlyAttribute())("aria-disabled",E.disabled&&E.disabledInteractive?"true":null)("aria-invalid",E.empty&&E.required?null:E.errorState)("aria-required",E.required)("id",E.id),v.AVh("mat-input-server",E._isServer)("mat-mdc-form-field-textarea-control",E._isInFormField&&E._isTextarea)("mat-mdc-form-field-input-control",E._isInFormField)("mat-mdc-input-disabled-interactive",E.disabledInteractive)("mdc-text-field__input",E._isInFormField)("mat-mdc-native-select-inline",E._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly",disabledInteractive:[2,"disabledInteractive","disabledInteractive",v.L39]},exportAs:["matInput"],features:[v.Jv_([{provide:D.qT,useExisting:C}]),v.GFd,v.OA$]})}return C})(),Ie=(()=>{class C{static \u0275fac=function(n){return new(n||C)};static \u0275mod=v.$C({type:C});static \u0275inj=v.G2t({imports:[I.yE,D.RG,D.RG,O,I.yE]})}return C})()},9183:(De,oe,h)=>{h.d(oe,{D6:()=>O,LG:()=>ae});var d=h(4438),$=h(177),v=h(3);const Z=["determinateSpinner"];function Q(_,q){if(1&_&&(d.qSk(),d.j41(0,"svg",11),d.nrm(1,"circle",12),d.k0s()),2&_){const I=d.XpG();d.BMQ("viewBox",I._viewBox()),d.R7$(),d.xc7("stroke-dasharray",I._strokeCircumference(),"px")("stroke-dashoffset",I._strokeCircumference()/2,"px")("stroke-width",I._circleStrokeWidth(),"%"),d.BMQ("r",I._circleRadius())}}const B=new d.nKC("mat-progress-spinner-default-options",{providedIn:"root",factory:function M(){return{diameter:J}}}),J=100;let ae=(()=>{class _{_elementRef=(0,d.WQX)(d.aKT);_noopAnimations;get color(){return this._color||this._defaultColor}set color(I){this._color=I}_color;_defaultColor="primary";_determinateCircle;constructor(){const I=(0,d.WQX)(d.bc$,{optional:!0}),D=(0,d.WQX)(B);this._noopAnimations="NoopAnimations"===I&&!!D&&!D._forceAnimations,this.mode="mat-spinner"===this._elementRef.nativeElement.nodeName.toLowerCase()?"indeterminate":"determinate",D&&(D.color&&(this.color=this._defaultColor=D.color),D.diameter&&(this.diameter=D.diameter),D.strokeWidth&&(this.strokeWidth=D.strokeWidth))}mode;get value(){return"determinate"===this.mode?this._value:0}set value(I){this._value=Math.max(0,Math.min(100,I||0))}_value=0;get diameter(){return this._diameter}set diameter(I){this._diameter=I||0}_diameter=J;get strokeWidth(){return this._strokeWidth??this.diameter/10}set strokeWidth(I){this._strokeWidth=I||0}_strokeWidth;_circleRadius(){return(this.diameter-10)/2}_viewBox(){const I=2*this._circleRadius()+this.strokeWidth;return`0 0 ${I} ${I}`}_strokeCircumference(){return 2*Math.PI*this._circleRadius()}_strokeDashOffset(){return"determinate"===this.mode?this._strokeCircumference()*(100-this._value)/100:null}_circleStrokeWidth(){return this.strokeWidth/this.diameter*100}static \u0275fac=function(D){return new(D||_)};static \u0275cmp=d.VBU({type:_,selectors:[["mat-progress-spinner"],["mat-spinner"]],viewQuery:function(D,X){if(1&D&&d.GBs(Z,5),2&D){let ne;d.mGM(ne=d.lsd())&&(X._determinateCircle=ne.first)}},hostAttrs:["role","progressbar","tabindex","-1",1,"mat-mdc-progress-spinner","mdc-circular-progress"],hostVars:18,hostBindings:function(D,X){2&D&&(d.BMQ("aria-valuemin",0)("aria-valuemax",100)("aria-valuenow","determinate"===X.mode?X.value:null)("mode",X.mode),d.HbH("mat-"+X.color),d.xc7("width",X.diameter,"px")("height",X.diameter,"px")("--mdc-circular-progress-size",X.diameter+"px")("--mdc-circular-progress-active-indicator-width",X.diameter+"px"),d.AVh("_mat-animation-noopable",X._noopAnimations)("mdc-circular-progress--indeterminate","indeterminate"===X.mode))},inputs:{color:"color",mode:"mode",value:[2,"value","value",d.Udg],diameter:[2,"diameter","diameter",d.Udg],strokeWidth:[2,"strokeWidth","strokeWidth",d.Udg]},exportAs:["matProgressSpinner"],features:[d.GFd],decls:14,vars:11,consts:[["circle",""],["determinateSpinner",""],["aria-hidden","true",1,"mdc-circular-progress__determinate-container"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__determinate-circle-graphic"],["cx","50%","cy","50%",1,"mdc-circular-progress__determinate-circle"],["aria-hidden","true",1,"mdc-circular-progress__indeterminate-container"],[1,"mdc-circular-progress__spinner-layer"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-left"],[3,"ngTemplateOutlet"],[1,"mdc-circular-progress__gap-patch"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-right"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__indeterminate-circle-graphic"],["cx","50%","cy","50%"]],template:function(D,X){if(1&D&&(d.DNE(0,Q,2,8,"ng-template",null,0,d.C5r),d.j41(2,"div",2,1),d.qSk(),d.j41(4,"svg",3),d.nrm(5,"circle",4),d.k0s()(),d.joV(),d.j41(6,"div",5)(7,"div",6)(8,"div",7),d.eu8(9,8),d.k0s(),d.j41(10,"div",9),d.eu8(11,8),d.k0s(),d.j41(12,"div",10),d.eu8(13,8),d.k0s()()()),2&D){const ne=d.sdS(1);d.R7$(4),d.BMQ("viewBox",X._viewBox()),d.R7$(),d.xc7("stroke-dasharray",X._strokeCircumference(),"px")("stroke-dashoffset",X._strokeDashOffset(),"px")("stroke-width",X._circleStrokeWidth(),"%"),d.BMQ("r",X._circleRadius()),d.R7$(4),d.Y8G("ngTemplateOutlet",ne),d.R7$(2),d.Y8G("ngTemplateOutlet",ne),d.R7$(2),d.Y8G("ngTemplateOutlet",ne)}},dependencies:[$.T3],styles:[".mat-mdc-progress-spinner{display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity 250ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-progress-spinner circle{stroke-width:var(--mdc-circular-progress-active-indicator-width, 4px)}.mat-mdc-progress-spinner._mat-animation-noopable,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__determinate-circle{transition:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__spinner-layer,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container{animation:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container circle{stroke-dasharray:0 !important}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle{stroke:currentColor;stroke:CanvasText}}.mdc-circular-progress__determinate-container,.mdc-circular-progress__indeterminate-circle-graphic,.mdc-circular-progress__indeterminate-container,.mdc-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}.mdc-circular-progress__determinate-container{transform:rotate(-90deg)}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{opacity:0}.mdc-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{opacity:1;animation:mdc-circular-progress-container-rotate 1568.2352941176ms linear infinite}.mdc-circular-progress__determinate-circle-graphic,.mdc-circular-progress__indeterminate-circle-graphic{fill:rgba(0,0,0,0)}.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--mdc-circular-progress-active-indicator-color, var(--mat-sys-primary))}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}.mdc-circular-progress__determinate-circle{transition:stroke-dashoffset 500ms cubic-bezier(0, 0, 0.2, 1)}.mdc-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{left:-100%}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.mdc-circular-progress--indeterminate .mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}@keyframes mdc-circular-progress-left-spin{from{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes mdc-circular-progress-right-spin{from{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}"],encapsulation:2,changeDetection:0})}return _})(),O=(()=>{class _{static \u0275fac=function(D){return new(D||_)};static \u0275mod=d.$C({type:_});static \u0275inj=d.G2t({imports:[v.yE]})}return _})()},8066:(De,oe,h)=>{h.d(oe,{A:()=>v});var d=h(9136);const v=class $ extends d.A{constructor(Q,B,M,J,pe,ae){super(Q,B,pe),this.originalEvent=M,this.pixel_=null,this.coordinate_=null,this.dragging=void 0!==J&&J,this.activePointers=ae}get pixel(){return this.pixel_||(this.pixel_=this.map.getEventPixel(this.originalEvent)),this.pixel_}set pixel(Q){this.pixel_=Q}get coordinate(){return this.coordinate_||(this.coordinate_=this.map.getCoordinateFromPixel(this.pixel)),this.coordinate_}set coordinate(Q){this.coordinate_=Q}preventDefault(){super.preventDefault(),"preventDefault"in this.originalEvent&&this.originalEvent.preventDefault()}stopPropagation(){super.stopPropagation(),"stopPropagation"in this.originalEvent&&this.originalEvent.stopPropagation()}}},9136:(De,oe,h)=>{h.d(oe,{A:()=>v});var d=h(4888);const v=class $ extends d.Ay{constructor(Q,B,M){super(Q),this.map=B,this.frameState=void 0!==M?M:null}}},3035:(De,oe,h)=>{h.d(oe,{A:()=>d});const d={POSTRENDER:"postrender",MOVESTART:"movestart",MOVEEND:"moveend",LOADSTART:"loadstart",LOADEND:"loadend"}},9200:(De,oe,h)=>{h.d(oe,{A:()=>pe});var d=h(4037),$=h(3035),v=h(215),Z=h(4378),Q=h(7443),B=h(5664);const pe=class J extends d.A{constructor(y){super(),this.options=y,this.id=y.id,this.insertFirst=void 0===y.insertFirst||y.insertFirst,this.stopEvent=void 0===y.stopEvent||y.stopEvent,this.element=document.createElement("div"),this.element.className=void 0!==y.className?y.className:"ol-overlay-container "+v.Q5,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.autoPan=!0===y.autoPan?{}:y.autoPan||void 0,this.rendered={transform_:"",visible:!0},this.mapPostrenderListenerKey=null,this.addChangeListener("element",this.handleElementChanged),this.addChangeListener("map",this.handleMapChanged),this.addChangeListener("offset",this.handleOffsetChanged),this.addChangeListener("position",this.handlePositionChanged),this.addChangeListener("positioning",this.handlePositioningChanged),void 0!==y.element&&this.setElement(y.element),this.setOffset(void 0!==y.offset?y.offset:[0,0]),this.setPositioning(y.positioning||"top-left"),void 0!==y.position&&this.setPosition(y.position)}getElement(){return this.get("element")}getId(){return this.id}getMap(){return this.get("map")||null}getOffset(){return this.get("offset")}getPosition(){return this.get("position")}getPositioning(){return this.get("positioning")}handleElementChanged(){(0,B.gS)(this.element);const y=this.getElement();y&&this.element.appendChild(y)}handleMapChanged(){this.mapPostrenderListenerKey&&((0,B.bf)(this.element),(0,Q.JH)(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);const y=this.getMap();if(y){this.mapPostrenderListenerKey=(0,Q.KT)(y,$.A.POSTRENDER,this.render,this),this.updatePixelPosition();const O=this.stopEvent?y.getOverlayContainerStopEvent():y.getOverlayContainer();this.insertFirst?O.insertBefore(this.element,O.childNodes[0]||null):O.appendChild(this.element),this.performAutoPan()}}render(){this.updatePixelPosition()}handleOffsetChanged(){this.updatePixelPosition()}handlePositionChanged(){this.updatePixelPosition(),this.performAutoPan()}handlePositioningChanged(){this.updatePixelPosition()}setElement(y){this.set("element",y)}setMap(y){this.set("map",y)}setOffset(y){this.set("offset",y)}setPosition(y){this.set("position",y)}performAutoPan(){this.autoPan&&this.panIntoView(this.autoPan)}panIntoView(y){const O=this.getMap();if(!O||!O.getTargetElement()||!this.get("position"))return;const _=this.getRect(O.getTargetElement(),O.getSize()),q=this.getElement(),I=this.getRect(q,[(0,B.Gq)(q),(0,B.DK)(q)]),D=void 0===(y=y||{}).margin?20:y.margin;if(!(0,Z.ms)(_,I)){const X=I[0]-_[0],ne=_[2]-I[2],xe=I[1]-_[1],me=_[3]-I[3],ge=[0,0];if(X<0?ge[0]=X-D:ne<0&&(ge[0]=Math.abs(ne)+D),xe<0?ge[1]=xe-D:me<0&&(ge[1]=Math.abs(me)+D),0!==ge[0]||0!==ge[1]){const Ie=O.getView().getCenterInternal(),C=O.getPixelFromCoordinateInternal(Ie);if(!C)return;const j=[C[0]+ge[0],C[1]+ge[1]],g=y.animation||{};O.getView().animateInternal({center:O.getCoordinateFromPixelInternal(j),duration:g.duration,easing:g.easing})}}}getRect(y,O){const _=y.getBoundingClientRect(),q=_.left+window.pageXOffset,I=_.top+window.pageYOffset;return[q,I,q+O[0],I+O[1]]}setPositioning(y){this.set("positioning",y)}setVisible(y){this.rendered.visible!==y&&(this.element.style.display=y?"":"none",this.rendered.visible=y)}updatePixelPosition(){const y=this.getMap(),O=this.getPosition();if(!y||!y.isRendered()||!O)return void this.setVisible(!1);const _=y.getPixelFromCoordinate(O),q=y.getSize();this.updateRenderedPosition(_,q)}updateRenderedPosition(y,O){const _=this.element.style,q=this.getOffset(),I=this.getPositioning();this.setVisible(!0);let ne="0%",xe="0%";"bottom-right"==I||"center-right"==I||"top-right"==I?ne="-100%":("bottom-center"==I||"center-center"==I||"top-center"==I)&&(ne="-50%"),"bottom-left"==I||"bottom-center"==I||"bottom-right"==I?xe="-100%":("center-left"==I||"center-center"==I||"center-right"==I)&&(xe="-50%");const me=`translate(${ne}, ${xe}) translate(${Math.round(y[0]+q[0])+"px"}, ${Math.round(y[1]+q[1])+"px"})`;this.rendered.transform_!=me&&(this.rendered.transform_=me,_.transform=me)}getOptions(){return this.options}}}}]); \ No newline at end of file diff --git a/web/assets/background_centroids_500_v3.bin b/web/assets/background_centroids_500_v3.bin new file mode 100644 index 0000000000000000000000000000000000000000..1917a9e84aef73f7bc56b69111e89e301ccfdf89 --- /dev/null +++ b/web/assets/background_centroids_500_v3.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ec4e4ef5616bea781c693713ab9b62bccf933730045fc5fc4f425977c15a3d0 +size 768000 diff --git a/web/assets/background_cluster_sd_500_v3.bin b/web/assets/background_cluster_sd_500_v3.bin new file mode 100644 index 0000000000000000000000000000000000000000..426793fdae7b04d599e821a3e2b84fcc2206bee1 --- /dev/null +++ b/web/assets/background_cluster_sd_500_v3.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c19bafb9ce8f058e1a5b80cd4d9bb753f07bd1377cf93cd2d0428c418fc59607 +size 768000 diff --git a/web/assets/base_centroids_500_v3.bin b/web/assets/base_centroids_500_v3.bin new file mode 100644 index 0000000000000000000000000000000000000000..6b908477440dcc75dbb9a86cf34de8b98f74d7f8 --- /dev/null +++ b/web/assets/base_centroids_500_v3.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0274e7725d64c16efcd41bd4dfa0961da111c561c0e4abe711d1ebd7033ac765 +size 768000 diff --git a/web/assets/classifier-screenshot.jpg b/web/assets/classifier-screenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dda1eb31c31e055ccb485533e8794f21bd96798e Binary files /dev/null and b/web/assets/classifier-screenshot.jpg differ diff --git a/web/assets/classifier.gif b/web/assets/classifier.gif new file mode 100644 index 0000000000000000000000000000000000000000..c197343f5c1cc1d14c49549f2f37966f43734baf --- /dev/null +++ b/web/assets/classifier.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0c08b53837ef65af70d60a7eaecf267a7060c504769eb2628ba1f6296bb937e +size 1961126 diff --git a/web/assets/classifier.svg b/web/assets/classifier.svg new file mode 100644 index 0000000000000000000000000000000000000000..f14ae172b3ceda49f6faee29d6775479a4d30994 --- /dev/null +++ b/web/assets/classifier.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/assets/cluster_sd_500_v3.bin b/web/assets/cluster_sd_500_v3.bin new file mode 100644 index 0000000000000000000000000000000000000000..b8293a343969a329688f5fd278a458b0816914a6 --- /dev/null +++ b/web/assets/cluster_sd_500_v3.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72ff4cf66e5d67f91dba4262260fc4fbf131db5c450b7571f125ade8f3d95f67 +size 768000 diff --git a/web/assets/config.json b/web/assets/config.json new file mode 100644 index 0000000000000000000000000000000000000000..ed5fd5fa9979ac96e3c69c0c8e907bd634e027cb --- /dev/null +++ b/web/assets/config.json @@ -0,0 +1,4 @@ +{ + "apiKey": "", + "serverUrl": "/" +} diff --git a/web/assets/down-arrow.svg b/web/assets/down-arrow.svg new file mode 100644 index 0000000000000000000000000000000000000000..74a6efdf66941c04c542c43b19ef49aa7de31ae8 --- /dev/null +++ b/web/assets/down-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/assets/dpas.png b/web/assets/dpas.png new file mode 100644 index 0000000000000000000000000000000000000000..578031ca47883ffd0fff46d9ce92145a6d6b68ac Binary files /dev/null and b/web/assets/dpas.png differ diff --git a/web/assets/external-link.svg b/web/assets/external-link.svg new file mode 100644 index 0000000000000000000000000000000000000000..acb5cd4d9c2bf40dcbc776d08ad1634f23e749ab --- /dev/null +++ b/web/assets/external-link.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/web/assets/outlier-screenshot.jpg b/web/assets/outlier-screenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ec29134e0c63fa0a33553933e7a48475fd2a73e Binary files /dev/null and b/web/assets/outlier-screenshot.jpg differ diff --git a/web/assets/outlier.gif b/web/assets/outlier.gif new file mode 100644 index 0000000000000000000000000000000000000000..64362be403161866a295ad73f69cca846079ec3e --- /dev/null +++ b/web/assets/outlier.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38d7c2e5b79be2da8669842c7c37661579a64c0006b934f35b04c68dad720455 +size 1054973 diff --git a/web/assets/outlier.svg b/web/assets/outlier.svg new file mode 100644 index 0000000000000000000000000000000000000000..e3355fe0ffebf840735c2fc20139b378ec1af63d --- /dev/null +++ b/web/assets/outlier.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/assets/studies_1.3.6.1.4.1.11129.5.7.999.186491099540.49863605.1739421115085495_series_1.3.6.1.4.1.11129.5.7.0.1.483053107310.39424756.1739422414030669_annotation_classifier.svg b/web/assets/studies_1.3.6.1.4.1.11129.5.7.999.186491099540.49863605.1739421115085495_series_1.3.6.1.4.1.11129.5.7.0.1.483053107310.39424756.1739422414030669_annotation_classifier.svg new file mode 100644 index 0000000000000000000000000000000000000000..12461217617748879446dc031b64a46396df254a --- /dev/null +++ b/web/assets/studies_1.3.6.1.4.1.11129.5.7.999.186491099540.49863605.1739421115085495_series_1.3.6.1.4.1.11129.5.7.0.1.483053107310.39424756.1739422414030669_annotation_classifier.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/assets/studies_1.3.6.1.4.1.11129.5.7.999.186491099540.49863605.1739421115085495_series_1.3.6.1.4.1.11129.5.7.0.1.483053107310.39424756.1739422414030669_annotation_outlier.svg b/web/assets/studies_1.3.6.1.4.1.11129.5.7.999.186491099540.49863605.1739421115085495_series_1.3.6.1.4.1.11129.5.7.0.1.483053107310.39424756.1739422414030669_annotation_outlier.svg new file mode 100644 index 0000000000000000000000000000000000000000..7a4af552da472e508b891172c335c59f32ffaaa7 --- /dev/null +++ b/web/assets/studies_1.3.6.1.4.1.11129.5.7.999.186491099540.49863605.1739421115085495_series_1.3.6.1.4.1.11129.5.7.0.1.483053107310.39424756.1739422414030669_annotation_outlier.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/favicon.ico b/web/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e2a430d43803873059b7ce57fc559bf459a14970 Binary files /dev/null and b/web/favicon.ico differ diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000000000000000000000000000000000000..15c8c3e1e12a205a717d0b30d0ce9cb8111809dd --- /dev/null +++ b/web/index.html @@ -0,0 +1,43 @@ + + + + + + + Pathology Image Library + + + + + + + + + + + + + diff --git a/web/main.626d86e266e4a107.js b/web/main.626d86e266e4a107.js new file mode 100644 index 0000000000000000000000000000000000000000..6c2ccf064e2f0e1056abae868d74473ac82a8117 --- /dev/null +++ b/web/main.626d86e266e4a107.js @@ -0,0 +1 @@ +(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[792],{2181:(ut,Ie,a)=>{"use strict";a.d(Ie,{DJ:()=>d,FP:()=>x,JZ:()=>c,Pq:()=>w,jc:()=>C,yY:()=>O});const c=[{path:"",redirectTo:a(4119).c.OAUTH_CLIENT_ID?"auth":"demo",pathMatch:"full"},{path:"auth",loadComponent:()=>a.e(221).then(a.bind(a,8221)).then(D=>D.LoginPageComponent)},{path:"search",loadComponent:()=>Promise.all([a.e(912),a.e(956),a.e(391),a.e(628),a.e(382)]).then(a.bind(a,5382)).then(D=>D.SearchPageComponent)},{path:"cohorts",loadComponent:()=>Promise.all([a.e(912),a.e(956),a.e(611),a.e(563),a.e(391),a.e(175)]).then(a.bind(a,9175)).then(D=>D.CohortsPageComponent)},{path:"viewer",loadComponent:()=>Promise.all([a.e(912),a.e(956),a.e(611),a.e(910),a.e(563),a.e(628),a.e(607)]).then(a.bind(a,607)).then(D=>D.ImageViewerPageComponent)},{path:"config",loadComponent:()=>a.e(111).then(a.bind(a,8111)).then(D=>D.ConfigComponent)},{path:"demo",loadComponent:()=>Promise.all([a.e(912),a.e(611),a.e(910),a.e(123)]).then(a.bind(a,123)).then(D=>D.DemoIntroComponent)}],O="/cohorts",d="/search",w="/viewer",C="/auth",x="/inspect"},4119:(ut,Ie,a)=>{"use strict";a.d(Ie,{c:()=>c});const c={VIEWER_APP_NAME:"Pathology Image Library",IMAGE_DICOM_STORE_BASE_URL:"",OAUTH_CLIENT_ID:"",OAUTH_SCOPES:"https://www.googleapis.com/auth/cloud-healthcare email",APP_BASE_SERVER_PATH:"",USE_HASH_LOCATION_STRATEGY:!1,ENABLE_SERVER_INTERPOLATION:!1,ANNOTATIONS_DICOM_STORE_BASE_URL:"",ENABLE_ANNOTATIONS:!0,ENABLE_ANNOTATION_WRITING:!0,DICOM_GUID_PREFIX:"1.3.6.1.4.1.11129.5.7.0.1",ANNOTATION_HASH_STORED_USER_EMAIL:!1,FHIR_STORE_BASE_URL:"",FHIR_STORE_SEARCH_QUERY_PARAMETERS:"''",SEARCH_UPPERCASE_ONLY:!1,ORCHESTRATOR_BASE_URL:"",ENABLE_COHORTS:!1,ID_DELIMITER:",;\\s\\t\\n\\r",ID_VALIDATOR:"\\w\\d-",IMAGE_DEID_DICOM_STORE_BASE_URL:"",FHIR_STORE_PARENT:"",ANNOTATIONS_DICOM_STORE_PARENT:"",DEFAULT_SERIES_TO_LOAD:"/studies/1.3.6.1.4.1.11129.5.7.999.186491099540.49863605.1739421115085495/series/1.3.6.1.4.1.11129.5.7.0.1.483053107310.39424756.1739422414030669",IMAGE_DICOM_STORE_BASE_URL:"/dicom",OAUTH_CLIENT_ID:"",APP_BASE_SERVER_PATH:"",USE_HASH_LOCATION_STRATEGY:!0,ANNOTATIONS_DICOM_STORE_BASE_URL:"",ENABLE_ANNOTATIONS:!0,ENABLE_ANNOTATION_WRITING:!0,ANNOTATION_HASH_STORED_USER_EMAIL:!1};c.ENABLE_ANNOTATION_WRITING=c.ENABLE_ANNOTATIONS&&c.ENABLE_ANNOTATION_WRITING},4907:(ut,Ie,a)=>{"use strict";a.d(Ie,{$K:()=>P,$q:()=>d,AH:()=>x,MV:()=>p,Oo:()=>g,SY:()=>T,VE:()=>C,Yq:()=>h,_W:()=>u,bF:()=>w,f1:()=>c,fd:()=>D,fg:()=>O,lo:()=>o,nD:()=>y});var o=function(E){return E.IMAGE_TYPE="00080008",E.SOP_CLASS_UID="00080016",E.SOP_INSTANCE_UID="00080018",E.STUDY_DATE="00080020",E.ACCESSION_NUMBER="00080050",E.MODALITY="00080060",E.PATIENT_NAME="00100010",E.PATIENT_ID="00100020",E.PATIENT_BIRTH_DATE="00100030",E.PATIENT_SEX="00100040",E.STUDY_TIME="00080030",E.STUDY_ID="00200010",E.FRAME_OF_REFERENCE_UID="00200052",E.DATE_OF_SECONDARY_CAPTURE="00181012",E.SECONDARY_CAPTURE_DEVICE_MANUFACTURER="00181016",E.SECONDARY_CAPTURE_DEVICE_MANUFACTURERS_MODEL_NAME="00181018",E.SECONDARY_CAPTURE_DEVICE_SOFTWARE_VERSIONS="00181019",E.SPECIMEN_DESCRIPTION_SEQUENCE="00400560",E.STUDY_INSTANCE_UID="0020000D",E.SERIES_INSTANCE_UID="0020000E",E.INSTANCE_NUMBER="00200013",E.OFFSET="00209228",E.NUMBER_OF_FRAMES="00280008",E.ROWS="00280010",E.COLS="00280011",E.PIXEL_SPACING="00280030",E.SPECIMEN_SHORT_DESCRIPTION="00400600",E.CONTAINER_IDENTIFIER="00400512",E.IMAGE_VOLUME_WIDTH="00480001",E.IMAGE_VOLUME_HEIGHT="00480002",E.TOTAL_PIXEL_MATRIX_COLUMNS="00480006",E.TOTAL_PIXEL_MATRIX_ROWS="00480007",E.TOTAL_PIXEL_MATRIX_ORIGIN_SEQUENCE="00480008",E.INSTANCE_CREATION_DATE="00080012",E.INSTANCE_CREATION_TIME="00080013",E.CONTENT_DATE="00080023",E.CONTENT_TIME="00080024",E.ANNOTATION_COORDINATE_TYPE="006A0001",E.ANNOTATION_GROUP_SEQUENCE="006A0002",E.ANNOTATION_GROUP_NUMBER="0040A180",E.ANNOTATION_GROUP_UID="006A0003",E.ANNOTATION_APPLIES_TO_ALL_OPTICAL_PATHS="006A000D",E.ANNOTATION_GROUP_LABEL="006A0005",E.ANNOTATION_GROUP_DESCRIPTION="006A0006",E.ANNOTATION_GROUP_GENERATION_TYPE="006A0007",E.ANNOTATION_PROPERTY_CATEGORY_CODE_SEQUENCE="006A0009",E.CODE_VALUE="00080010",E.ANNOTATION_PROPERTY_TYPE_CODE_SEQUENCE="006A000A",E.CODING_SCHEME_DESIGNATOR="00080102",E.CODING_SCHEME_VERSION="00080103",E.CONTEXT_IDENTIFIER="0008010F",E.GRAPHIC_TYPE="00700023",E.DOUBLE_POINT_COORDINATES_DATA="00660022",E.POINT_COORDINATES_DATA="00660016",E.LONG_PRIMITIVE_POINT_INDEX_LIST="00660040",E.NUMBER_OF_ANNOTATIONS="006A000C",E.OPERATOR_IDENTIFICATION_SEQUENCE="00081072",E.PERSON_IDENTIFICATION_CODE_SEQUENCE="00401101",E.LONG_CODE_VALUE="00080119",E.CODE_MEANING="00080104",E.REFERENCED_SERIES_SEQUENCE="00081115",E.REFERENCED_INSTANCE_SEQUENCE="0008114A",E.REFERENCED_SOP_CLASS_UID="00081150",E.REFERENCED_SOP_INSTANCE_UID="00081155",E.REFERENCED_IMAGE_SEQUENCE="00081140",E.LOSSY_IMAGE_COMPRESSION_RATIO="00282112",E.SAMPLES_PER_PIXEL="00280002",E.BITS_ALLOCATED="00280100",E.TRANSFER_SYNTAX_UID="00020010",E}(o||{}),c=function(E){return E.IMPLICIT_VR_LITTLE_ENDIAN="1.2.840.10008.1.2",E.EXPLICIT_VR_LITTLE_ENDIAN="1.2.840.10008.1.2.1",E}(c||{}),O=function(E){return E.VL_MICROSCOPIC_IMAGE_STORAGE="1.2.840.10008.5.1.4.1.1.77.1.2",E.VL_SLIDE_COORDINATES_MICROSCOPIC_IMAGE_STORAGE="1.2.840.10008.5.1.4.1.1.77.1.3",E.TILED_MICROSCOPE="1.2.840.10008.5.1.4.1.1.77.1.6",E.TILED_SECONDARY_CAPTURE="1.2.840.10008.5.1.4.1.1.7",E.MICROSCOPY_BULK_SIMPLE_ANNOTATIONS_STORAGE="1.2.840.10008.5.1.4.1.1.91.1",E}(O||{});function d(E){return E?.constructor===Array&&void 0!==E[0].Alphabetic}function w(E){return!("object"!=typeof E||!E)&&"number"==typeof E[0]}function C(E){return!("object"!=typeof E||!E)&&"string"==typeof E[0]}function x(E){if("object"!=typeof E||!E)return!1;const W=E[0];return"object"==typeof W&&"Alphabetic"in W}function D(E){return!("object"!=typeof E||!E||w(E)&&C(E)&&x(E))}var p=function(E){return E.THUMBNAIL="THUMBNAIL",E.LABEL="LABEL",E.OVERVIEW="OVERVIEW",E}(p||{}),g=function(E){return E.ANY="",E.SLIDE_MICROSCOPY="SM",E.ANNOTATION="ANN",E}(g||{});function y(E){if(!E?.Alphabetic)return;const[W,ne,de,ie,Z]=E.Alphabetic.split("^");let ae="";for(const Le of[ie,ne,de,W,Z])Le&&(ae+=" "+Le);return ae.trimStart()}function h(E){if(!E)return"Unknown date";const[,W,ne,de]=E.match(/(\d{4})(\d{2})(\d{2})/)??[];return W&&ne&&de?`${W}-${ne}-${de}`:"Invalid date"}function u(E,W,ne){return ne?u((E?.[W]?.Value??[])[0],ne):(E?.[W]?.Value??[""])[0]}function P(E,W){return E?.[W]?.Value??[]}function T(E,W){return{vr:E,...void 0!==W?{Value:Array.isArray(W)?W:[W]}:{}}}},5717:(ut,Ie,a)=>{"use strict";a.d(Ie,{Eb:()=>C,_l:()=>w,hs:()=>c,ow:()=>D,q5:()=>x,xI:()=>d});var o=a(4119),c=function(p){return p[p.IMAGE=0]="IMAGE",p[p.DEID=1]="DEID",p}(c||{});function O(){return{[c.IMAGE]:o.c.IMAGE_DICOM_STORE_BASE_URL,[c.DEID]:o.c.IMAGE_DEID_DICOM_STORE_BASE_URL}}const d=O();function w(){Object.assign(d,O())}function C(p){return!(!o.c.IMAGE_DEID_DICOM_STORE_BASE_URL||!p.startsWith(o.c.IMAGE_DEID_DICOM_STORE_BASE_URL))}function x(p){const g=p.split("/studies");if(g.length<1)return p;const y=g[0];for(const h of Object.values(d))if(h.endsWith(y))return`${h}/studies${g[1]?g[1]:""}`;return p}function D(p){for(const g of Object.values(d))if(p.startsWith(g))return g;throw new Error(`Invalid Dicom id prefix ${p}`)}},7161:(ut,Ie,a)=>{"use strict";function o(d){const g=d.match(/^([^?]*?)\/(?:studies|series|instances|rs)/),y=d.match(/(?:^|\/)studies\/([0-9.]+)/),h=d.match(/(?:^|\/)series\/([0-9.]+)/),u=d.match(/(?:^|\/)instances\/([0-9.]+)/),P=d.match(/\?(.*)$/),T=g?g[1]:d,E=y?y[1]:void 0,W=h?h[1]:void 0,ne=u?u[1]:void 0,de=P?P[1]:void 0,ie=de?de.split("&").reduce((ae,Le)=>{const[_e,Ce]=Le.split("=");return ae[_e]=Ce,ae},{}):void 0,Z={...E&&{studyUID:E},...W&&{seriesUID:W},...ne&&{instanceUID:ne}};return{...T&&{baseUrl:T},...Z&&{path:Z},...ie&&{queryParams:ie}}}function c(d){let w="";return d.studyUID&&(w+=`/studies/${d.studyUID}`),d.seriesUID&&(w+=`/series/${d.seriesUID}`),d.instanceUID&&(w+=`/instances/${d.instanceUID}`),w}function O(d){let w=d.baseUrl||"";if(w+=c(d.path),d.resource&&(w+=`/${d.resource}`),d.queryParams){const x=Object.entries(d.queryParams).map(([D,p])=>`${encodeURIComponent(D)}=${encodeURIComponent(p)}`).join("&");x&&(w+=`?${x}`)}return w}a.d(Ie,{LG:()=>o,hd:()=>c,rH:()=>O})},8294:(ut,Ie,a)=>{"use strict";a.d(Ie,{H:()=>o});const o={caseId:{displayText:"Case Number",dicomWebSearchToken:"AccessionNumber"},patientId:{displayText:"Patient ID",dicomWebSearchToken:"PatientID"},slideId:{displayText:"Slide ID"}}},1182:(ut,Ie,a)=>{"use strict";a.d(Ie,{PQ:()=>d,Qy:()=>o,gR:()=>w,jf:()=>O});const o={names:"",notes:"",annotatorId:"",index:0};var O=function(D){return D.DEFAULT="image/webp, image/jpeg, image/png",D.JPEG_OR_PNG="image/png, image/jpeg",D.JPEG="image/jpeg",D.WEBP="image/webp",D.PNG="image/png",D}(O||{}),d=function(D){return D.NONE="",D.NO="no",D.YES="yes",D.ADOBERGB="adobergb",D.ROMMRGB="rommrgb",D.SRGB="srgb",D}(d||{});const w=new Map([[d.NONE,"None"],[d.NO,"No"],[d.YES,"Yes"],[d.ADOBERGB,"Adobe RGB"],[d.ROMMRGB,"Reference Output Medium Metric (ROMM RGB)"],[d.SRGB,"Standard RGB"]])},7568:(ut,Ie,a)=>{"use strict";var o=a(345),c=a(1626),O=a(177),d=a(4438);let C=(()=>{class Y{doc;delegate;zone;animationType;moduleImpl;_rendererFactoryPromise=null;scheduler=null;injector=(0,d.WQX)(d.zZn);loadingSchedulerFn=(0,d.WQX)(D,{optional:!0});_engine;constructor(De,nt,ht,jt,Nt){this.doc=De,this.delegate=nt,this.zone=ht,this.animationType=jt,this.moduleImpl=Nt}ngOnDestroy(){this._engine?.flush()}loadImpl(){const De=()=>this.moduleImpl??a.e(8).then(a.bind(a,8008)).then(ht=>ht);let nt;return nt=this.loadingSchedulerFn?this.loadingSchedulerFn(De):De(),nt.catch(ht=>{throw new d.wOt(5300,!1)}).then(({\u0275createEngine:ht,\u0275AnimationRendererFactory:jt})=>{this._engine=ht(this.animationType,this.doc);const Nt=new jt(this.delegate,this._engine,this.zone);return this.delegate=Nt,Nt})}createRenderer(De,nt){const ht=this.delegate.createRenderer(De,nt);if(0===ht.\u0275type)return ht;"boolean"==typeof ht.throwOnSyntheticProps&&(ht.throwOnSyntheticProps=!1);const jt=new x(ht);return nt?.data?.animation&&!this._rendererFactoryPromise&&(this._rendererFactoryPromise=this.loadImpl()),this._rendererFactoryPromise?.then(Nt=>{const on=Nt.createRenderer(De,nt);jt.use(on),this.scheduler??=this.injector.get(d.An2,null,{optional:!0}),this.scheduler?.notify(11)}).catch(Nt=>{jt.use(ht)}),jt}begin(){this.delegate.begin?.()}end(){this.delegate.end?.()}whenRenderingDone(){return this.delegate.whenRenderingDone?.()??Promise.resolve()}componentReplaced(De){this._engine?.flush(),this.delegate.componentReplaced?.(De)}static \u0275fac=function(nt){d.QTQ()};static \u0275prov=d.jDH({token:Y,factory:Y.\u0275fac})}return Y})();class x{delegate;replay=[];\u0275type=1;constructor(Re){this.delegate=Re}use(Re){if(this.delegate=Re,null!==this.replay){for(const De of this.replay)De(Re);this.replay=null}}get data(){return this.delegate.data}destroy(){this.replay=null,this.delegate.destroy()}createElement(Re,De){return this.delegate.createElement(Re,De)}createComment(Re){return this.delegate.createComment(Re)}createText(Re){return this.delegate.createText(Re)}get destroyNode(){return this.delegate.destroyNode}appendChild(Re,De){this.delegate.appendChild(Re,De)}insertBefore(Re,De,nt,ht){this.delegate.insertBefore(Re,De,nt,ht)}removeChild(Re,De,nt){this.delegate.removeChild(Re,De,nt)}selectRootElement(Re,De){return this.delegate.selectRootElement(Re,De)}parentNode(Re){return this.delegate.parentNode(Re)}nextSibling(Re){return this.delegate.nextSibling(Re)}setAttribute(Re,De,nt,ht){this.delegate.setAttribute(Re,De,nt,ht)}removeAttribute(Re,De,nt){this.delegate.removeAttribute(Re,De,nt)}addClass(Re,De){this.delegate.addClass(Re,De)}removeClass(Re,De){this.delegate.removeClass(Re,De)}setStyle(Re,De,nt,ht){this.delegate.setStyle(Re,De,nt,ht)}removeStyle(Re,De,nt){this.delegate.removeStyle(Re,De,nt)}setProperty(Re,De,nt){this.shouldReplay(De)&&this.replay.push(ht=>ht.setProperty(Re,De,nt)),this.delegate.setProperty(Re,De,nt)}setValue(Re,De){this.delegate.setValue(Re,De)}listen(Re,De,nt,ht){return this.shouldReplay(De)&&this.replay.push(jt=>jt.listen(Re,De,nt,ht)),this.delegate.listen(Re,De,nt,ht)}shouldReplay(Re){return null!==this.replay&&Re.startsWith("@")}}const D=new d.nKC("");var g=a(2168),y=a(2181),h=a(4119);let u=(()=>{class Y extends O.fw{prepareExternalUrl(De){return this.getBaseHref()+"/index.html#"+De}static{this.\u0275fac=(()=>{let De;return function(ht){return(De||(De=d.xGo(Y)))(ht||Y)}})()}static{this.\u0275prov=d.jDH({token:Y,factory:Y.\u0275fac})}}return Y})();const P={providers:[(0,g.lh)(y.JZ),(0,o.$x)(),function p(Y="animations"){return(0,d.ngT)("NgAsyncAnimations"),(0,d.EmA)([{provide:d._9s,useFactory:(Re,De,nt)=>new C(Re,De,nt,Y),deps:[O.qQ,o.B7,d.SKi]},{provide:d.bc$,useValue:"noop"===Y?"NoopAnimations":"BrowserAnimations"}])}(),(0,c.$R)((0,c.ZZ)()),{provide:O.kB,useValue:h.c.APP_BASE_SERVER_PATH},...h.c.USE_HASH_LOCATION_STRATEGY?[{provide:O.hb,useClass:u}]:[]]};var T=a(9417),E=a(8834),W=a(9213),ne=a(2798),de=a(4823),ie=a(2771),Z=a(6977),ae=a(8141),Le=a(5964),_e=a(3294),Ce=a(1182);let Ae=(()=>{class Y{transform(De){return Ce.gR.get(De)||Ce.gR.get(Ce.PQ.NONE)||"None"}static{this.\u0275fac=function(nt){return new(nt||Y)}}static{this.\u0275pipe=d.EJ8({name:"IccProfileTypeToLabelPipe",type:Y,pure:!0})}}return Y})();var ke=a(8472),Ue=a(6372),ve=a(9423),ye=a(2408),Se=a(3);const z=["settingsDialogTemplate"],te=()=>({});function L(Y,Re){if(1&Y&&(d.j41(0,"button",3)(1,"mat-icon",4),d.EFF(2,"list_alt"),d.k0s(),d.j41(3,"div",5),d.EFF(4,"Cohorts"),d.k0s()()),2&Y){const De=d.XpG();d.Y8G("routerLink",De.defaultCohortUrl)("queryParams",De.activatedRoute.snapshot.queryParams.cohortName===De.lastCohortUrlQueryParams.cohortName&&De.router.url.startsWith(De.defaultCohortUrl)?d.lJ4(3,te):De.lastCohortUrlQueryParams),d.R7$(),d.BMQ("data-selected",De.router.url.startsWith(De.defaultCohortUrl))}}function q(Y,Re){if(1&Y&&(d.j41(0,"mat-option",23),d.EFF(1),d.nI1(2,"IccProfileTypeToLabelPipe"),d.k0s()),2&Y){const De=Re.$implicit;d.Y8G("value",De),d.R7$(),d.SpI(" ",d.bMT(2,2,De)," ")}}function J(Y,Re){if(1&Y){const De=d.RV6();d.j41(0,"div",12)(1,"button",13),d.bIt("click",function(){const ht=d.eBV(De).dialogRef;return d.Njj(ht.close())}),d.j41(2,"mat-icon"),d.EFF(3,"close"),d.k0s()(),d.j41(4,"div",14)(5,"div",15),d.EFF(6,"Settings"),d.k0s(),d.j41(7,"div",16)(8,"div",17)(9,"div",18)(10,"div",19)(11,"button",20),d.bIt("click",function(){d.eBV(De);const ht=d.XpG();return d.Njj(ht.toggleDebugMode())}),d.j41(12,"mat-icon"),d.EFF(13),d.k0s()(),d.EFF(14," Display the tile coordinates (z, x, y). "),d.k0s(),d.j41(15,"div",19)(16,"mat-form-field")(17,"mat-label"),d.EFF(18," Select color space "),d.k0s(),d.j41(19,"mat-select",21),d.mxI("ngModelChange",function(ht){d.eBV(De);const jt=d.XpG();return d.DH7(jt.iccProfile,ht)||(jt.iccProfile=ht),d.Njj(ht)}),d.bIt("selectionChange",function(){d.eBV(De);const ht=d.XpG();return d.Njj(ht.selectIccProfile())}),d.DNE(20,q,3,4,"mat-option",22),d.k0s()()()()()()()()}if(2&Y){const De=d.XpG();d.R7$(13),d.SpI(" ",De.showXYZCoordinates?"check_box":"check_box_outline_blank"," "),d.R7$(6),d.R50("ngModel",De.iccProfile),d.R7$(),d.Y8G("ngForOf",De.iccProfileType)}}let X=(()=>{class Y{constructor(De,nt,ht,jt,Nt){this.authService=De,this.activatedRoute=nt,this.imageViewerPageStore=ht,this.dialogService=jt,this.router=Nt,this.destroyed$=new ie.m(1),this.iccProfile=Ce.PQ.NONE,this.showXYZCoordinates=!1,this.iccProfileType=[Ce.PQ.NO,Ce.PQ.ADOBERGB,Ce.PQ.ROMMRGB,Ce.PQ.SRGB],this.isSlideSelected=!1,this.lastCohortUrlQueryParams={},this.lastSearchUrlQueryParams={},this.lastViewerUrlQueryParams={},this.defaultCohortUrl=y.yY,this.defaultSearchUrl=y.DJ,this.defaultViewerUrl=y.Pq,this.defaultAuthUrl=y.jc,this.defaultInspectUrl=y.FP,this.activatedRouteParams={},this.cohortsEnabled=h.c.ENABLE_COHORTS,this.annotationsEnabled=h.c.ENABLE_ANNOTATIONS}ngOnDestroy(){this.destroyed$.next(!0),this.destroyed$.complete()}ngOnInit(){this.setupRoutes(),this.imageViewerPageStore.iccProfile$.pipe((0,Z.Q)(this.destroyed$),(0,ae.M)(De=>{this.iccProfile=De})).subscribe(),this.imageViewerPageStore.showXYZCoordinates$.pipe((0,Z.Q)(this.destroyed$),(0,ae.M)(De=>{this.showXYZCoordinates=De})).subscribe(),this.router.events.pipe((0,Le.p)(De=>De instanceof g.wF),(0,ae.M)(De=>{this.setupRoutes()})).subscribe(),this.activatedRoute.queryParams.pipe((0,_e.F)(),(0,ae.M)(De=>{this.activatedRouteParams=De})).subscribe()}setupRoutes(){const De=this.router.url;De.startsWith(y.DJ)&&(this.lastSearchUrlQueryParams=this.activatedRoute.snapshot.queryParams),De.startsWith(y.yY)&&(this.lastCohortUrlQueryParams=this.activatedRoute.snapshot.queryParams),De.startsWith(y.Pq)&&(this.lastViewerUrlQueryParams=this.activatedRoute.snapshot.queryParams)}openSettingsDialog(){this.dialogService.openComponentDialog(this.settingsDialogTemplate,{autoFocus:!1,disableClose:!1}).afterClosed().subscribe(()=>{})}toggleDebugMode(){this.imageViewerPageStore.showXYZCoordinates$.next(!this.showXYZCoordinates)}selectIccProfile(){this.imageViewerPageStore.iccProfile$.next(this.iccProfile)}logout(){this.authService.logout()}static{this.\u0275fac=function(nt){return new(nt||Y)(d.rXU(ke.u),d.rXU(g.nX),d.rXU(Ue.y),d.rXU(ve.o),d.rXU(g.Ix))}}static{this.\u0275cmp=d.VBU({type:Y,selectors:[["side-nav"]],viewQuery:function(nt,ht){if(1&nt&&d.GBs(z,7),2&nt){let jt;d.mGM(jt=d.lsd())&&(ht.settingsDialogTemplate=jt.first)}},decls:27,vars:10,consts:[["settingsDialogTemplate",""],[1,"side-nav-container"],[1,"navigation-buttons"],["mat-button","",1,"navigation-button",3,"routerLink","queryParams"],["mat-list-icon",""],["mat-line",""],["class","navigation-button","mat-button","",3,"routerLink","queryParams",4,"ngIf"],[1,"viewer-button-wrapper",3,"matTooltip"],["mat-button","",1,"navigation-button",3,"routerLink","disabled","queryParams"],[1,"settings-and-logout"],["mat-button","",1,"navigation-button",3,"click"],["disabled","","mat-button","",1,"navigation-button",3,"click"],[1,"settings"],["mat-icon-button","","cdkFocusInitial","","aria-label","Close settings",1,"quickview-dialog-close-button",3,"click"],[1,"shortcuts-settings"],[1,"setting-title"],[1,"shortcuts-settings-info"],[1,"shortcut-group"],[1,"debug-settings"],[1,"shortcut"],["mat-icon-button","","color","primary",3,"click"],["disabled","",3,"ngModelChange","selectionChange","ngModel"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]],template:function(nt,ht){if(1&nt){const jt=d.RV6();d.j41(0,"div",1)(1,"div",2)(2,"button",3)(3,"mat-icon",4),d.EFF(4,"search"),d.k0s(),d.j41(5,"div",5),d.EFF(6,"Search"),d.k0s()(),d.DNE(7,L,5,4,"button",6),d.j41(8,"div",7)(9,"button",8)(10,"mat-icon",4),d.EFF(11,"biotech"),d.k0s(),d.j41(12,"div",5),d.EFF(13,"Viewer"),d.k0s()()()(),d.j41(14,"div",9)(15,"button",10),d.bIt("click",function(){return d.eBV(jt),d.Njj(ht.openSettingsDialog())}),d.j41(16,"mat-icon",4),d.EFF(17,"settings"),d.k0s(),d.j41(18,"div",5),d.EFF(19,"Settings"),d.k0s()(),d.j41(20,"button",11),d.bIt("click",function(){return d.eBV(jt),d.Njj(ht.logout())}),d.j41(21,"mat-icon",4),d.EFF(22,"logout"),d.k0s(),d.j41(23,"div",5),d.EFF(24,"Logout"),d.k0s()()()(),d.DNE(25,J,21,3,"ng-template",null,0,d.C5r)}2&nt&&(d.R7$(2),d.Y8G("routerLink",ht.defaultSearchUrl)("queryParams",ht.activatedRoute.snapshot.queryParams.q===ht.lastSearchUrlQueryParams.q?d.lJ4(9,te):ht.lastSearchUrlQueryParams),d.R7$(),d.BMQ("data-selected",ht.router.url.startsWith(ht.defaultSearchUrl)),d.R7$(4),d.Y8G("ngIf",ht.cohortsEnabled),d.R7$(),d.Y8G("matTooltip",ht.lastViewerUrlQueryParams.series?"":"Please select a image to view"),d.R7$(),d.Y8G("routerLink",ht.defaultViewerUrl)("disabled",!ht.lastViewerUrlQueryParams.series)("queryParams",ht.lastViewerUrlQueryParams),d.R7$(),d.BMQ("data-selected",ht.router.url.startsWith(ht.defaultViewerUrl)))},dependencies:[Ae,g.iI,g.Wk,de.uc,de.oV,ne.Ve,ye.rl,ye.nJ,ne.VO,Se.wT,W.m_,W.An,E.Hl,E.$z,E.iY,T.YN,T.BC,T.vS,O.MD,O.Sq,O.bT],styles:[".side-nav-container[_ngcontent-%COMP%]{display:grid;font-size:12px;grid-template-rows:1fr min-content;height:96%;width:max-content;padding:1em 0;display:none}.side-nav-container[_ngcontent-%COMP%] .navigation-buttons[_ngcontent-%COMP%]{display:grid;grid-template-rows:repeat(3,min-content);grid-row-gap:2em}.side-nav-container[_ngcontent-%COMP%] .navigation-buttons[_ngcontent-%COMP%] .viewer-button-wrapper[_ngcontent-%COMP%]{display:grid}.side-nav-container[_ngcontent-%COMP%] .settings-and-logout[_ngcontent-%COMP%]{display:grid;grid-row-gap:1em}.side-nav-container[_ngcontent-%COMP%] .navigation-button[_ngcontent-%COMP%]{display:grid;justify-items:center;grid-row-gap:.3em;height:auto}.side-nav-container[_ngcontent-%COMP%] .navigation-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{border-radius:8px;width:2em;margin:0;height:1em;font-size:2em}.side-nav-container[_ngcontent-%COMP%] .navigation-button[_ngcontent-%COMP%] [data-selected=true][_ngcontent-%COMP%]{background:#d3e3fd}.settings[_ngcontent-%COMP%]{display:grid;padding:2em}.settings[_ngcontent-%COMP%] .quickview-dialog-close-button[_ngcontent-%COMP%]{position:absolute;right:.2em;top:.2em;z-index:2}.settings[_ngcontent-%COMP%] .shortcuts-settings[_ngcontent-%COMP%] .setting-title[_ngcontent-%COMP%]{font-size:2em}.settings[_ngcontent-%COMP%] .shortcuts-settings[_ngcontent-%COMP%] .shortcuts-settings-info[_ngcontent-%COMP%]{display:grid}.settings[_ngcontent-%COMP%] .shortcuts-settings[_ngcontent-%COMP%] .shortcuts-settings-info[_ngcontent-%COMP%] .shortcut-group[_ngcontent-%COMP%]{font-size:16px;margin-right:30px}.settings[_ngcontent-%COMP%] .shortcuts-settings[_ngcontent-%COMP%] .shortcuts-settings-info[_ngcontent-%COMP%] .shortcut-group[_ngcontent-%COMP%] .debug-settings[_ngcontent-%COMP%]{display:grid;grid-gap:1em}.settings[_ngcontent-%COMP%] .shortcuts-settings[_ngcontent-%COMP%] .shortcuts-settings-info[_ngcontent-%COMP%] .shortcut-group[_ngcontent-%COMP%] .shortcuts[_ngcontent-%COMP%]{display:flex;grid-gap:1em}.settings[_ngcontent-%COMP%] .shortcuts-settings[_ngcontent-%COMP%] .shortcuts-settings-info[_ngcontent-%COMP%] .shortcut-group[_ngcontent-%COMP%] .shortcut[_ngcontent-%COMP%]{align-items:center;display:grid;grid-column-gap:.2em;grid-template-columns:min-content max-content}.settings[_ngcontent-%COMP%] .shortcuts-settings[_ngcontent-%COMP%] .shortcuts-settings-info[_ngcontent-%COMP%] .shortcut-group[_ngcontent-%COMP%] kbd[_ngcontent-%COMP%]{background-color:#eee;border-radius:3px;border:1px solid #b4b4b4;box-shadow:0 1px 1px #0003,0 2px #ffffffb3 inset;color:#333;display:inline-block;font-size:.85em;font-weight:700;line-height:1;padding:2px 4px;white-space:nowrap}"]})}}return Y})();var K=a(4572),N=a(2639);function V(Y,Re){if(1&Y){const De=d.RV6();d.j41(0,"div",14)(1,"mat-icon"),d.EFF(2,"chevron_right"),d.k0s(),d.j41(3,"div",15)(4,"mat-icon"),d.EFF(5,"view_stream"),d.k0s(),d.j41(6,"span",16),d.bIt("click",function(){d.eBV(De);const ht=d.XpG(3);return d.Njj(ht.routeToCohort())}),d.EFF(7),d.k0s()()()}if(2&Y){const De=d.XpG(3);d.R7$(7),d.SpI(" ",De.cohortDisplayName," ")}}function I(Y,Re){if(1&Y){const De=d.RV6();d.j41(0,"div",17)(1,"mat-icon"),d.EFF(2,"chevron_right"),d.k0s(),d.j41(3,"div",15)(4,"mat-icon"),d.EFF(5,"person"),d.k0s(),d.j41(6,"span",18),d.bIt("click",function(){d.eBV(De);const ht=d.XpG(3);return d.Njj(ht.routeToPatient())}),d.EFF(7),d.k0s()()()}if(2&Y){const De=d.XpG(3);d.R7$(6),d.AVh("clickable-text",De.allowLinks),d.R7$(),d.SpI(" ",null==De.selectedExtraMetaData?null:De.selectedExtraMetaData.patientName," ")}}function M(Y,Re){if(1&Y){const De=d.RV6();d.j41(0,"div",19)(1,"mat-icon"),d.EFF(2,"chevron_right"),d.k0s(),d.j41(3,"div",15)(4,"mat-icon"),d.EFF(5,"ballot"),d.k0s(),d.j41(6,"span",18),d.bIt("click",function(){d.eBV(De);const ht=d.XpG(3);return d.Njj(ht.routeToCase())}),d.EFF(7),d.k0s()()()}if(2&Y){const De=d.XpG(3);d.R7$(6),d.AVh("clickable-text",De.allowLinks),d.R7$(),d.SpI(" ",null==De.selectedExtraMetaData?null:De.selectedExtraMetaData.caseId," ")}}function j(Y,Re){if(1&Y&&(d.j41(0,"div",20)(1,"mat-icon"),d.EFF(2,"chevron_right"),d.k0s(),d.j41(3,"div",15)(4,"mat-icon"),d.EFF(5,"crop_7_5"),d.k0s(),d.j41(6,"span",21),d.EFF(7),d.k0s()()()),2&Y){const De=d.XpG(3);d.R7$(7),d.SpI(" ",null==De.selectedSlideDescriptor?null:De.selectedSlideDescriptor.name," ")}}function ge(Y,Re){if(1&Y&&(d.j41(0,"div",9),d.DNE(1,V,8,1,"div",10)(2,I,8,3,"div",11)(3,M,8,3,"div",12)(4,j,8,1,"div",13),d.k0s()),2&Y){const De=d.XpG(2);d.R7$(),d.Y8G("ngIf",De.cohortDisplayName&&De.cohortName),d.R7$(),d.Y8G("ngIf",null==De.selectedExtraMetaData?null:De.selectedExtraMetaData.patientId),d.R7$(),d.Y8G("ngIf",null==De.selectedExtraMetaData?null:De.selectedExtraMetaData.caseId),d.R7$(),d.Y8G("ngIf",null==De.selectedSlideDescriptor?null:De.selectedSlideDescriptor.name)}}function Me(Y,Re){if(1&Y){const De=d.RV6();d.j41(0,"div",22)(1,"button",23),d.bIt("click",function(){d.eBV(De);const ht=d.XpG(2);return d.Njj(ht.prevCase())}),d.j41(2,"mat-icon"),d.EFF(3,"chevron_left"),d.k0s()(),d.j41(4,"div")(5,"div"),d.EFF(6," Case "),d.k0s(),d.j41(7,"div"),d.EFF(8),d.k0s()(),d.j41(9,"button",24),d.bIt("click",function(){d.eBV(De);const ht=d.XpG(2);return d.Njj(ht.nextCase())}),d.j41(10,"mat-icon"),d.EFF(11,"chevron_right"),d.k0s()()()}if(2&Y){const De=d.XpG(2);d.R7$(),d.Y8G("disabled",De.selectedCaseIndex<1),d.R7$(7),d.Lme(" ",De.selectedCaseIndex+1," / ",De.cohortService.selectedPathologyCohortCases$.getValue().length," "),d.R7$(),d.Y8G("disabled",De.selectedCaseIndex>=De.cohortService.selectedPathologyCohortCases$.getValue().length-1)}}function oe(Y,Re){if(1&Y&&(d.j41(0,"div",5),d.DNE(1,ge,5,4,"div",6),d.j41(2,"div",7),d.DNE(3,Me,12,4,"div",8),d.k0s()()),2&Y){const De=d.XpG();d.R7$(),d.Y8G("ngIf",De.cohortDisplayName&&De.cohortName||(null==De.selectedExtraMetaData?null:De.selectedExtraMetaData.patientId)||De.caseId||(null==De.selectedSlideDescriptor?null:De.selectedSlideDescriptor.name)),d.R7$(2),d.Y8G("ngIf",-1!==De.selectedCaseIndex)}}let R=(()=>{class Y{constructor(De,nt,ht,jt){this.activatedRoute=De,this.cohortService=nt,this.router=ht,this.imageViewerPageStore=jt,this.allowLinks=!0,this.selectedCaseIndex=-1,this.cohortDisplayName="",this.isViewerRoute=!1,this.selectedExtraMetaData=void 0,this.destroyed$=new ie.m(1)}ngOnInit(){this.initializeSubscriptions(),this.intializeViewerRouteData()}initializeSubscriptions(){this.imageViewerPageStore.selectedSplitViewSlideDescriptor$.pipe((0,Z.Q)(this.destroyed$),(0,ae.M)(De=>{this.selectedSlideDescriptor=De})).subscribe(),(0,K.z)([this.imageViewerPageStore.selectedSplitViewSlideDescriptor$,this.imageViewerPageStore.slideMetaDataBySlideDescriptorId$]).pipe((0,Z.Q)(this.destroyed$),(0,ae.M)(([De,nt])=>{!De||!nt.has(De.id)||(this.selectedExtraMetaData=nt.get(De.id))})).subscribe(),this.cohortService.selectedCohortInfo$.pipe((0,Z.Q)(this.destroyed$),(0,ae.M)(De=>{this.cohortName=De?.name??"",this.cohortDisplayName=De?.displayName??""})).subscribe(),this.router.events.pipe((0,Z.Q)(this.destroyed$),(0,ae.M)(De=>{De instanceof g.wF&&this.intializeViewerRouteData()})).subscribe()}intializeViewerRouteData(){this.isViewerRoute=this.router.url.startsWith("/viewer"),this.isViewerRoute&&this.cohortService.selectedPathologyCohortCases$.pipe((0,ae.M)(nt=>{})).subscribe()}ngOnDestroy(){this.destroyed$.next(!0),this.destroyed$.complete()}prevCase(){if(this.selectedCaseIndex<1)return;const De=this.cohortService.selectedPathologyCohortCases$.getValue()[this.selectedCaseIndex-1];this.loadCase(De)}nextCase(){const De=this.cohortService.selectedPathologyCohortCases$.getValue();if(this.selectedCaseIndex>=De.length-1)return;const nt=this.cohortService.selectedPathologyCohortCases$.getValue()[this.selectedCaseIndex+1];this.loadCase(nt)}routeToCohort(){this.cohortName&&this.cohortService.routeToSelectedCohort()}routeToCase(){this.allowLinks&&this.selectedExtraMetaData?.caseId&&(this.cohortService.unselectCohort(),this.router.navigateByUrl("/search?q="+this.selectedExtraMetaData?.caseId+"&type=caseId"))}routeToHome(){this.cohortService.unselectCohort(),this.router.navigateByUrl("/")}routeToPatient(){this.allowLinks&&this.selectedExtraMetaData?.patientId&&(this.cohortService.unselectCohort(),this.router.navigateByUrl("/search?q="+this.selectedExtraMetaData.patientId+"&type=PatientID"))}loadCase(De){const nt={caseId:De.caseId,cohortName:this.cohortService.getSelectedCohortName()};this.router.navigate(["/viewer"],{queryParams:nt}).then(()=>{location.reload()})}goToSearchPage(){this.cohortService.unselectCohort(),this.router.navigateByUrl("/search")}static{this.\u0275fac=function(nt){return new(nt||Y)(d.rXU(g.nX),d.rXU(N.Do),d.rXU(g.Ix),d.rXU(Ue.y))}}static{this.\u0275cmp=d.VBU({type:Y,selectors:[["top-nav"]],inputs:{allowLinks:"allowLinks",caseId:"caseId",patientId:"patientId",patientName:"patientName",slideLabel:"slideLabel"},decls:6,vars:1,consts:[[1,"container"],[1,"left"],["src","favicon.ico","alt","Logo",1,"logo","logo-img",3,"click"],[1,"logo",3,"click"],["class","right",4,"ngIf"],[1,"right"],["class","breadcrumbs",4,"ngIf"],[1,"cases-and-search"],["class","cases-navigator",4,"ngIf"],[1,"breadcrumbs"],["class","crumb","matTooltip","Cohort",4,"ngIf"],["class","crumb","matTooltip","Patient name",4,"ngIf"],["class","crumb","matTooltip","Case ID",4,"ngIf"],["class","crumb","matTooltip","Slide name",4,"ngIf"],["matTooltip","Cohort",1,"crumb"],[1,"crumb-info"],["ng-disabled","!cohortName",1,"clickable-text","ellipsis",3,"click"],["matTooltip","Patient name",1,"crumb"],[1,"ellipsis",3,"click"],["matTooltip","Case ID",1,"crumb"],["matTooltip","Slide name",1,"crumb"],[1,"ellipsis"],[1,"cases-navigator"],["mat-icon-button","","aria-label","Show previous case","matTooltip","Previous case",3,"click","disabled"],["mat-icon-button","","aria-label","Show next case","matTooltip","Next case",3,"click","disabled"]],template:function(nt,ht){1&nt&&(d.j41(0,"div",0)(1,"div",1)(2,"img",2),d.bIt("click",function(){return ht.routeToHome()}),d.k0s(),d.j41(3,"span",3),d.bIt("click",function(){return ht.routeToHome()}),d.EFF(4,"Pathology Image Library"),d.k0s()(),d.DNE(5,oe,4,2,"div",4),d.k0s()),2&nt&&(d.R7$(5),d.Y8G("ngIf",ht.isViewerRoute))},dependencies:[W.m_,W.An,O.MD,O.bT],styles:['@import"https://fonts.googleapis.com/css?family=Google+Sans";@import"https://fonts.googleapis.com/css?family=Google+Sans+Text:400,500";@import"https://fonts.googleapis.com/css?family=Google+Sans+Display:400,500,700";@import"https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp";@import"https://fonts.googleapis.com/css2?family=Google+Symbols:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200";.mat-elevation-z0[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z0[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-0, none)}.mat-elevation-z1[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z1[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-1, none)}.mat-elevation-z2[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z2[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-2, none)}.mat-elevation-z3[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z3[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-3, none)}.mat-elevation-z4[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z4[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-4, none)}.mat-elevation-z5[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z5[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-5, none)}.mat-elevation-z6[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z6[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-6, none)}.mat-elevation-z7[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z7[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-7, none)}.mat-elevation-z8[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z8[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-8, none)}.mat-elevation-z9[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z9[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-9, none)}.mat-elevation-z10[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z10[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-10, none)}.mat-elevation-z11[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z11[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-11, none)}.mat-elevation-z12[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z12[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-12, none)}.mat-elevation-z13[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z13[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-13, none)}.mat-elevation-z14[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z14[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-14, none)}.mat-elevation-z15[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z15[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-15, none)}.mat-elevation-z16[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z16[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-16, none)}.mat-elevation-z17[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z17[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-17, none)}.mat-elevation-z18[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z18[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-18, none)}.mat-elevation-z19[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z19[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-19, none)}.mat-elevation-z20[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z20[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-20, none)}.mat-elevation-z21[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z21[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-21, none)}.mat-elevation-z22[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z22[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-22, none)}.mat-elevation-z23[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z23[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-23, none)}.mat-elevation-z24[_ngcontent-%COMP%], .mat-mdc-elevation-specific.mat-elevation-z24[_ngcontent-%COMP%]{box-shadow:var(--mat-app-elevation-shadow-level-24, none)}html[_ngcontent-%COMP%]{--mat-sys-on-surface: initial}.mat-app-background[_ngcontent-%COMP%]{background-color:var(--mat-app-background-color, var(--mat-sys-background, transparent));color:var(--mat-app-text-color, var(--mat-sys-on-background, inherit))}.mat-elevation-0[_ngcontent-%COMP%]{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-1[_ngcontent-%COMP%]{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-2[_ngcontent-%COMP%]{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-3[_ngcontent-%COMP%]{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-4[_ngcontent-%COMP%]{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-5[_ngcontent-%COMP%]{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-6[_ngcontent-%COMP%]{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-7[_ngcontent-%COMP%]{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-8[_ngcontent-%COMP%]{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-9[_ngcontent-%COMP%]{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-10[_ngcontent-%COMP%]{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-11[_ngcontent-%COMP%]{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-12[_ngcontent-%COMP%]{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-13[_ngcontent-%COMP%]{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-14[_ngcontent-%COMP%]{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-15[_ngcontent-%COMP%]{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-16[_ngcontent-%COMP%]{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-17[_ngcontent-%COMP%]{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-18[_ngcontent-%COMP%]{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-19[_ngcontent-%COMP%]{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-20[_ngcontent-%COMP%]{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-21[_ngcontent-%COMP%]{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-22[_ngcontent-%COMP%]{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-23[_ngcontent-%COMP%]{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-24[_ngcontent-%COMP%]{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}html[_ngcontent-%COMP%]{--mat-ripple-color: rgba(0, 0, 0, .1)}html[_ngcontent-%COMP%]{--mat-option-selected-state-label-text-color: #2196f3;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent[_ngcontent-%COMP%]{--mat-option-selected-state-label-text-color: #b0bec5;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-warn[_ngcontent-%COMP%]{--mat-option-selected-state-label-text-color: #f44336;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}html[_ngcontent-%COMP%]{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%]{--mat-full-pseudo-checkbox-selected-icon-color: #b0bec5;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}html[_ngcontent-%COMP%]{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #b0bec5;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-primary[_ngcontent-%COMP%]{--mat-full-pseudo-checkbox-selected-icon-color: #2196f3;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-primary[_ngcontent-%COMP%]{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #2196f3;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-accent[_ngcontent-%COMP%]{--mat-full-pseudo-checkbox-selected-icon-color: #b0bec5;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-accent[_ngcontent-%COMP%]{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #b0bec5;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-warn[_ngcontent-%COMP%]{--mat-full-pseudo-checkbox-selected-icon-color: #f44336;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0}.mat-warn[_ngcontent-%COMP%]{--mat-minimal-pseudo-checkbox-selected-checkmark-color: #f44336;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}html[_ngcontent-%COMP%]{--mat-app-background-color: #fafafa;--mat-app-text-color: rgba(0, 0, 0, .87);--mat-app-elevation-shadow-level-0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-2: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-3: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-4: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-5: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 5px 8px 0px rgba(0, 0, 0, .14), 0px 1px 14px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-6: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-7: 0px 4px 5px -2px rgba(0, 0, 0, .2), 0px 7px 10px 1px rgba(0, 0, 0, .14), 0px 2px 16px 1px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-8: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-9: 0px 5px 6px -3px rgba(0, 0, 0, .2), 0px 9px 12px 1px rgba(0, 0, 0, .14), 0px 3px 16px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-10: 0px 6px 6px -3px rgba(0, 0, 0, .2), 0px 10px 14px 1px rgba(0, 0, 0, .14), 0px 4px 18px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-11: 0px 6px 7px -4px rgba(0, 0, 0, .2), 0px 11px 15px 1px rgba(0, 0, 0, .14), 0px 4px 20px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-12: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-13: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 13px 19px 2px rgba(0, 0, 0, .14), 0px 5px 24px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-14: 0px 7px 9px -4px rgba(0, 0, 0, .2), 0px 14px 21px 2px rgba(0, 0, 0, .14), 0px 5px 26px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-15: 0px 8px 9px -5px rgba(0, 0, 0, .2), 0px 15px 22px 2px rgba(0, 0, 0, .14), 0px 6px 28px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-16: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-17: 0px 8px 11px -5px rgba(0, 0, 0, .2), 0px 17px 26px 2px rgba(0, 0, 0, .14), 0px 6px 32px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-18: 0px 9px 11px -5px rgba(0, 0, 0, .2), 0px 18px 28px 2px rgba(0, 0, 0, .14), 0px 7px 34px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-19: 0px 9px 12px -6px rgba(0, 0, 0, .2), 0px 19px 29px 2px rgba(0, 0, 0, .14), 0px 7px 36px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-20: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 20px 31px 3px rgba(0, 0, 0, .14), 0px 8px 38px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-21: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 21px 33px 3px rgba(0, 0, 0, .14), 0px 8px 40px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-22: 0px 10px 14px -6px rgba(0, 0, 0, .2), 0px 22px 35px 3px rgba(0, 0, 0, .14), 0px 8px 42px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-23: 0px 11px 14px -7px rgba(0, 0, 0, .2), 0px 23px 36px 3px rgba(0, 0, 0, .14), 0px 9px 44px 8px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-24: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-elevated-card-container-shape: 4px}html[_ngcontent-%COMP%]{--mdc-outlined-card-container-shape: 4px;--mdc-outlined-card-outline-width: 1px}html[_ngcontent-%COMP%]{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}html[_ngcontent-%COMP%]{--mdc-linear-progress-active-indicator-height: 4px;--mdc-linear-progress-track-height: 4px;--mdc-linear-progress-track-shape: 0}.mat-mdc-progress-bar[_ngcontent-%COMP%]{--mdc-linear-progress-active-indicator-color: #2196f3;--mdc-linear-progress-track-color: rgba(33, 150, 243, .25)}.mat-mdc-progress-bar.mat-accent[_ngcontent-%COMP%]{--mdc-linear-progress-active-indicator-color: #b0bec5;--mdc-linear-progress-track-color: rgba(176, 190, 197, .25)}.mat-mdc-progress-bar.mat-warn[_ngcontent-%COMP%]{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}html[_ngcontent-%COMP%]{--mdc-plain-tooltip-container-shape: 4px;--mdc-plain-tooltip-supporting-text-line-height: 16px}html[_ngcontent-%COMP%]{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html[_ngcontent-%COMP%]{--mdc-filled-text-field-active-indicator-height: 1px;--mdc-filled-text-field-focus-active-indicator-height: 2px;--mdc-filled-text-field-container-shape: 4px}html[_ngcontent-%COMP%]{--mdc-outlined-text-field-outline-width: 1px;--mdc-outlined-text-field-focus-outline-width: 2px;--mdc-outlined-text-field-container-shape: 4px}html[_ngcontent-%COMP%]{--mdc-filled-text-field-caret-color: #2196f3;--mdc-filled-text-field-focus-active-indicator-color: #2196f3;--mdc-filled-text-field-focus-label-text-color: rgba(33, 150, 243, .87);--mdc-filled-text-field-container-color: rgb(244.8, 244.8, 244.8);--mdc-filled-text-field-disabled-container-color: rgb(249.9, 249.9, 249.9);--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-hover-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-hover-label-text-color: #f44336;--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336}html[_ngcontent-%COMP%]{--mdc-outlined-text-field-caret-color: #2196f3;--mdc-outlined-text-field-focus-outline-color: #2196f3;--mdc-outlined-text-field-focus-label-text-color: rgba(33, 150, 243, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-hover-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-error-hover-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336}html[_ngcontent-%COMP%]{--mat-form-field-focus-select-arrow-color: rgba(33, 150, 243, .87);--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38);--mat-form-field-state-layer-color: rgba(0, 0, 0, .87);--mat-form-field-error-text-color: #f44336;--mat-form-field-select-option-text-color: inherit;--mat-form-field-select-disabled-option-text-color: GrayText;--mat-form-field-leading-icon-color: unset;--mat-form-field-disabled-leading-icon-color: unset;--mat-form-field-trailing-icon-color: unset;--mat-form-field-disabled-trailing-icon-color: unset;--mat-form-field-error-focus-trailing-icon-color: unset;--mat-form-field-error-hover-trailing-icon-color: unset;--mat-form-field-error-trailing-icon-color: unset;--mat-form-field-enabled-select-arrow-color: rgba(0, 0, 0, .54);--mat-form-field-disabled-select-arrow-color: rgba(0, 0, 0, .38);--mat-form-field-hover-state-layer-opacity: .04;--mat-form-field-focus-state-layer-opacity: .08}.mat-mdc-form-field.mat-accent[_ngcontent-%COMP%]{--mdc-filled-text-field-caret-color: #b0bec5;--mdc-filled-text-field-focus-active-indicator-color: #b0bec5;--mdc-filled-text-field-focus-label-text-color: rgba(176, 190, 197, .87)}.mat-mdc-form-field.mat-accent[_ngcontent-%COMP%]{--mdc-outlined-text-field-caret-color: #b0bec5;--mdc-outlined-text-field-focus-outline-color: #b0bec5;--mdc-outlined-text-field-focus-label-text-color: rgba(176, 190, 197, .87)}.mat-mdc-form-field.mat-accent[_ngcontent-%COMP%]{--mat-form-field-focus-select-arrow-color: rgba(176, 190, 197, .87)}.mat-mdc-form-field.mat-warn[_ngcontent-%COMP%]{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-warn[_ngcontent-%COMP%]{--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-warn[_ngcontent-%COMP%]{--mat-form-field-focus-select-arrow-color: rgba(244, 67, 54, .87)}html[_ngcontent-%COMP%]{--mat-form-field-container-height: 56px;--mat-form-field-filled-label-display: block;--mat-form-field-container-vertical-padding: 16px;--mat-form-field-filled-with-label-container-padding-top: 24px;--mat-form-field-filled-with-label-container-padding-bottom: 8px}html[_ngcontent-%COMP%]{--mat-select-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(33, 150, 243, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html[_ngcontent-%COMP%] .mat-mdc-form-field.mat-accent[_ngcontent-%COMP%]{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(176, 190, 197, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html[_ngcontent-%COMP%] .mat-mdc-form-field.mat-warn[_ngcontent-%COMP%]{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html[_ngcontent-%COMP%]{--mat-select-arrow-transform: translateY(-8px)}html[_ngcontent-%COMP%]{--mat-autocomplete-container-shape: 4px;--mat-autocomplete-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-autocomplete-background-color: white}html[_ngcontent-%COMP%]{--mdc-dialog-container-shape: 4px}html[_ngcontent-%COMP%]{--mat-dialog-container-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12);--mat-dialog-container-max-width: 80vw;--mat-dialog-container-small-max-width: 80vw;--mat-dialog-container-min-width: 0;--mat-dialog-actions-alignment: start;--mat-dialog-actions-padding: 8px;--mat-dialog-content-padding: 20px 24px;--mat-dialog-with-actions-content-padding: 20px 24px;--mat-dialog-headline-padding: 0 24px 9px}html[_ngcontent-%COMP%]{--mdc-dialog-container-color: white;--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mdc-chip-container-shape-radius: 16px;--mdc-chip-with-avatar-avatar-shape-radius: 14px;--mdc-chip-with-avatar-avatar-size: 28px;--mdc-chip-with-icon-icon-size: 18px;--mdc-chip-outline-width: 0;--mdc-chip-outline-color: transparent;--mdc-chip-disabled-outline-color: transparent;--mdc-chip-focus-outline-color: transparent;--mdc-chip-hover-state-layer-opacity: .04;--mdc-chip-with-avatar-disabled-avatar-opacity: 1;--mdc-chip-flat-selected-outline-width: 0;--mdc-chip-selected-hover-state-layer-opacity: .04;--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity: 1;--mdc-chip-with-icon-disabled-icon-opacity: 1}.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mat-chip-disabled-container-opacity: .4;--mat-chip-trailing-action-opacity: .54;--mat-chip-trailing-action-focus-opacity: 1;--mat-chip-trailing-action-state-layer-color: transparent;--mat-chip-selected-trailing-action-state-layer-color: transparent;--mat-chip-trailing-action-hover-state-layer-opacity: 0;--mat-chip-trailing-action-focus-state-layer-opacity: 0}.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-elevated-selected-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-elevated-disabled-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-flat-disabled-selected-container-color: rgb(224.4, 224.4, 224.4);--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-selected-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121}.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mat-chip-selected-disabled-trailing-icon-color: #212121;--mat-chip-selected-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary[_ngcontent-%COMP%]{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #2196f3;--mdc-chip-elevated-selected-container-color: #2196f3;--mdc-chip-elevated-disabled-container-color: #2196f3;--mdc-chip-flat-disabled-selected-container-color: #2196f3;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-selected-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary[_ngcontent-%COMP%]{--mat-chip-selected-disabled-trailing-icon-color: white;--mat-chip-selected-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent[_ngcontent-%COMP%]{--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-elevated-container-color: #b0bec5;--mdc-chip-elevated-selected-container-color: #b0bec5;--mdc-chip-elevated-disabled-container-color: #b0bec5;--mdc-chip-flat-disabled-selected-container-color: #b0bec5;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-selected-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent[_ngcontent-%COMP%]{--mat-chip-selected-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mat-chip-selected-trailing-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn[_ngcontent-%COMP%]{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-selected-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-flat-disabled-selected-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-selected-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn[_ngcontent-%COMP%], .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn[_ngcontent-%COMP%]{--mat-chip-selected-disabled-trailing-icon-color: white;--mat-chip-selected-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip[_ngcontent-%COMP%]{--mdc-chip-container-height: 32px}html[_ngcontent-%COMP%]{--mdc-switch-disabled-selected-icon-opacity: .38;--mdc-switch-disabled-track-opacity: .12;--mdc-switch-disabled-unselected-icon-opacity: .38;--mdc-switch-handle-height: 20px;--mdc-switch-handle-shape: 10px;--mdc-switch-handle-width: 20px;--mdc-switch-selected-icon-size: 18px;--mdc-switch-track-height: 14px;--mdc-switch-track-shape: 7px;--mdc-switch-track-width: 36px;--mdc-switch-unselected-icon-size: 18px;--mdc-switch-selected-focus-state-layer-opacity: .12;--mdc-switch-selected-hover-state-layer-opacity: .04;--mdc-switch-selected-pressed-state-layer-opacity: .1;--mdc-switch-unselected-focus-state-layer-opacity: .12;--mdc-switch-unselected-hover-state-layer-opacity: .04;--mdc-switch-unselected-pressed-state-layer-opacity: .1}html[_ngcontent-%COMP%] .mat-mdc-slide-toggle[_ngcontent-%COMP%]{--mat-switch-disabled-selected-handle-opacity: .38;--mat-switch-disabled-unselected-handle-opacity: .38;--mat-switch-unselected-handle-size: 20px;--mat-switch-selected-handle-size: 20px;--mat-switch-pressed-handle-size: 20px;--mat-switch-with-icon-handle-size: 20px;--mat-switch-selected-handle-horizontal-margin: 0;--mat-switch-selected-with-icon-handle-horizontal-margin: 0;--mat-switch-selected-pressed-handle-horizontal-margin: 0;--mat-switch-unselected-handle-horizontal-margin: 0;--mat-switch-unselected-with-icon-handle-horizontal-margin: 0;--mat-switch-unselected-pressed-handle-horizontal-margin: 0;--mat-switch-visible-track-opacity: 1;--mat-switch-hidden-track-opacity: 1;--mat-switch-visible-track-transition: transform 75ms 0ms cubic-bezier(0, 0, .2, 1);--mat-switch-hidden-track-transition: transform 75ms 0ms cubic-bezier(.4, 0, .6, 1);--mat-switch-track-outline-width: 1px;--mat-switch-track-outline-color: transparent;--mat-switch-selected-track-outline-width: 1px;--mat-switch-selected-track-outline-color: transparent;--mat-switch-disabled-unselected-track-outline-width: 1px;--mat-switch-disabled-unselected-track-outline-color: transparent}html[_ngcontent-%COMP%]{--mdc-switch-selected-focus-state-layer-color: #1e88e5;--mdc-switch-selected-handle-color: #1e88e5;--mdc-switch-selected-hover-state-layer-color: #1e88e5;--mdc-switch-selected-pressed-state-layer-color: #1e88e5;--mdc-switch-selected-focus-handle-color: #0d47a1;--mdc-switch-selected-hover-handle-color: #0d47a1;--mdc-switch-selected-pressed-handle-color: #0d47a1;--mdc-switch-selected-focus-track-color: #64b5f6;--mdc-switch-selected-hover-track-color: #64b5f6;--mdc-switch-selected-pressed-track-color: #64b5f6;--mdc-switch-selected-track-color: #64b5f6;--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: #fff;--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-switch-disabled-label-text-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%] .mat-mdc-slide-toggle[_ngcontent-%COMP%]{--mat-switch-label-text-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%] .mat-mdc-slide-toggle.mat-accent[_ngcontent-%COMP%]{--mdc-switch-selected-focus-state-layer-color: #546e7a;--mdc-switch-selected-handle-color: #546e7a;--mdc-switch-selected-hover-state-layer-color: #546e7a;--mdc-switch-selected-pressed-state-layer-color: #546e7a;--mdc-switch-selected-focus-handle-color: #263238;--mdc-switch-selected-hover-handle-color: #263238;--mdc-switch-selected-pressed-handle-color: #263238;--mdc-switch-selected-focus-track-color: #90a4ae;--mdc-switch-selected-hover-track-color: #90a4ae;--mdc-switch-selected-pressed-track-color: #90a4ae;--mdc-switch-selected-track-color: #90a4ae}html[_ngcontent-%COMP%] .mat-mdc-slide-toggle.mat-warn[_ngcontent-%COMP%]{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}html[_ngcontent-%COMP%]{--mdc-switch-state-layer-size: 40px}html[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-opacity: .38;--mdc-radio-disabled-unselected-icon-opacity: .38;--mdc-radio-state-layer-size: 40px}.mat-mdc-radio-button.mat-primary[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #2196f3;--mdc-radio-selected-hover-icon-color: #2196f3;--mdc-radio-selected-icon-color: #2196f3;--mdc-radio-selected-pressed-icon-color: #2196f3}.mat-mdc-radio-button.mat-primary[_ngcontent-%COMP%]{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #2196f3;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-accent[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #b0bec5;--mdc-radio-selected-hover-icon-color: #b0bec5;--mdc-radio-selected-icon-color: #b0bec5;--mdc-radio-selected-pressed-icon-color: #b0bec5}.mat-mdc-radio-button.mat-accent[_ngcontent-%COMP%]{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #b0bec5;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-warn[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-radio-button.mat-warn[_ngcontent-%COMP%]{--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38);--mat-radio-label-text-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%]{--mdc-radio-state-layer-size: 40px}html[_ngcontent-%COMP%]{--mat-radio-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-slider-active-track-height: 6px;--mdc-slider-active-track-shape: 9999px;--mdc-slider-handle-height: 20px;--mdc-slider-handle-shape: 50%;--mdc-slider-handle-width: 20px;--mdc-slider-inactive-track-height: 4px;--mdc-slider-inactive-track-shape: 9999px;--mdc-slider-with-overlap-handle-outline-width: 1px;--mdc-slider-with-tick-marks-active-container-opacity: .6;--mdc-slider-with-tick-marks-container-shape: 50%;--mdc-slider-with-tick-marks-container-size: 2px;--mdc-slider-with-tick-marks-inactive-container-opacity: .6;--mdc-slider-handle-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-slider-value-indicator-width: auto;--mat-slider-value-indicator-height: 32px;--mat-slider-value-indicator-caret-display: block;--mat-slider-value-indicator-border-radius: 4px;--mat-slider-value-indicator-padding: 0 12px;--mat-slider-value-indicator-text-transform: none;--mat-slider-value-indicator-container-transform: translateX(-50%)}html[_ngcontent-%COMP%]{--mdc-slider-handle-color: #2196f3;--mdc-slider-focus-handle-color: #2196f3;--mdc-slider-hover-handle-color: #2196f3;--mdc-slider-active-track-color: #2196f3;--mdc-slider-inactive-track-color: #2196f3;--mdc-slider-with-tick-marks-inactive-container-color: #2196f3;--mdc-slider-with-tick-marks-active-container-color: white;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-label-container-color: #000;--mdc-slider-label-label-text-color: #fff;--mdc-slider-with-overlap-handle-outline-color: #fff;--mdc-slider-with-tick-marks-disabled-container-color: #000}html[_ngcontent-%COMP%]{--mat-slider-ripple-color: #2196f3;--mat-slider-hover-state-layer-color: rgba(33, 150, 243, .05);--mat-slider-focus-state-layer-color: rgba(33, 150, 243, .2);--mat-slider-value-indicator-opacity: .6}html[_ngcontent-%COMP%] .mat-accent[_ngcontent-%COMP%]{--mdc-slider-handle-color: #b0bec5;--mdc-slider-focus-handle-color: #b0bec5;--mdc-slider-hover-handle-color: #b0bec5;--mdc-slider-active-track-color: #b0bec5;--mdc-slider-inactive-track-color: #b0bec5;--mdc-slider-with-tick-marks-inactive-container-color: #b0bec5;--mdc-slider-with-tick-marks-active-container-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%] .mat-accent[_ngcontent-%COMP%]{--mat-slider-ripple-color: #b0bec5;--mat-slider-hover-state-layer-color: rgba(176, 190, 197, .05);--mat-slider-focus-state-layer-color: rgba(176, 190, 197, .2)}html[_ngcontent-%COMP%] .mat-warn[_ngcontent-%COMP%]{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: white}html[_ngcontent-%COMP%] .mat-warn[_ngcontent-%COMP%]{--mat-slider-ripple-color: #f44336;--mat-slider-hover-state-layer-color: rgba(244, 67, 54, .05);--mat-slider-focus-state-layer-color: rgba(244, 67, 54, .2)}html[_ngcontent-%COMP%]{--mat-menu-container-shape: 4px;--mat-menu-divider-bottom-spacing: 0;--mat-menu-divider-top-spacing: 0;--mat-menu-item-spacing: 16px;--mat-menu-item-icon-size: 24px;--mat-menu-item-leading-spacing: 16px;--mat-menu-item-trailing-spacing: 16px;--mat-menu-item-with-icon-leading-spacing: 16px;--mat-menu-item-with-icon-trailing-spacing: 16px;--mat-menu-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white;--mat-menu-divider-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-list-list-item-container-shape: 0;--mdc-list-list-item-leading-avatar-shape: 50%;--mdc-list-list-item-container-color: transparent;--mdc-list-list-item-selected-container-color: transparent;--mdc-list-list-item-leading-avatar-color: transparent;--mdc-list-list-item-leading-icon-size: 24px;--mdc-list-list-item-leading-avatar-size: 40px;--mdc-list-list-item-trailing-icon-size: 24px;--mdc-list-list-item-disabled-state-layer-color: transparent;--mdc-list-list-item-disabled-state-layer-opacity: 0;--mdc-list-list-item-disabled-label-text-opacity: .38;--mdc-list-list-item-disabled-leading-icon-opacity: .38;--mdc-list-list-item-disabled-trailing-icon-opacity: .38}html[_ngcontent-%COMP%]{--mat-list-active-indicator-color: transparent;--mat-list-active-indicator-shape: 4px}html[_ngcontent-%COMP%]{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mdc-list-item__start[_ngcontent-%COMP%], .mdc-list-item__end[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #2196f3;--mdc-radio-selected-hover-icon-color: #2196f3;--mdc-radio-selected-icon-color: #2196f3;--mdc-radio-selected-pressed-icon-color: #2196f3}.mat-accent[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%], .mat-accent[_ngcontent-%COMP%] .mdc-list-item__end[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #b0bec5;--mdc-radio-selected-hover-icon-color: #b0bec5;--mdc-radio-selected-icon-color: #b0bec5;--mdc-radio-selected-pressed-icon-color: #b0bec5}.mat-warn[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%], .mat-warn[_ngcontent-%COMP%] .mdc-list-item__end[_ngcontent-%COMP%]{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #2196f3;--mdc-checkbox-selected-hover-icon-color: #2196f3;--mdc-checkbox-selected-icon-color: #2196f3;--mdc-checkbox-selected-pressed-icon-color: #2196f3;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #2196f3;--mdc-checkbox-selected-hover-state-layer-color: #2196f3;--mdc-checkbox-selected-pressed-state-layer-color: #2196f3;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: black;--mdc-checkbox-selected-focus-icon-color: #b0bec5;--mdc-checkbox-selected-hover-icon-color: #b0bec5;--mdc-checkbox-selected-icon-color: #b0bec5;--mdc-checkbox-selected-pressed-icon-color: #b0bec5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #b0bec5;--mdc-checkbox-selected-hover-state-layer-color: #b0bec5;--mdc-checkbox-selected-pressed-state-layer-color: #b0bec5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-base.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--selected[_ngcontent-%COMP%] .mdc-list-item__primary-text[_ngcontent-%COMP%], .mat-mdc-list-base.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--selected[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%], .mat-mdc-list-base.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--activated[_ngcontent-%COMP%] .mdc-list-item__primary-text[_ngcontent-%COMP%], .mat-mdc-list-base.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--activated[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%]{color:#2196f3}.mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--disabled[_ngcontent-%COMP%] .mdc-list-item__start[_ngcontent-%COMP%], .mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--disabled[_ngcontent-%COMP%] .mdc-list-item__content[_ngcontent-%COMP%], .mat-mdc-list-base[_ngcontent-%COMP%] .mdc-list-item--disabled[_ngcontent-%COMP%] .mdc-list-item__end[_ngcontent-%COMP%]{opacity:1}html[_ngcontent-%COMP%]{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}html[_ngcontent-%COMP%]{--mat-list-list-item-leading-icon-start-space: 16px;--mat-list-list-item-leading-icon-end-space: 32px}.mdc-list-item__start[_ngcontent-%COMP%], .mdc-list-item__end[_ngcontent-%COMP%]{--mdc-radio-state-layer-size: 40px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line[_ngcontent-%COMP%], .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line[_ngcontent-%COMP%], .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line[_ngcontent-%COMP%]{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines[_ngcontent-%COMP%], .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines[_ngcontent-%COMP%], .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines[_ngcontent-%COMP%]{height:72px}html[_ngcontent-%COMP%]{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-paginator-container-size: 56px;--mat-paginator-form-field-container-height: 40px;--mat-paginator-form-field-container-vertical-padding: 8px;--mat-paginator-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-secondary-navigation-tab-container-height: 48px}html[_ngcontent-%COMP%]{--mdc-tab-indicator-active-indicator-height: 2px;--mdc-tab-indicator-active-indicator-shape: 0}html[_ngcontent-%COMP%]{--mat-tab-header-divider-color: transparent;--mat-tab-header-divider-height: 0}.mat-mdc-tab-group[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar[_ngcontent-%COMP%]{--mdc-tab-indicator-active-indicator-color: #2196f3}.mat-mdc-tab-group[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar[_ngcontent-%COMP%]{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #2196f3;--mat-tab-header-active-ripple-color: #2196f3;--mat-tab-header-inactive-ripple-color: #2196f3;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #2196f3;--mat-tab-header-active-hover-label-text-color: #2196f3;--mat-tab-header-active-focus-indicator-color: #2196f3;--mat-tab-header-active-hover-indicator-color: #2196f3}.mat-mdc-tab-group.mat-accent[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-accent[_ngcontent-%COMP%]{--mdc-tab-indicator-active-indicator-color: #b0bec5}.mat-mdc-tab-group.mat-accent[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-accent[_ngcontent-%COMP%]{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #b0bec5;--mat-tab-header-active-ripple-color: #b0bec5;--mat-tab-header-inactive-ripple-color: #b0bec5;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #b0bec5;--mat-tab-header-active-hover-label-text-color: #b0bec5;--mat-tab-header-active-focus-indicator-color: #b0bec5;--mat-tab-header-active-hover-indicator-color: #b0bec5}.mat-mdc-tab-group.mat-warn[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-warn[_ngcontent-%COMP%]{--mdc-tab-indicator-active-indicator-color: #f44336}.mat-mdc-tab-group.mat-warn[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-warn[_ngcontent-%COMP%]{--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-background-primary[_ngcontent-%COMP%]{--mat-tab-header-with-background-background-color: #2196f3;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-background-accent[_ngcontent-%COMP%]{--mat-tab-header-with-background-background-color: #b0bec5;--mat-tab-header-with-background-foreground-color: rgba(0, 0, 0, .87)}.mat-mdc-tab-group.mat-background-warn[_ngcontent-%COMP%], .mat-mdc-tab-nav-bar.mat-background-warn[_ngcontent-%COMP%]{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header[_ngcontent-%COMP%]{--mdc-secondary-navigation-tab-container-height: 48px}html[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-state-layer-opacity: .16;--mdc-checkbox-selected-hover-state-layer-opacity: .04;--mdc-checkbox-selected-pressed-state-layer-opacity: .16;--mdc-checkbox-unselected-focus-state-layer-opacity: .16;--mdc-checkbox-unselected-hover-state-layer-opacity: .04;--mdc-checkbox-unselected-pressed-state-layer-opacity: .16}html[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: black;--mdc-checkbox-selected-focus-icon-color: #b0bec5;--mdc-checkbox-selected-hover-icon-color: #b0bec5;--mdc-checkbox-selected-icon-color: #b0bec5;--mdc-checkbox-selected-pressed-icon-color: #b0bec5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #b0bec5;--mdc-checkbox-selected-hover-state-layer-color: #b0bec5;--mdc-checkbox-selected-pressed-state-layer-color: #b0bec5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}html[_ngcontent-%COMP%]{--mat-checkbox-disabled-label-color: rgba(0, 0, 0, .38);--mat-checkbox-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-checkbox.mat-primary[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #2196f3;--mdc-checkbox-selected-hover-icon-color: #2196f3;--mdc-checkbox-selected-icon-color: #2196f3;--mdc-checkbox-selected-pressed-icon-color: #2196f3;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #2196f3;--mdc-checkbox-selected-hover-state-layer-color: #2196f3;--mdc-checkbox-selected-pressed-state-layer-color: #2196f3;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn[_ngcontent-%COMP%]{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}html[_ngcontent-%COMP%]{--mdc-checkbox-state-layer-size: 40px}html[_ngcontent-%COMP%]{--mat-checkbox-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-text-button-container-shape: 4px;--mdc-text-button-keep-touch-target: false}html[_ngcontent-%COMP%]{--mdc-filled-button-container-shape: 4px;--mdc-filled-button-keep-touch-target: false}html[_ngcontent-%COMP%]{--mdc-protected-button-container-shape: 4px;--mdc-protected-button-container-elevation-shadow: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mdc-protected-button-disabled-container-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-protected-button-focus-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-hover-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-pressed-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-outlined-button-keep-touch-target: false;--mdc-outlined-button-outline-width: 1px;--mdc-outlined-button-container-shape: 4px}html[_ngcontent-%COMP%]{--mat-text-button-horizontal-padding: 8px;--mat-text-button-with-icon-horizontal-padding: 8px;--mat-text-button-icon-spacing: 8px;--mat-text-button-icon-offset: 0}html[_ngcontent-%COMP%]{--mat-filled-button-horizontal-padding: 16px;--mat-filled-button-icon-spacing: 8px;--mat-filled-button-icon-offset: -4px}html[_ngcontent-%COMP%]{--mat-protected-button-horizontal-padding: 16px;--mat-protected-button-icon-spacing: 8px;--mat-protected-button-icon-offset: -4px}html[_ngcontent-%COMP%]{--mat-outlined-button-horizontal-padding: 15px;--mat-outlined-button-icon-spacing: 8px;--mat-outlined-button-icon-offset: -4px}html[_ngcontent-%COMP%]{--mdc-text-button-label-text-color: black;--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mat-text-button-state-layer-color: black;--mat-text-button-disabled-state-layer-color: black;--mat-text-button-ripple-color: rgba(0, 0, 0, .1);--mat-text-button-hover-state-layer-opacity: .04;--mat-text-button-focus-state-layer-opacity: .12;--mat-text-button-pressed-state-layer-opacity: .12}html[_ngcontent-%COMP%]{--mdc-filled-button-container-color: white;--mdc-filled-button-label-text-color: black;--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mat-filled-button-state-layer-color: black;--mat-filled-button-disabled-state-layer-color: black;--mat-filled-button-ripple-color: rgba(0, 0, 0, .1);--mat-filled-button-hover-state-layer-opacity: .04;--mat-filled-button-focus-state-layer-opacity: .12;--mat-filled-button-pressed-state-layer-opacity: .12}html[_ngcontent-%COMP%]{--mdc-protected-button-container-color: white;--mdc-protected-button-label-text-color: black;--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mat-protected-button-state-layer-color: black;--mat-protected-button-disabled-state-layer-color: black;--mat-protected-button-ripple-color: rgba(0, 0, 0, .1);--mat-protected-button-hover-state-layer-opacity: .04;--mat-protected-button-focus-state-layer-opacity: .12;--mat-protected-button-pressed-state-layer-opacity: .12}html[_ngcontent-%COMP%]{--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-label-text-color: black;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-outlined-button-state-layer-color: black;--mat-outlined-button-disabled-state-layer-color: black;--mat-outlined-button-ripple-color: rgba(0, 0, 0, .1);--mat-outlined-button-hover-state-layer-opacity: .04;--mat-outlined-button-focus-state-layer-opacity: .12;--mat-outlined-button-pressed-state-layer-opacity: .12}.mat-mdc-button.mat-primary[_ngcontent-%COMP%]{--mdc-text-button-label-text-color: #2196f3}.mat-mdc-button.mat-primary[_ngcontent-%COMP%]{--mat-text-button-state-layer-color: #2196f3;--mat-text-button-ripple-color: rgba(33, 150, 243, .1)}.mat-mdc-button.mat-accent[_ngcontent-%COMP%]{--mdc-text-button-label-text-color: #b0bec5}.mat-mdc-button.mat-accent[_ngcontent-%COMP%]{--mat-text-button-state-layer-color: #b0bec5;--mat-text-button-ripple-color: rgba(176, 190, 197, .1)}.mat-mdc-button.mat-warn[_ngcontent-%COMP%]{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button.mat-warn[_ngcontent-%COMP%]{--mat-text-button-state-layer-color: #f44336;--mat-text-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-unelevated-button.mat-primary[_ngcontent-%COMP%]{--mdc-filled-button-container-color: #2196f3;--mdc-filled-button-label-text-color: white}.mat-mdc-unelevated-button.mat-primary[_ngcontent-%COMP%]{--mat-filled-button-state-layer-color: white;--mat-filled-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-unelevated-button.mat-accent[_ngcontent-%COMP%]{--mdc-filled-button-container-color: #b0bec5;--mdc-filled-button-label-text-color: black}.mat-mdc-unelevated-button.mat-accent[_ngcontent-%COMP%]{--mat-filled-button-state-layer-color: black;--mat-filled-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-unelevated-button.mat-warn[_ngcontent-%COMP%]{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: white}.mat-mdc-unelevated-button.mat-warn[_ngcontent-%COMP%]{--mat-filled-button-state-layer-color: white;--mat-filled-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-primary[_ngcontent-%COMP%]{--mdc-protected-button-container-color: #2196f3;--mdc-protected-button-label-text-color: white}.mat-mdc-raised-button.mat-primary[_ngcontent-%COMP%]{--mat-protected-button-state-layer-color: white;--mat-protected-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-accent[_ngcontent-%COMP%]{--mdc-protected-button-container-color: #b0bec5;--mdc-protected-button-label-text-color: black}.mat-mdc-raised-button.mat-accent[_ngcontent-%COMP%]{--mat-protected-button-state-layer-color: black;--mat-protected-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button.mat-warn[_ngcontent-%COMP%]{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: white}.mat-mdc-raised-button.mat-warn[_ngcontent-%COMP%]{--mat-protected-button-state-layer-color: white;--mat-protected-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-outlined-button.mat-primary[_ngcontent-%COMP%]{--mdc-outlined-button-label-text-color: #2196f3;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-primary[_ngcontent-%COMP%]{--mat-outlined-button-state-layer-color: #2196f3;--mat-outlined-button-ripple-color: rgba(33, 150, 243, .1)}.mat-mdc-outlined-button.mat-accent[_ngcontent-%COMP%]{--mdc-outlined-button-label-text-color: #b0bec5;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-accent[_ngcontent-%COMP%]{--mat-outlined-button-state-layer-color: #b0bec5;--mat-outlined-button-ripple-color: rgba(176, 190, 197, .1)}.mat-mdc-outlined-button.mat-warn[_ngcontent-%COMP%]{--mdc-outlined-button-label-text-color: #f44336;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-warn[_ngcontent-%COMP%]{--mat-outlined-button-state-layer-color: #f44336;--mat-outlined-button-ripple-color: rgba(244, 67, 54, .1)}html[_ngcontent-%COMP%]{--mdc-text-button-container-height: 36px}html[_ngcontent-%COMP%]{--mdc-filled-button-container-height: 36px}html[_ngcontent-%COMP%]{--mdc-protected-button-container-height: 36px}html[_ngcontent-%COMP%]{--mdc-outlined-button-container-height: 36px}html[_ngcontent-%COMP%]{--mat-text-button-touch-target-display: block}html[_ngcontent-%COMP%]{--mat-filled-button-touch-target-display: block}html[_ngcontent-%COMP%]{--mat-protected-button-touch-target-display: block}html[_ngcontent-%COMP%]{--mat-outlined-button-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-icon-button-icon-size: 24px}html[_ngcontent-%COMP%]{--mdc-icon-button-icon-color: inherit;--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mat-icon-button-state-layer-color: black;--mat-icon-button-disabled-state-layer-color: black;--mat-icon-button-ripple-color: rgba(0, 0, 0, .1);--mat-icon-button-hover-state-layer-opacity: .04;--mat-icon-button-focus-state-layer-opacity: .12;--mat-icon-button-pressed-state-layer-opacity: .12}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-primary[_ngcontent-%COMP%]{--mdc-icon-button-icon-color: #2196f3}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-primary[_ngcontent-%COMP%]{--mat-icon-button-state-layer-color: #2196f3;--mat-icon-button-ripple-color: rgba(33, 150, 243, .1)}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-accent[_ngcontent-%COMP%]{--mdc-icon-button-icon-color: #b0bec5}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-accent[_ngcontent-%COMP%]{--mat-icon-button-state-layer-color: #b0bec5;--mat-icon-button-ripple-color: rgba(176, 190, 197, .1)}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-warn[_ngcontent-%COMP%]{--mdc-icon-button-icon-color: #f44336}html[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-warn[_ngcontent-%COMP%]{--mat-icon-button-state-layer-color: #f44336;--mat-icon-button-ripple-color: rgba(244, 67, 54, .1)}html[_ngcontent-%COMP%]{--mat-icon-button-touch-target-display: block}.mat-mdc-icon-button.mat-mdc-button-base[_ngcontent-%COMP%]{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}html[_ngcontent-%COMP%]{--mdc-fab-container-shape: 50%;--mdc-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-fab-small-container-shape: 50%;--mdc-fab-small-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-extended-fab-container-height: 48px;--mdc-extended-fab-container-shape: 24px;--mdc-extended-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mdc-fab-container-color: white}html[_ngcontent-%COMP%]{--mat-fab-foreground-color: black;--mat-fab-state-layer-color: black;--mat-fab-disabled-state-layer-color: black;--mat-fab-ripple-color: rgba(0, 0, 0, .1);--mat-fab-hover-state-layer-opacity: .04;--mat-fab-focus-state-layer-opacity: .12;--mat-fab-pressed-state-layer-opacity: .12;--mat-fab-disabled-state-container-color: rgba(0, 0, 0, .12);--mat-fab-disabled-state-foreground-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%]{--mdc-fab-small-container-color: white}html[_ngcontent-%COMP%]{--mat-fab-small-foreground-color: black;--mat-fab-small-state-layer-color: black;--mat-fab-small-disabled-state-layer-color: black;--mat-fab-small-ripple-color: rgba(0, 0, 0, .1);--mat-fab-small-hover-state-layer-opacity: .04;--mat-fab-small-focus-state-layer-opacity: .12;--mat-fab-small-pressed-state-layer-opacity: .12;--mat-fab-small-disabled-state-container-color: rgba(0, 0, 0, .12);--mat-fab-small-disabled-state-foreground-color: rgba(0, 0, 0, .38)}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-primary[_ngcontent-%COMP%]{--mdc-fab-container-color: #2196f3}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-primary[_ngcontent-%COMP%]{--mat-fab-foreground-color: white;--mat-fab-state-layer-color: white;--mat-fab-ripple-color: rgba(255, 255, 255, .1)}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-accent[_ngcontent-%COMP%]{--mdc-fab-container-color: #b0bec5}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-accent[_ngcontent-%COMP%]{--mat-fab-foreground-color: black;--mat-fab-state-layer-color: black;--mat-fab-ripple-color: rgba(0, 0, 0, .1)}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-warn[_ngcontent-%COMP%]{--mdc-fab-container-color: #f44336}html[_ngcontent-%COMP%] .mat-mdc-fab.mat-warn[_ngcontent-%COMP%]{--mat-fab-foreground-color: white;--mat-fab-state-layer-color: white;--mat-fab-ripple-color: rgba(255, 255, 255, .1)}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-primary[_ngcontent-%COMP%]{--mdc-fab-small-container-color: #2196f3}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-primary[_ngcontent-%COMP%]{--mat-fab-small-foreground-color: white;--mat-fab-small-state-layer-color: white;--mat-fab-small-ripple-color: rgba(255, 255, 255, .1)}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-accent[_ngcontent-%COMP%]{--mdc-fab-small-container-color: #b0bec5}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-accent[_ngcontent-%COMP%]{--mat-fab-small-foreground-color: black;--mat-fab-small-state-layer-color: black;--mat-fab-small-ripple-color: rgba(0, 0, 0, .1)}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-warn[_ngcontent-%COMP%]{--mdc-fab-small-container-color: #f44336}html[_ngcontent-%COMP%] .mat-mdc-mini-fab.mat-warn[_ngcontent-%COMP%]{--mat-fab-small-foreground-color: white;--mat-fab-small-state-layer-color: white;--mat-fab-small-ripple-color: rgba(255, 255, 255, .1)}html[_ngcontent-%COMP%]{--mat-fab-touch-target-display: block}html[_ngcontent-%COMP%]{--mat-fab-small-touch-target-display: block}html[_ngcontent-%COMP%]{--mdc-snackbar-container-shape: 4px}html[_ngcontent-%COMP%]{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}html[_ngcontent-%COMP%]{--mat-snack-bar-button-color: #b0bec5}html[_ngcontent-%COMP%]{--mat-table-row-item-outline-width: 1px}html[_ngcontent-%COMP%]{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}html[_ngcontent-%COMP%]{--mdc-circular-progress-active-indicator-width: 4px;--mdc-circular-progress-size: 48px}html[_ngcontent-%COMP%]{--mdc-circular-progress-active-indicator-color: #2196f3}html[_ngcontent-%COMP%] .mat-accent[_ngcontent-%COMP%]{--mdc-circular-progress-active-indicator-color: #b0bec5}html[_ngcontent-%COMP%] .mat-warn[_ngcontent-%COMP%]{--mdc-circular-progress-active-indicator-color: #f44336}html[_ngcontent-%COMP%]{--mat-badge-container-shape: 50%;--mat-badge-container-size: unset;--mat-badge-small-size-container-size: unset;--mat-badge-large-size-container-size: unset;--mat-badge-legacy-container-size: 22px;--mat-badge-legacy-small-size-container-size: 16px;--mat-badge-legacy-large-size-container-size: 28px;--mat-badge-container-offset: -11px 0;--mat-badge-small-size-container-offset: -8px 0;--mat-badge-large-size-container-offset: -14px 0;--mat-badge-container-overlap-offset: -11px;--mat-badge-small-size-container-overlap-offset: -8px;--mat-badge-large-size-container-overlap-offset: -14px;--mat-badge-container-padding: 0;--mat-badge-small-size-container-padding: 0;--mat-badge-large-size-container-padding: 0}html[_ngcontent-%COMP%]{--mat-badge-background-color: #2196f3;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent[_ngcontent-%COMP%]{--mat-badge-background-color: #b0bec5;--mat-badge-text-color: rgba(0, 0, 0, .87)}.mat-badge-warn[_ngcontent-%COMP%]{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html[_ngcontent-%COMP%]{--mat-bottom-sheet-container-shape: 4px}html[_ngcontent-%COMP%]{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html[_ngcontent-%COMP%]{--mat-legacy-button-toggle-height: 36px;--mat-legacy-button-toggle-shape: 2px;--mat-legacy-button-toggle-focus-state-layer-opacity: 1}html[_ngcontent-%COMP%]{--mat-standard-button-toggle-shape: 4px;--mat-standard-button-toggle-hover-state-layer-opacity: .04;--mat-standard-button-toggle-focus-state-layer-opacity: .12}html[_ngcontent-%COMP%]{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd}html[_ngcontent-%COMP%]{--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: rgb(224.4, 224.4, 224.4)}html[_ngcontent-%COMP%]{--mat-standard-button-toggle-height: 48px}html[_ngcontent-%COMP%]{--mat-datepicker-calendar-container-shape: 4px;--mat-datepicker-calendar-container-touch-shape: 4px;--mat-datepicker-calendar-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-datepicker-calendar-container-touch-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #2196f3;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(33, 150, 243, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(33, 150, 243, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(33, 150, 243, .3);--mat-datepicker-toggle-active-state-icon-color: #2196f3;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(33, 150, 243, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032);--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-text-color: black;--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent[_ngcontent-%COMP%]{--mat-datepicker-calendar-date-selected-state-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-selected-state-background-color: #b0bec5;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(176, 190, 197, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-focus-state-background-color: rgba(176, 190, 197, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(176, 190, 197, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(176, 190, 197, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032)}.mat-datepicker-content.mat-warn[_ngcontent-%COMP%]{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: rgb(69.5241935484, 163.4758064516, 93.9516129032)}.mat-datepicker-toggle-active.mat-accent[_ngcontent-%COMP%]{--mat-datepicker-toggle-active-state-icon-color: #b0bec5}.mat-datepicker-toggle-active.mat-warn[_ngcontent-%COMP%]{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls[_ngcontent-%COMP%]{--mat-icon-button-touch-target-display: none}.mat-calendar-controls[_ngcontent-%COMP%] .mat-mdc-icon-button.mat-mdc-button-base[_ngcontent-%COMP%]{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}html[_ngcontent-%COMP%]{--mat-divider-width: 1px}html[_ngcontent-%COMP%]{--mat-divider-color: rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-expansion-container-shape: 4px;--mat-expansion-legacy-header-indicator-display: inline-block;--mat-expansion-header-indicator-display: none}html[_ngcontent-%COMP%]{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html[_ngcontent-%COMP%]{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html[_ngcontent-%COMP%]{--mat-icon-color: inherit}.mat-icon.mat-primary[_ngcontent-%COMP%]{--mat-icon-color: #2196f3}.mat-icon.mat-accent[_ngcontent-%COMP%]{--mat-icon-color: #b0bec5}.mat-icon.mat-warn[_ngcontent-%COMP%]{--mat-icon-color: #f44336}html[_ngcontent-%COMP%]{--mat-sidenav-container-shape: 0;--mat-sidenav-container-elevation-shadow: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-sidenav-container-width: auto}html[_ngcontent-%COMP%]{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html[_ngcontent-%COMP%]{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #2196f3;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #2196f3;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #2196f3;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html[_ngcontent-%COMP%] .mat-step-header.mat-accent[_ngcontent-%COMP%]{--mat-stepper-header-icon-foreground-color: rgba(0, 0, 0, .87);--mat-stepper-header-selected-state-icon-background-color: #b0bec5;--mat-stepper-header-selected-state-icon-foreground-color: rgba(0, 0, 0, .87);--mat-stepper-header-done-state-icon-background-color: #b0bec5;--mat-stepper-header-done-state-icon-foreground-color: rgba(0, 0, 0, .87);--mat-stepper-header-edit-state-icon-background-color: #b0bec5;--mat-stepper-header-edit-state-icon-foreground-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%] .mat-step-header.mat-warn[_ngcontent-%COMP%]{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html[_ngcontent-%COMP%]{--mat-stepper-header-height: 72px}html[_ngcontent-%COMP%]{--mat-sort-arrow-color: rgb(117.3, 117.3, 117.3)}html[_ngcontent-%COMP%]{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary[_ngcontent-%COMP%]{--mat-toolbar-container-background-color: #2196f3;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent[_ngcontent-%COMP%]{--mat-toolbar-container-background-color: #b0bec5;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-warn[_ngcontent-%COMP%]{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html[_ngcontent-%COMP%]{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}html[_ngcontent-%COMP%]{--mat-tree-container-background-color: white;--mat-tree-node-text-color: rgba(0, 0, 0, .87)}html[_ngcontent-%COMP%]{--mat-tree-node-min-height: 48px}html[_ngcontent-%COMP%]{--mat-timepicker-container-shape: 4px;--mat-timepicker-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html[_ngcontent-%COMP%]{--mat-timepicker-container-background-color: white}.overlay[_ngcontent-%COMP%]{z-index:1000;inset:0 0 0 0 absolute;background-color:#0003;display:flex;align-items:center;justify-content:center}.hidden[_ngcontent-%COMP%]{visibility:hidden;pointer-events:none}.hidden[_ngcontent-%COMP%], .hidden[_ngcontent-%COMP%] canvas[_ngcontent-%COMP%]{visibility:hidden;pointer-events:none}html[_ngcontent-%COMP%], body[_ngcontent-%COMP%]{height:100%;font-family:Google Symbols;font-family:Roboto,Helvetica Neue,sans-serif}html[_ngcontent-%COMP%]{overflow:hidden}body[_ngcontent-%COMP%]{background-color:#f5f5f5;margin:0;overflow:auto}body.search[_ngcontent-%COMP%]{background-color:#fff}.cursor-overlay[_ngcontent-%COMP%]{height:100%;left:0;position:fixed;top:0;width:100%;z-index:999;pointer-events:none}.cursor-overlay.grabbing[_ngcontent-%COMP%]{cursor:-webkit-grabbing}.cursor-overlay.wait[_ngcontent-%COMP%]{cursor:wait}hr[_ngcontent-%COMP%]{border-color:#0000001f;border-style:solid;border-width:1px 0 0;margin:0}.mat-icon[_ngcontent-%COMP%]{bottom:1px;position:relative}.mat-tooltip[_ngcontent-%COMP%]{margin:4px;font-size:12px}.cdk-overlay-pane[_ngcontent-%COMP%] .mat-mdc-dialog-container[_ngcontent-%COMP%]{min-width:25em}.mat-mdc-menu-content[_ngcontent-%COMP%]{background:#fff}.mat-drawer.mat-drawer-side[_ngcontent-%COMP%] .mat-drawer-inner-container[_ngcontent-%COMP%]{display:grid}.mat-mdc-dialog-container[_ngcontent-%COMP%] .mat-mdc-dialog-actions[_ngcontent-%COMP%]{padding:1em}.mat-mdc-dialog-container[_ngcontent-%COMP%] .mat-mdc-dialog-title[_ngcontent-%COMP%]{padding-top:1em}.mat-mdc-dialog-container[_ngcontent-%COMP%] .mat-mdc-dialog-title[_ngcontent-%COMP%]:before{content:unset}.mat-mdc-icon-button.mat-mdc-icon-button.mat-mdc-button-base[_ngcontent-%COMP%]{display:grid;height:auto;place-content:center center;padding:.2em;width:auto}.mat-icon[_ngcontent-%COMP%]{overflow:visible}.mat-dialog-container[_ngcontent-%COMP%] .mat-card[_ngcontent-%COMP%]{padding:24px}.mat-dialog-container[_ngcontent-%COMP%] .mat-card-header-text[_ngcontent-%COMP%]{margin:0}[_ngcontent-%COMP%]::-webkit-scrollbar{-webkit-appearance:none}[_ngcontent-%COMP%]::-webkit-scrollbar:horizontal{height:11px}[_ngcontent-%COMP%]::-webkit-scrollbar:vertical{width:11px}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border-radius:8px;border:2px solid white;background-color:#00000080}[_ngcontent-%COMP%]::-webkit-scrollbar-track{background-color:#fff;border-radius:8px}.container[_ngcontent-%COMP%]{align-content:center;background:#f5f5f5;color:gray;display:grid;grid-template-columns:250px 1fr}.left[_ngcontent-%COMP%]{align-items:center;display:grid;font-size:1em;grid-column-gap:.4em;grid-template-columns:min-content 1fr;padding:0 .4em;margin:.2em 0}.right[_ngcontent-%COMP%]{display:grid;grid-template-columns:max-content max-content;justify-content:space-between}.cases-navigator[_ngcontent-%COMP%]{display:grid;grid-template-columns:min-content max-content min-content}.breadcrumbs[_ngcontent-%COMP%]{align-items:center;background:#d3e3fd;display:flex;padding:0 1em 0 0}.crumb[_ngcontent-%COMP%], .crumb-info[_ngcontent-%COMP%]{align-items:center;display:grid;grid-template-columns:min-content max-content}.cases-and-search[_ngcontent-%COMP%]{align-content:center;display:grid;grid-template-columns:min-content min-content;grid-column-gap:1em;padding:0 1em}.clickable-text[_ngcontent-%COMP%]{cursor:pointer;text-decoration:underline}.ellipsis[_ngcontent-%COMP%]{display:inline-block;line-height:1;max-width:250px;max-height:2em;overflow:hidden;text-overflow:ellipsis}.logo[_ngcontent-%COMP%]{cursor:pointer}.logo-img[_ngcontent-%COMP%]{height:auto;width:auto}']})}}return Y})();function se(Y,Re){1&Y&&(d.j41(0,"div",2),d.nrm(1,"router-outlet"),d.k0s())}function Ee(Y,Re){if(1&Y&&(d.j41(0,"div",3),d.nrm(1,"top-nav"),d.j41(2,"div",4),d.nrm(3,"side-nav"),d.j41(4,"div",5),d.nrm(5,"router-outlet"),d.k0s()()()),2&Y){const De=d.XpG();d.R7$(3),d.AVh("disabled",!De.isDicomStoreInitialized)}}(0,o.B8)((()=>{class Y{constructor(De,nt){this.authService=De,this.router=nt,this.title="viewer",this.isDicomStoreInitialized=!1}ngAfterViewInit(){this.authService.setupGoogleLogin()}ngAfterViewChecked(){this.isDicomStoreInitialized!==!!h.c.IMAGE_DICOM_STORE_BASE_URL&&Promise.resolve().then(()=>this.isDicomStoreInitialized=!!h.c.IMAGE_DICOM_STORE_BASE_URL)}static{this.\u0275fac=function(nt){return new(nt||Y)(d.rXU(ke.u),d.rXU(g.Ix))}}static{this.\u0275cmp=d.VBU({type:Y,selectors:[["viewer"]],decls:2,vars:2,consts:[["class","app",4,"ngIf"],["class","authorized-section",4,"ngIf"],[1,"app"],[1,"authorized-section"],[1,"authorized-body"],[1,"authorized-body-content"]],template:function(nt,ht){1&nt&&d.DNE(0,se,2,0,"div",0)(1,Ee,6,2,"div",1),2&nt&&(d.Y8G("ngIf","/auth"===ht.router.url),d.R7$(),d.Y8G("ngIf","/"!==ht.router.url&&"/auth"!==ht.router.url))},dependencies:[g.n3,O.MD,O.bT,X,R],styles:[".app[_ngcontent-%COMP%]{display:grid;grid-template-rows:min-content 1fr;height:100%}.authorized-body[_ngcontent-%COMP%]{display:grid;grid-template-columns:min-content 1fr;overflow:auto}.authorized-body-content[_ngcontent-%COMP%]{background:#fafafa;overflow:hidden}.authorized-section[_ngcontent-%COMP%]{display:grid;grid-template-rows:min-content 1fr;height:100vh}.disabled[_ngcontent-%COMP%]{pointer-events:none;opacity:.2}"]})}}return Y})(),P).catch(Y=>console.error(Y))},8472:(ut,Ie,a)=>{"use strict";a.d(Ie,{u:()=>W});var o=a(467),c=a(177),O=a(4438),d=a(5416),w=a(7673),C=a(983),x=a(6648),D=a(6354),p=a(4119),g=a(3266),y=a(2840),h=a(2168),u=a(2073);const P="DPAS_ACCESS_TOKEN";let W=(()=>{class ne{constructor(ie,Z,ae,Le,_e,Ce,Ae){this.ngZone=ie,this.platformId=Z,this.logService=ae,this.router=Le,this.snackBar=_e,this.userService=Ce,this.windowService=Ae,this.scope=p.c.OAUTH_SCOPES,this.snackBarConfig=new d.um,this.snackBarConfig.duration=4e3,this.snackBarConfig.horizontalPosition="start"}setupGoogleLogin(){var ie=this;!(0,c.UE)(this.platformId)||!window||!p.c.OAUTH_CLIENT_ID||(window.onGoogleLibraryLoad=(0,o.A)(function*(){if(google.accounts.id.initialize({client_id:p.c.OAUTH_CLIENT_ID,callback:ie.handleCredentialResponse.bind(ie),auto_select:!1,cancel_on_tap_outside:!1}),google.accounts.id.renderButton(document.getElementById("loginBtn"),{theme:"outline",size:"large",width:200,type:"standard"}),ie.windowService.getLocalStorageItem(g.G)){let Z=ie.getCachedAccessToken();return Z&&ie.isTokenExpired(Z)&&(yield ie.fetchAccessToken(),Z=ie.getCachedAccessToken()),void(Z&&!ie.isTokenExpired(Z)&&ie.navigateToSearchIfAuth())}google.accounts.id.prompt()}))}fetchAccessToken(){var ie=this;return(0,o.A)(function*(){if(!p.c.OAUTH_CLIENT_ID)return Promise.resolve({email:"",oauthTokenInfo:{error:"",expirationTime:"",token:""}});const Z=ie.handleCredentialToken();if(!Z?.email)return Promise.resolve({email:"",oauthTokenInfo:{error:"",expirationTime:"",token:""}});ie.userService.setCurrentUser(Z.email);const Le=yield new Promise((_e,Ce)=>{const Ae=ie.userService.getCurrentUser()??void 0,ke=google.accounts.oauth2.initTokenClient({client_id:p.c.OAUTH_CLIENT_ID,scope:ie.scope,hint:Ae,prompt:"",callback:Ue=>{if(Ue.error){const Se="Consent needed. Access denied.",z=new Error(Se);return ie.logService.error(z),ie.snackBar.open(Se,"Dismiss",ie.snackBarConfig),ie.logout(),void Ce(Se)}const ve=ie.scope.split(" ");if(!google.accounts.oauth2.hasGrantedAllScopes(Ue,...ve)){const Se="Not all scopes are granted. Try again.",z=new Error;return ie.logService.error(z),ie.snackBar.open(Se,"Dismiss",ie.snackBarConfig),ie.logout(),void Ce(Se)}const ye=ie.convertResponseToToken(Ue);if(!ye){const Se="Access denied.";return ie.logService.error(new Error(Ue.error)),ie.snackBar.open(Se,"Dismiss",ie.snackBarConfig),ie.logout(),void Ce(Ue.error)}_e(ye)}});if(!ke){const Ue="No oauth client initialized.";return ie.logService.error(new Error(Ue)),void Ce(Ue)}ke.requestAccessToken()});return ie.setCachedAccessToken(Le),ie.navigateToSearchIfAuth(),Le})()}navigateToSearchIfAuth(){const ie=this.getCachedAccessToken();"/auth"===this.router.url&&ie?.oauthTokenInfo.token&&this.ngZone.run(()=>{this.router.navigate(["search"],{replaceUrl:!0})})}convertResponseToToken(ie){if(!ie.access_token||!ie.expires_in)return;const Z=this.userService.getCurrentUser()??"",ae=Date.now()+this.secondsToMilliseconds(Number(ie.expires_in));return{email:Z,oauthTokenInfo:{error:ie.error??"",expirationTime:String(ae),token:ie.access_token}}}handleCredentialResponse(ie){try{ie?.credential&&this.windowService.setLocalStorageItem(g.G,ie?.credential),this.fetchAccessToken()}catch(Z){console.error("Error while trying to decode token",Z)}}handleCredentialToken(){const ie=this.windowService.getLocalStorageItem(g.G);if(!ie)return void console.error("Error while trying to decode token, no credentials");let Z=null;return Z=JSON.parse(atob(ie.split(".")[1])),Z}getOAuthToken(ie=1){if(!p.c.OAUTH_CLIENT_ID)return(0,w.of)("");const Z=this.getCachedAccessToken();return Z&&!this.isTokenExpired(Z)?(0,w.of)(Z.oauthTokenInfo.token):ie?this.fetchAndMapToken():C.w}fetchAndMapToken(){return(0,x.H)(this.fetchAccessToken()).pipe((0,D.T)(ie=>ie.oauthTokenInfo.token))}getCachedAccessToken(){const ie=this.getCachedAccessTokenFromLocalStorage();if(ie)return this.isTokenExpired(ie)?void this.clearCachedAccessToken():ie}isTokenExpired(ie){try{if(!ie.oauthTokenInfo.expirationTime)return!1;const Z=Number(ie.oauthTokenInfo.expirationTime);return!!Number.isNaN(Z)||Z{"use strict";a.d(Ie,{Do:()=>V});var o=a(467),c=a(2771),O=a(4412),d=a(4572),w=a(7673),C=a(6977),x=a(8141),D=a(5558),p=a(980),g=a(1397),y=a(3557),h=a(6354),u=a(9437),P=a(3294),T=a(5964),E=a(1594),W=a(4119),ne=a(8375),de=a(3738),ie=a(4438),Z=a(9030),ae=a(4668),Le=a(1626),_e=a(8472),Ce=a(2840);const Ae=["linkToken","filter","view"];function ve(ge){return ge&&(ge.slides&&(ge.slides=ge.slides.map(Me=>(Me.dicomUri&&Me.dicomUri.includes("/projects/")&&(Me.dicomUri="projects/"+Me.dicomUri.split("/projects/")[1]),Me))),ge)}function ye(ge){return ge&&(ge.slides&&(ge.slides=ge.slides.map(Me=>(Me.dicomUri&&(Me.dicomUri.includes(W.c.IMAGE_DICOM_STORE_BASE_URL.split("/projects/")[1])?Me.dicomUri=W.c.IMAGE_DICOM_STORE_BASE_URL.split("projects/")[0]+Me.dicomUri:Me.dicomUri.includes(W.c.IMAGE_DEID_DICOM_STORE_BASE_URL.split("/projects/")[1])&&(Me.dicomUri=W.c.IMAGE_DEID_DICOM_STORE_BASE_URL.split("projects/")[0]+Me.dicomUri)),Me))),ge)}let Se=(()=>{class ge{constructor(oe,R,se){this.http=oe,this.authService=R,this.logService=se,this.userName$=(0,Z.v)(()=>this.identifyCurrentUser().pipe((0,h.T)(Ee=>Ee.name),(0,ae.t)(1)))}httpRequest(oe,R,se){const Ee=`${W.c.ORCHESTRATOR_BASE_URL}${R}`;return this.authService.getOAuthToken().pipe((0,D.n)(tt=>("GET"===oe&&(se=void 0),this.http.request(oe,Ee,{headers:{Authorization:"Bearer "+tt,"content-type":"application/json"},responseType:"text",body:se}).pipe((0,u.W)(Y=>{throw Y=JSON.stringify(Y),this.logService.error({name:`httpRequest: "${Ee}"`,message:Y}),new Error(`Error while fetching ${oe} ${Ee}: ${Y}`)})))))}fetch(oe,R,se){const Ee=JSON.stringify(se);if(se){const tt=se,Y={};for(const Re of Ae)Re in tt&&(Y[Re]=tt[Re]);Object.keys(Y).length>0&&(R=R+"?"+new URLSearchParams(Y).toString())}return this.httpRequest(oe,R,Ee).pipe((0,h.T)(tt=>{try{return JSON.parse(tt)}catch(Y){throw new Error(`Error parsing "${tt}" as ${R}: ${Y}`)}}))}createPathologyCohort(oe){return oe.pathologyCohort=ve(oe.pathologyCohort),this.userName$.pipe((0,g.Z)(R=>this.fetch("POST",`/${R}/pathologyCohorts`,oe)))}deletePathologyCohort(oe){return this.fetch("DELETE",`/${oe.name}`,oe)}getPathologyCohort(oe){return this.fetch("GET",`/${oe.name}`,oe).pipe((0,h.T)(R=>ye(R)))}listPathologyCohorts(oe){return this.userName$.pipe((0,D.n)(R=>this.fetch("GET",`/${R}/pathologyCohorts`,oe))).pipe((0,h.T)(R=>(R.pathologyCohorts&&(R.pathologyCohorts=R.pathologyCohorts.map(se=>ye(se))),R)))}updatePathologyCohort(oe,R,se=3){return oe.pathologyCohort=ve(oe.pathologyCohort),this.fetch("PATCH",`/${oe.pathologyCohort.name}`,oe).pipe((0,u.W)(Ee=>{if(se&&(Ee.originalStack??"").includes("Request contains stale data for cohort"))return se--,this.updatePathologyCohortRetryHandler(oe,R,se);throw Ee}))}updatePathologyCohortRetryHandler(oe,R,se){return this.getPathologyCohort({name:oe.pathologyCohort.name,view:"PATHOLOGY_COHORT_VIEW_FULL"}).pipe((0,h.T)(tt=>({newOriginalCohort:tt,modifiedLatestCohort:this.consolidateStaleData(oe,R,tt)})),(0,D.n)(tt=>(oe.pathologyCohort=tt.modifiedLatestCohort,this.updatePathologyCohort(oe,tt.newOriginalCohort,se))))}consolidateStaleData(oe,R,se){if(se=JSON.parse(JSON.stringify(se)),!oe.pathologyCohort||!se.cohortMetadata)return se;switch(oe.updateMask){case"displayName":se.cohortMetadata.displayName=oe.pathologyCohort?.cohortMetadata?.displayName;break;case"description":se.cohortMetadata.description=oe.pathologyCohort?.cohortMetadata?.description;break;case"cohortMetadata":se.cohortMetadata={...oe.pathologyCohort.cohortMetadata,updateTime:se?.cohortMetadata?.updateTime};break;case"slides":let Ee=[],tt=[];const Y=new Set((R?.slides??[]).map(Nt=>Nt.dicomUri)),Re=new Set((oe.pathologyCohort.slides??[]).map(Nt=>Nt.dicomUri));if(tt=(R?.slides??[]).filter(Nt=>!!Nt.dicomUri&&!Re.has(Nt.dicomUri)),Ee=(oe.pathologyCohort.slides??[]).filter(Nt=>!!Nt.dicomUri&&!Y.has(Nt.dicomUri)),Ee.length&&(se.slides=[...se.slides??[],...Ee]),tt.length){const Nt=new Set(tt.map(on=>on.dicomUri));se.slides=(se.slides??[]).filter(on=>!!on.dicomUri&&!Nt.has(on.dicomUri))}break;case"userAccess":const De=new Map((oe.pathologyCohort.userAccess??[]).map(Nt=>[Nt.userEmail,Nt])),nt=new Map((R?.userAccess??[]).map(Nt=>[Nt.userEmail,Nt]));let ht=new Map,jt=new Map;if(ht=new Map((oe.pathologyCohort.userAccess??[]).filter(Nt=>{const on=nt.get(Nt.userEmail);return!on||!(on.userEmail===Nt.userEmail&&on.accessRole===Nt.accessRole)}).map(Nt=>[Nt.userEmail??"",Nt])),jt=new Map((R?.userAccess??[]).filter(Nt=>{const on=De.get(Nt.userEmail);return!on||!(on.userEmail===Nt.userEmail&&on.accessRole===Nt.accessRole)}).map(Nt=>[Nt.userEmail??"",Nt])),ht.size){if(se.userAccess)for(let Nt=0;Nt<(se.userAccess??[]).length;Nt++){const on=se.userAccess[Nt];on.userEmail&&ht.has(on.userEmail)&&(se.userAccess[Nt]=ht.get(on.userEmail),ht.delete(on.userEmail))}se.userAccess=[...se.userAccess??[],...ht.values()]}jt.size&&(se.userAccess=(se.userAccess??[]).filter(Nt=>!!Nt.userEmail&&jt.has(Nt.userEmail)))}return se}sharePathologyCohort(oe){return this.fetch("POST",`/${oe.name}:share`,oe)}savePathologyCohort(oe){return this.fetch("POST",`/${oe.name}:save`,oe)}unsavePathologyCohort(oe){return this.fetch("POST",`/${oe.name}:unsave`,oe)}undeletePathologyCohort(oe){return this.fetch("POST",`/${oe.name}:undelete`,oe)}transferDeIdPathologyCohort(oe){return this.fetch("POST",`/${oe.name}:transfer`,oe)}copyPathologyCohort(oe){return this.fetch("POST",`/${oe.name}:copy`,oe)}exportPathologyCohort(oe){return this.fetch("POST",`/${oe.name}:export`,oe)}identifyCurrentUser(oe={}){return this.fetch("POST",":identifyCurrentUser",oe)}static{this.\u0275fac=function(R){return new(R||ge)(ie.KVO(Le.Qq),ie.KVO(_e.u),ie.KVO(Ce.K))}}static{this.\u0275prov=ie.jDH({token:ge,factory:ge.\u0275fac,providedIn:"root"})}}return ge})();class z{constructor(Me){this.reason=Me,this.isBusy=!0}}class te{constructor(){this.isBusy=!1}}let L=(()=>{class ge{constructor(){this.isBusyStateSubject=new O.t(new te),this.isBusyState$=this.isBusyStateSubject.asObservable()}getIsBusyState$(){return this.isBusyState$}isBusy(){return this.getIsBusyState().isBusy}getIsBusyState(){return this.isBusyStateSubject.getValue()}setIsBusy(oe){this.setIsBusyState(!0,oe)}setIsNotBusy(){this.setIsBusyState(!1)}setIsBusyState(oe,R=""){this.isBusyStateSubject.next(oe?new z(R):new te)}static{this.\u0275fac=function(R){return new(R||ge)}}static{this.\u0275prov=ie.jDH({token:ge,factory:ge.\u0275fac,providedIn:"root"})}}return ge})();var q=a(9423),J=a(2168),X=a(2073);let V=(()=>{class ge{constructor(oe,R,se,Ee,tt,Y,Re,De){this.orchestratorService=oe,this.dicomwebService=R,this.busyService=se,this.logService=Ee,this.dialogService=tt,this.router=Y,this.userService=Re,this.urlSerializer=De,this.cohorts$=new c.m(1),this.currentUser="",this.selectedCohortInfo$=new O.t(void 0),this.selectedPathologyCohort$=new O.t(void 0),this.selectedPathologyCohortCases$=new O.t([]),this.loading$=new O.t(!1),this.loadingCohortInfos$=new O.t(!1),this.loadingSelectedPathologyCohort$=new O.t(!1),this.loadingSelectedPathologyCohortCases$=new O.t(!1),this.loadingProgressSelectedPathologyCohortCases$=new O.t(0),this.selectedCohortCases=new O.t([]),this.cohortsEnabled=!1,this.destroyed$=new c.m(1),this.selectedCohortIsReadOnly$=new O.t(!0),this.cohortsEnabled=W.c.ENABLE_COHORTS,this.setupService()}setupService(){this.cohortsEnabled&&(this.userService.getCurrentUser$().subscribe(oe=>{this.currentUser=oe??""}),this.loading$.next(!0),(0,d.z)([this.userService.getCurrentUser$(),this.selectedPathologyCohort$]).pipe((0,C.Q)(this.destroyed$),(0,x.M)(([oe,R])=>{if(oe&&R){const Ee="PATHOLOGY_USER_ACCESS_ROLE_VIEWER"===(R.userAccess??[]).find(({userEmail:tt})=>tt===oe)?.accessRole;this.selectedCohortIsReadOnly$.next(Ee)}else this.selectedCohortIsReadOnly$.next(!0)})).subscribe(),(0,d.z)([this.loadingCohortInfos$,this.loadingSelectedPathologyCohort$,this.loadingSelectedPathologyCohortCases$]).pipe((0,C.Q)(this.destroyed$),(0,x.M)(oe=>{const R=oe.some(se=>!0===se);this.loading$.next(R)})).subscribe(),this.selectedPathologyCohort$.pipe((0,x.M)(oe=>{(!this.selectedCohortInfo$.getValue()||this.selectedCohortInfo$.getValue()?.name!==oe?.name)&&oe&&this.selectedCohortInfo$.next(this.pathologyCohortToCohortInfo(oe))}),(0,D.n)(oe=>oe?(this.selectedPathologyCohortCases$.next([]),this.fetchPathologyCohortCases(oe)):(0,w.of)(void 0)),(0,p.j)(()=>{this.loadingSelectedPathologyCohort$.next(!1)})).subscribe())}fetchPathologyCohortCases(oe){const R=oe.slides?(0,de.do)(oe.slides):new Map,se=[...R.keys()].map(Ee=>{const tt=R.get(Ee)??[];return this.fetchCase(Ee,tt,oe)});return this.loadingProgressSelectedPathologyCohortCases$.next(0),this.loadingSelectedPathologyCohortCases$.next(!0),(0,ne.s2)(se).pipe((0,g.Z)(({result:Ee,progress:tt})=>(tt.pipe((0,x.M)(Y=>{this.loadingProgressSelectedPathologyCohortCases$.next(Y)}),(0,y.w)()).subscribe(),Ee)),(0,x.M)(Ee=>{this.selectedPathologyCohortCases$.next(Ee)}),(0,p.j)(()=>{this.loadingSelectedPathologyCohortCases$.next(!1),this.loadingProgressSelectedPathologyCohortCases$.next(0)}))}fetchCase(oe,R,se){const Ee={accessionNumber:"failed to load",caseId:oe,date:"",failedToLoad:!0,slides:R},tt=se?.cohortMetadata?.isDeid??!1;return this.dicomwebService.getStudyMeta(oe).pipe((0,h.T)(Y=>{if(!Y||0===Y.length)return this.logService.error({name:"Can not get study meta data",message:`No meta returned ${oe}, skipping`,stack:"cohortService: cohortsToCases"}),Ee;const Re=(0,de.w8)(oe,Y[0],tt);return Re.slides=R,Re}),(0,u.W)(Y=>(this.logService.error({name:"Can not get study meta data",message:`No meta returned ${oe}, skipping. Error: ${Y}`,stack:"cohortService: cohortsToCases"}),(0,w.of)(Ee))))}fetchPathologyCohort(oe){this.loadingSelectedPathologyCohort$.next(!0),this.fetchPathologyCohortSubscription?.unsubscribe(),this.fetchPathologyCohortSubscription=this.orchestratorService.getPathologyCohort({name:oe}).pipe((0,C.Q)(this.destroyed$),(0,x.M)(R=>{if("PATHOLOGY_COHORT_LIFECYCLE_STAGE_SUSPENDED"===R?.cohortMetadata?.cohortStage)throw new Error;this.selectedPathologyCohort$.next(R),this.loadingSelectedPathologyCohort$.next(!1)}),(0,u.W)(R=>{this.loadingSelectedPathologyCohort$.next(!1),this.logService.error({name:"Error dialog",message:JSON.stringify(R),stack:"cohort_service"});const Ee=this.router.url,Y=`User does not have permission to access cohort '${Ee.slice(Ee.lastIndexOf("pathologyCohorts/")+17)}' or it does not exist.`;return this.dialogService.error(Y).pipe((0,C.Q)(this.destroyed$)).subscribe(Re=>{Re&&(this.unselectCohort(),this.router.navigateByUrl("/"))}),(0,w.of)(void 0)})).subscribe()}loadAllCohorts(){this.loadingCohortInfos$.next(!0),!this.fetchPathologyCohortsSubscription&&(this.fetchPathologyCohortsSubscription=this.orchestratorService.listPathologyCohorts({view:"PATHOLOGY_COHORT_VIEW_METADATA_ONLY"}).pipe((0,C.Q)(this.destroyed$),(0,x.M)(R=>{const se=(R.pathologyCohorts??[]).filter(Ee=>"PATHOLOGY_COHORT_LIFECYCLE_STAGE_ACTIVE"===Ee.cohortMetadata?.cohortStage).map(Ee=>this.pathologyCohortToCohortInfo(Ee));se.sort((Ee,tt)=>Ee.displayName.localeCompare(tt.displayName)),this.cohorts$.next(se),this.loadingCohortInfos$.next(!1)}),(0,u.W)(R=>{this.logService.error({name:"Error loading cohorts",message:JSON.stringify(R),stack:"cohort_service"});const se="Failed to load cohorts.";throw this.dialogService.error(se),this.loadingCohortInfos$.next(!1),new Error(se)})).subscribe(()=>{this.fetchPathologyCohortsSubscription=void 0}))}parseCohorts(oe,R,se){return oe.filter(({userAccess:Ee})=>(Ee??[]).find(({userEmail:Y})=>Y===R)?.accessRole===se)}shareCohort(oe){return this.orchestratorService.sharePathologyCohort(oe).pipe((0,x.M)(R=>{this.selectedPathologyCohort$.next(R)}),(0,u.W)(R=>{const se=R.message.indexOf("The following user(s)");let Ee="Failed to save share cohort.";return-1!==se&&(Ee=R.message.substring(se,Number(R.message.lastIndexOf("."))+1)),this.logService.error({name:"Error dialog",message:JSON.stringify(R),stack:"cohort_service"}),this.dialogService.error(Ee),(0,w.of)()}))}selectCohortInfo(oe){this.selectedCohortInfo$.next(oe)}unselectCohort(){this.selectedPathologyCohort$.next(void 0),this.selectedCohortInfo$.next(void 0)}isCohortSelected(){return void 0!==this.selectedCohortInfo$.getValue()}getSelectedCohortName(){return this.selectedPathologyCohort$.getValue()?.name??""}getSelectedCohortName$(){return this.selectedPathologyCohort$.pipe((0,h.T)(oe=>oe?.name))}getSelectedCohortDisplayName(){return this.selectedPathologyCohort$.getValue()?.cohortMetadata?.displayName??""}getSelectedCohortDisplayName$(){return this.selectedPathologyCohort$.pipe((0,h.T)(oe=>oe?.cohortMetadata?.displayName))}getSelectedCohortDescription(){return this.selectedPathologyCohort$.getValue()?.cohortMetadata?.description??""}getSelectedCohortDescription$(){return this.selectedPathologyCohort$.pipe((0,h.T)(oe=>oe?.cohortMetadata?.description??""))}getSelectedSlidesDicomUris$(){return this.selectedPathologyCohort$.pipe((0,P.F)(),(0,T.p)(oe=>void 0!==oe),(0,h.T)(oe=>oe?.slides?.map(({dicomUri:R})=>R)??[]))}getPathologyCohort(oe){return this.selectedPathologyCohort$.getValue()?.name===oe?(0,w.of)(this.selectedPathologyCohort$.getValue()):this.orchestratorService.getPathologyCohort({name:oe})}reloadCohortInfos(){this.loadAllCohorts()}reloadSelectedCohort(){this.isCohortSelected()&&this.fetchPathologyCohort(this.selectedCohortInfo$.getValue().name)}reloadSelectCohortIfNameMatching(oe){var R=this;return(0,o.A)(function*(){R.selectedPathologyCohort$.getValue()?.name===oe&&R.fetchPathologyCohort(R.selectedPathologyCohort$.getValue().name)})()}pathologyUserAccessRoleToLabel(oe){switch(oe){case"PATHOLOGY_USER_ACCESS_ROLE_OWNER":return"Owner";case"PATHOLOGY_USER_ACCESS_ROLE_ADMIN":return"Admin";case"PATHOLOGY_USER_ACCESS_ROLE_EDITOR":return"Editor";case"PATHOLOGY_USER_ACCESS_ROLE_VIEWER":return"Viewer";default:return this.logService.error({name:"Error converting pathology UserAccessRole to Label",message:JSON.stringify({accessRole:oe}),stack:"cohort_service"}),""}}pathologyCohortToCohortInfo(oe){const R=(oe.userAccess??[]).find(({userEmail:se})=>se===this.currentUser)?.accessRole??"PATHOLOGY_USER_ACCESS_ROLE_UNSPECIFIED";return{displayName:oe.cohortMetadata?.displayName??"",name:oe.name??"",access:R,isDeid:oe?.cohortMetadata?.isDeid??!1,isShared:"PATHOLOGY_USER_ACCESS_ROLE_OWNER"!==R,isExported:"PATHOLOGY_COHORT_BEHAVIOR_CONSTRAINTS_CANNOT_BE_EXPORTED"===oe?.cohortMetadata?.cohortBehaviorConstraints,pathologyCohort:oe}}addSlidesToPathologyCohort(oe,R){oe={...oe};const se=oe?.slides?.map(Y=>Y.dicomUri),Ee=se?R.filter(Y=>!se.includes(Y)):R;if(0===Ee.length)throw new j;const tt=Ee.map(Y=>({dicomUri:Y}));return oe.slides=[...oe.slides?oe.slides:[],...tt],oe}addSlidesToCohort(oe,R){return this.loading$.next(!0),this.busyService.getIsBusyState$().pipe((0,E.$)(se=>!se.isBusy),(0,x.M)(()=>{this.busyService.setIsBusy(`Adding slide${1===R.length?"":"s"} to cohort...`)}),(0,D.n)(()=>this.getPathologyCohort(oe)),(0,h.T)(se=>({pathologyCohort:se=this.addSlidesToPathologyCohort(se,R),updateMask:"slides",view:"PATHOLOGY_COHORT_VIEW_METADATA_ONLY"})),(0,D.n)(se=>this.orchestratorService.updatePathologyCohort(se,this.selectedPathologyCohort$.getValue())),(0,x.M)(()=>{this.busyService.setIsNotBusy(),this.reloadSelectCohortIfNameMatching(oe),this.loading$.next(!1)}),(0,h.T)(()=>!0),(0,u.W)(se=>(this.loading$.next(!1),se instanceof j||(this.logService.error({name:"Error dialog",message:JSON.stringify(se),stack:"cohort_service"}),this.dialogService.error("Error while adding slide to cohort.")),this.busyService.setIsNotBusy(),(0,w.of)(se instanceof j))))}removeSlideFromCohortSlideList(oe,R){oe={...oe};const se=oe?.slides?.map(Ee=>Ee.dicomUri);return oe.slides=se?oe?.slides?.filter(Ee=>!Ee.dicomUri||!R.includes(Ee.dicomUri)):[],oe}removeSlidesFromCohort(oe,R){return this.loading$.next(!0),this.busyService.getIsBusyState$().pipe((0,E.$)(se=>!se.isBusy),(0,x.M)(()=>{this.busyService.setIsBusy(`Removing slide${1===R.length?"":"s"} to cohort...`)}),(0,D.n)(()=>this.getPathologyCohort(oe)),(0,E.$)(),(0,h.T)(se=>({pathologyCohort:se=this.removeSlideFromCohortSlideList(se,R),updateMask:"slides",view:"PATHOLOGY_COHORT_VIEW_METADATA_ONLY"})),(0,D.n)(se=>this.orchestratorService.updatePathologyCohort(se,this.selectedPathologyCohort$.getValue())),(0,x.M)(()=>{this.busyService.setIsNotBusy(),this.reloadSelectCohortIfNameMatching(oe),this.loading$.next(!1)}),(0,h.T)(()=>!0),(0,u.W)(se=>(this.loading$.next(!1),this.logService.error({name:"Error dialog",message:JSON.stringify(se),stack:"cohort_service"}),this.dialogService.error("Error while removing slide from cohort."),(0,w.of)(!1))))}removeCasesFromCohort(oe,R){const se=(0,de.do)(this.selectedPathologyCohort$.getValue().slides??[]),Ee=R.reduce((tt,Y)=>{const Re=se.get(Y).map(De=>De.dicomUri).filter(De=>!!De);return new Set([...tt,...Re])},new Set);return this.removeSlidesFromCohort(oe,[...Ee])}ngOnDestroy(){this.selectedCohortInfo$.unsubscribe(),this.destroyed$.next(!0),this.destroyed$.complete()}routeToCohort(oe,R){const se=this.getCohortPath(oe,R);this.router.navigateByUrl(se)}getCohortPath(oe,R){const se={[I]:oe};return R&&(se[M]=R),this.urlSerializer.serialize(this.router.createUrlTree(["cohorts"],{queryParams:se}))}routeToSelectedCohort(){this.isCohortSelected()&&this.routeToCohort(this.getSelectedCohortName())}createCohort(oe,R,se){return this.orchestratorService.createPathologyCohort({pathologyCohort:{cohortMetadata:{displayName:oe,description:se,cohortAccess:"PATHOLOGY_COHORT_ACCESS_RESTRICTED"},slides:R.map(Ee=>({dicomUri:Ee}))}}).pipe((0,h.T)(Ee=>{if(!Ee.name)throw new Error("Newly created cohort did not have a name.");return Ee}),(0,u.W)(Ee=>(this.logService.error({name:"Error dialog",message:JSON.stringify(Ee),stack:"cohort_service"}),this.dialogService.error("Failed to create cohort."),(0,w.of)())))}updateCohortDisplayNameAndDescription(oe,R){const se=this.getSelectedCohortName();return this.getPathologyCohort(se).pipe((0,D.n)(Ee=>this.orchestratorService.updatePathologyCohort({pathologyCohort:{name:this.getSelectedCohortName(),cohortMetadata:{...Ee?.cohortMetadata,displayName:oe,description:R}},updateMask:["displayName","description"].join(",")},this.selectedPathologyCohort$.getValue())),(0,x.M)(()=>{this.reloadCohortInfos(),this.reloadSelectedCohort()}),(0,h.T)(()=>!0),(0,u.W)(Ee=>(this.logService.error({name:"Error dialog",message:JSON.stringify(Ee),stack:"cohort_service"}),this.dialogService.error("Failed to save cohort display name."),(0,w.of)(!1))))}saveCohort(oe){return this.orchestratorService.savePathologyCohort(oe).pipe((0,h.T)(()=>!0),(0,u.W)(R=>(this.logService.error({name:"Error dialog",message:JSON.stringify(R),stack:"cohort_service"}),this.dialogService.error("Failed to save shared cohort."),(0,w.of)(!1))))}unsaveCohort(oe){return this.orchestratorService.unsavePathologyCohort(oe).pipe((0,h.T)(()=>!0),(0,u.W)(R=>(this.logService.error({name:"Error dialog",message:JSON.stringify(R),stack:"cohort_service"}),this.dialogService.error("Failed to unsave shared cohort."),(0,w.of)(!1))))}exportCohort(oe){const R={name:this.getSelectedCohortName(),gcsDestPath:oe};return this.orchestratorService.exportPathologyCohort(R).pipe((0,h.T)(()=>!0),(0,u.W)(se=>(this.logService.error({name:"Error dialog",message:JSON.stringify(se),stack:"cohort_service"}),this.dialogService.error("Failed to export cohort."),(0,w.of)(!1))))}deIdCohort(oe,R){const se=W.c.IMAGE_DEID_DICOM_STORE_BASE_URL.split("/projects/");if(1===se.length)return this.dialogService.error("The configured DICOM store for de-identified data is not supported for this operation.").subscribe(),(0,w.of)(!1);const Ee={name:this.getSelectedCohortName(),displayNameTransferred:oe,destDicomImages:`projects/${se[1].replace("/dicomWeb","")}`};return R&&(Ee.descriptionTransferred=R),this.orchestratorService.transferDeIdPathologyCohort(Ee).pipe((0,h.T)(()=>!0),(0,u.W)(tt=>(this.logService.error({name:"Error dialog",message:JSON.stringify(tt),stack:"cohort_service"}),tt?.originalStack?.includes("The server encountered a temporary error and could not complete your request.

Please try again in 30 seconds.")?(0,w.of)(!0):(this.dialogService.error("Failed to begin de-identification process."),(0,w.of)(!1)))))}copyCohort(oe,R){const se={name:this.getSelectedCohortName(),displayNameCopied:oe};return R&&(se.descriptionCopied=R),this.orchestratorService.copyPathologyCohort(se).pipe((0,x.M)(Ee=>{Ee?.name&&(this.loadAllCohorts(),this.fetchPathologyCohort(Ee.name))}),(0,h.T)(()=>!0),(0,u.W)(Ee=>(this.logService.error({name:"Error dialog",message:JSON.stringify(Ee),stack:"cohort_service"}),this.dialogService.error("Failed to copy cohort."),(0,w.of)(!1))))}deleteSelectedCohort(){return this.orchestratorService.deletePathologyCohort({name:this.getSelectedCohortName()}).pipe((0,h.T)(()=>!0),(0,u.W)(oe=>(this.logService.error({name:"Error dialog",message:JSON.stringify(oe),stack:"cohort_service"}),this.dialogService.error("Failed to delete cohort."),(0,w.of)(!1))))}static{this.\u0275fac=function(R){return new(R||ge)(ie.KVO(Se),ie.KVO(de.w),ie.KVO(L),ie.KVO(Ce.K),ie.KVO(q.o),ie.KVO(J.Ix),ie.KVO(X.D),ie.KVO(J.Sd))}}static{this.\u0275prov=ie.jDH({token:ge,factory:ge.\u0275fac,providedIn:"root"})}}return ge})();const I="cohortName",M="linkToken";class j extends Error{}},9423:(ut,Ie,a)=>{"use strict";a.d(Ie,{o:()=>ne});var o=a(6354),c=a(177),O=a(8834),d=a(5351),w=a(9213),C=a(4438);let x=(()=>{class de{constructor(Z,ae){this.dialogRef=Z,this.data=ae,this.title="Confirmed",this.message="",ae&&(this.title=ae.title||"Confirmed",this.message=ae.message||"")}onOk(){this.dialogRef.close(!0)}onCancel(){this.dialogRef.close(!1)}static{this.\u0275fac=function(ae){return new(ae||de)(C.rXU(d.CP),C.rXU(d.Vh,8))}}static{this.\u0275cmp=C.VBU({type:de,selectors:[["dialog-confirmation"]],decls:12,vars:2,consts:[["mat-dialog-title",""],["color","primary"],["mat-dialog-content",""],["mat-dialog-actions",""],["mat-stroked-button","","color","primary","type","button",3,"click"],["mat-flat-button","","color","primary","type","button",3,"click"]],template:function(ae,Le){1&ae&&(C.j41(0,"div",0)(1,"mat-icon",1),C.EFF(2,"not_listed_location"),C.k0s(),C.j41(3,"span"),C.EFF(4),C.k0s()(),C.j41(5,"div",2),C.EFF(6),C.k0s(),C.j41(7,"div",3)(8,"button",4),C.bIt("click",function(){return Le.onCancel()}),C.EFF(9,"Cancel"),C.k0s(),C.j41(10,"button",5),C.bIt("click",function(){return Le.onOk()}),C.EFF(11,"OK"),C.k0s()()),2&ae&&(C.R7$(4),C.JRh(Le.title),C.R7$(2),C.SpI(" ",Le.message,"\n"))},dependencies:[c.MD,O.Hl,O.$z,w.m_,w.An],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:space-between}.mat-mdc-dialog-title[_ngcontent-%COMP%]{align-items:center;display:grid;grid-column-gap:.4em;grid-template-columns:min-content 1fr}"]})}}return de})();var D=a(9417),p=a(2408);let y=(()=>{class de{constructor(Z,ae){this.dialogRef=Z,this.data=ae,this.title="Question?",this.message="",this.answer="",ae&&(this.title=ae.title||"",this.message=ae.message||"",this.answer=ae.answer||"")}keyPressHandler(Z){"Enter"===Z.code&&this.onOk()}onOk(){this.dialogRef.close(this.answer)}onCancel(){this.dialogRef.close()}static{this.\u0275fac=function(ae){return new(ae||de)(C.rXU(d.CP),C.rXU(d.Vh,8))}}static{this.\u0275cmp=C.VBU({type:de,selectors:[["dialog-string-questions"]],inputs:{title:"title",message:"message",answer:"answer"},decls:10,vars:3,consts:[["mat-dialog-title",""],["mat-dialog-content",""],[1,"question-answer"],["aria-label","Answer","matInput","",1,"question-answer-input",3,"keypress","ngModelChange","placeholder","ngModel"],["mat-dialog-actions",""],["mat-stroked-button","","color","primary","type","button",3,"click"],["mat-flat-button","","color","primary","type","button",3,"click"]],template:function(ae,Le){1&ae&&(C.j41(0,"div",0),C.EFF(1),C.k0s(),C.j41(2,"div",1)(3,"mat-form-field",2)(4,"input",3),C.bIt("keypress",function(Ce){return Le.keyPressHandler(Ce)}),C.mxI("ngModelChange",function(Ce){return C.DH7(Le.answer,Ce)||(Le.answer=Ce),Ce}),C.k0s()()(),C.j41(5,"div",4)(6,"button",5),C.bIt("click",function(){return Le.onCancel()}),C.EFF(7,"Cancel"),C.k0s(),C.j41(8,"button",6),C.bIt("click",function(){return Le.onOk()}),C.EFF(9,"OK"),C.k0s()()),2&ae&&(C.R7$(),C.SpI(" ",Le.title,"\n"),C.R7$(3),C.FS9("placeholder",Le.message),C.R50("ngModel",Le.answer))},dependencies:[c.MD,p.rl,D.YN,D.me,D.BC,D.vS,O.$z],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:space-between}.mat-mdc-form-field[_ngcontent-%COMP%]{display:grid}"]})}}return de})();var h=a(5416);function u(de,ie){1&de&&(C.j41(0,"div"),C.EFF(1,"When reporting this issue, please include the log by using the button below."),C.k0s())}function P(de,ie){if(1&de){const Z=C.RV6();C.j41(0,"button",7),C.bIt("click",function(){C.eBV(Z);const Le=C.XpG();return C.Njj(Le.copyLogs())}),C.EFF(1,"Copy logs to clipboard"),C.k0s()}}let T=(()=>{class de{constructor(Z,ae){this.snackBar=Z,this.data=ae,this.title="Something went wrong",ae&&(this.title=ae.title||"Something went wrong",this.message=ae.message,this.copyLogsToClipboard=ae.copyLogsToClipboard)}copyLogs(){this.copyLogsToClipboard&&this.copyLogsToClipboard()}dismiss(){this.snackBar.dismiss()}static{this.\u0275fac=function(ae){return new(ae||de)(C.rXU(h.UG),C.rXU(h.ht,8))}}static{this.\u0275cmp=C.VBU({type:de,selectors:[["snackbar-error"]],decls:13,vars:4,consts:[["mat-dialog-title",""],["color","warn"],["mat-dialog-content",""],[4,"ngIf"],["mat-dialog-actions",""],["mat-stroked-button","","color","primary",3,"click",4,"ngIf"],["mat-flat-button","","color","primary",3,"click"],["mat-stroked-button","","color","primary",3,"click"]],template:function(ae,Le){1&ae&&(C.j41(0,"div",0)(1,"mat-icon",1),C.EFF(2,"warning"),C.k0s(),C.j41(3,"span"),C.EFF(4),C.k0s()(),C.j41(5,"div",2)(6,"div"),C.EFF(7),C.k0s(),C.DNE(8,u,2,0,"div",3),C.k0s(),C.j41(9,"div",4),C.DNE(10,P,2,0,"button",5),C.j41(11,"button",6),C.bIt("click",function(){return Le.dismiss()}),C.EFF(12,"Close"),C.k0s()()),2&ae&&(C.R7$(4),C.JRh(Le.title),C.R7$(3),C.JRh(Le.message),C.R7$(),C.Y8G("ngIf",Le.copyLogsToClipboard),C.R7$(2),C.Y8G("ngIf",Le.copyLogsToClipboard))},dependencies:[w.m_,w.An,O.Hl,O.$z,d.hM,d.BI,d.E7,d.Yi,c.MD,c.bT],styles:[".mat-mdc-dialog-title[_ngcontent-%COMP%]{display:grid;grid-template-columns:min-content 1fr;grid-column-gap:.4em;align-items:center}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:space-between}.mat-mdc-dialog-content[_ngcontent-%COMP%]{display:grid;grid-row-gap:1em}"]})}}return de})();var E=function(de){return de.CONFIRM="Are you sure?",de.ERROR="Something went wrong...",de}(E||{});let ne=(()=>{class de{constructor(Z,ae){this.dialog=Z,this.snackBar=ae}confirm(Z,ae=E.CONFIRM){return this.dialog.open(x,{data:{title:ae,message:Z},autoFocus:!1,disableClose:!0,panelClass:"mc-dialog",width:"25em"})}openComponentDialog(Z,ae){return this.dialog.open(Z,ae)}error(Z){return this.openErrorSnackbar(Z)}openErrorSnackbar(Z){return this.snackBar.openFromComponent(T,{data:{title:E.ERROR,message:Z},duration:1e4}).afterDismissed().pipe((0,o.T)(ae=>!!ae))}prompt(Z,ae){const Le=this.dialog.open(y,{autoFocus:!1,disableClose:!0,panelClass:"mc-dialog"});return Le.componentInstance.title=Z,Le.componentInstance.message=ae,Le.afterClosed()}close(){this.dialog.closeAll()}static{this.\u0275fac=function(ae){return new(ae||de)(C.KVO(d.bZ),C.KVO(h.UG))}}static{this.\u0275prov=C.jDH({token:de,factory:de.\u0275fac,providedIn:"root"})}}return de})()},2901:(ut,Ie,a)=>{"use strict";a.d(Ie,{AI:()=>ge,RI:()=>X});var o=a(4907),c=a(7161);const O="1.3.6.1.4.1.11129.5.7";class x extends Error{}class D{constructor(oe,R){this.logService=R,this.randFraction="",this.lastTimeStrLen=0,this.validatePrefix(oe)&&(this.dicomGuidPrefix=oe),this.counter=Math.floor(999*Math.random())+1}logAndThrowError(oe){throw this.logService.error(oe),oe}isUidBlockCorrectlyFormatted(oe){if(!oe||oe.match(".*[^0-9].*"))return!1;const R=oe.charCodeAt(0);return!(1===oe.length&&R<48||oe.length>1&&R<49)}validatePrefix(oe){""===oe&&this.logAndThrowError(new x("DICOM UID prefix is undefined.")),(oe=oe.trim().replace(/\.+$/gm,"")).startsWith(O)||this.logAndThrowError(new x(`DICOM UID prefix must start with "${O}". The prefix is defined as "${oe}."`));const R=oe.split("."),se=O.split(".").length,Ee=R.length;se+1!==Ee&&se+2!==Ee&&this.logAndThrowError(new x(`DICOM UID suffix must be defined with 1 or 2 sub-domains of "${O}"`));for(let tt=se;tt3)&&this.logAndThrowError(new x("DICOM UID suffix must end with a suffix of 3 digits or less."))}return oe}getTime(){const oe=(new Date).getTime().toString();return 0===this.lastTimeStrLen&&(this.lastTimeStrLen=oe.length),oe}getCounter(){const oe=String(this.counter);return oe.padStart(String(999).length-oe.length,"0")}incrementCounter(){return this.counter||(this.counter=Math.floor(999*Math.random()-1)),this.counter++,this.counter>999&&(this.counter=1),this.getCounter()}initRandomFraction(){const tt=[this.dicomGuidPrefix,"1",this.getTime()+this.getCounter()].join(".").length-64;if(0===tt)this.randFraction=String(Math.floor(9*Math.random()));else{const Y=[String(Math.floor(9*Math.random())+1)];for(let Re=0;Re>tt;Re--)Y.push(String(Math.floor(10*Math.random())));this.randFraction=Y.join("")}return this.randFraction}getRandomFraction(){return""===this.randFraction&&(this.randFraction=this.initRandomFraction()),this.randFraction}updateRandomFraction(){return this.randFraction=this.initRandomFraction(),this.randFraction}generateUid(){this.randFraction=this.getRandomFraction();const oe=this.getTime();oe.length!==this.lastTimeStrLen&&(this.lastTimeStrLen=oe.length,this.updateRandomFraction());const R=this.getCounter(),se=[this.dicomGuidPrefix,this.randFraction,oe+R].join(".");return se.length>64&&this.logAndThrowError(new Error("UID length exceeds max length for DICOM UID.")),se}}function p(Me,oe,R=!0){const se=Uint8Array.from(atob(oe),Re=>Re.charCodeAt(0)),Ee=Me.BYTES_PER_ELEMENT,Y=new Array(se.length/Ee);if(se.length%Ee!=0)throw new Error(`Invalid byte count for ${8*Ee}-bit float data.`);for(let Re=0;Re[tt/R,-Y/se]).flat()}function M(Me,oe){const R=(0,o.$K)(Me,o.lo.REFERENCED_SERIES_SEQUENCE)[0],se=oe.sopClassUid,Ee=(0,o._W)(R,o.lo.REFERENCED_SERIES_SEQUENCE,o.lo.REFERENCED_SOP_INSTANCE_UID)||oe.levelMap[0].properties[0].instanceUid,tt=function K(Me,oe){return oe.levelMap.find(R=>R.properties.some(se=>se.instanceUid===Me))}(Ee,oe);return{referencedImage:{sopClassUid:se,sopInstanceUid:Ee,pixelSize:{width:tt?.pixelWidth??0,height:tt?.pixelHeight??0},dicomModel:tt.dicomModel},seriesInstanceUid:(0,o._W)(R,o.lo.SERIES_INSTANCE_UID)||(0,o._W)(Me,o.lo.SERIES_INSTANCE_UID)}}function j(Me){return Number(Me.replace(/[^0-9]/g,"").slice(-9))}let ge=(()=>{class Me{constructor(R,se,Ee,tt,Y){this.authGuard=R,this.http=se,this.logService=Ee,this.userService=tt,this.uuidGen=Y,this.currentUser="",this.destroyed$=new h.m(1),this.dicomAnnotationInstances$=new u.t([]),this.loadingDicomAnnotations$=new u.t(!0),Y?this.uuidGenerator=Y:Ae.c.DICOM_GUID_PREFIX&&(this.uuidGenerator=new D(Ae.c.DICOM_GUID_PREFIX,this.logService)),(Ae.c.ANNOTATION_HASH_STORED_USER_EMAIL?this.userService.getCurrentUserHash$():this.userService.getCurrentUser$()).subscribe(Re=>{this.currentUser=Re??""})}ngOnDestroy(){this.destroyed$.next(!0),this.destroyed$.complete()}annotationsToDicomModel(R){if(!R||!R.annotationGroupSequence)return{};const se=R.instance.referencedSeries.referencedImage.dicomModel,Ee=new Date,tt=Ee.toJSON().slice(0,10).split("-").join(""),Y=(0,o.SY)("DA",tt),Re=(0,o.SY)("TM",[`${String(Ee.getHours()).padStart(2,"0")}${String(Ee.getMinutes()).padStart(2,"0")}${String(Ee.getSeconds()).padStart(2,"0")}.${String(Ee.getMilliseconds()).padEnd(6,"0")}`]),De={"00480301":(0,o.SY)("CS","VOLUME"),"00200010":se["00200010"],"00400560":se["00400560"],"00020012":(0,o.SY)("UI","1.3.6.1.4.1.11129.5.4.1"),"00200013":(0,o.SY)("IS",[j(R.instance.path.instanceUID)]),"00020013":(0,o.SY)("SH","Google"),"00400513":(0,o.SY)("CS"),"00400518":(0,o.SY)("SQ"),"00400555":se["00400555"],"00080005":(0,o.SY)("CS","ISO_IR 192"),"00080020":se["00080020"],"00080023":Y,"00080030":se["00080030"],"00080033":Re,"00080050":se["00080050"],"00080070":(0,o.SY)("LO","GOOGLE"),"00080080":(0,o.SY)("LO"),"00080090":(0,o.SY)("PN"),"00081090":(0,o.SY)("LO","Madcap"),"00100010":se["00100010"],"00100020":se["00100020"],"00100030":se["00100030"],"00100040":se["00100040"],"00181000":(0,o.SY)("LO","1.0"),"00181020":(0,o.SY)("LO","1.0"),"00200011":(0,o.SY)("IS",[j(R.instance.path.seriesUID)]),"00700081":(0,o.SY)("LO","microscopy annotations"),"00700080":(0,o.SY)("CS","SM_ANN"),[o.lo.CONTAINER_IDENTIFIER]:se[o.lo.CONTAINER_IDENTIFIER],[o.lo.TOTAL_PIXEL_MATRIX_ORIGIN_SEQUENCE]:se[o.lo.TOTAL_PIXEL_MATRIX_ORIGIN_SEQUENCE],[o.lo.MODALITY]:(0,o.SY)("CS",o.Oo.ANNOTATION),[o.lo.TRANSFER_SYNTAX_UID]:(0,o.SY)("UI",o.f1.IMPLICIT_VR_LITTLE_ENDIAN),[o.lo.SOP_CLASS_UID]:(0,o.SY)("UI",o.fg.MICROSCOPY_BULK_SIMPLE_ANNOTATIONS_STORAGE),[o.lo.STUDY_INSTANCE_UID]:(0,o.SY)("UI",R.instance.path.studyUID),[o.lo.SERIES_INSTANCE_UID]:(0,o.SY)("UI",R.instance.path.seriesUID),[o.lo.SOP_INSTANCE_UID]:(0,o.SY)("UI",R.instance.path.instanceUID),[o.lo.ANNOTATION_COORDINATE_TYPE]:(0,o.SY)("CS",R.annotationCoordinateType),[o.lo.INSTANCE_CREATION_TIME]:Re,[o.lo.INSTANCE_CREATION_DATE]:Y},nt=(Nt,on,ln)=>{De[Nt]=(0,o.SY)(ln,on)};if(R.instance.referencedSeries){const Nt=this.buildReferencedSeriesModel(R.instance.referencedSeries);nt(o.lo.REFERENCED_SERIES_SEQUENCE,[Nt],"SQ"),nt(o.lo.REFERENCED_IMAGE_SEQUENCE,(0,o.$K)(Nt,o.lo.REFERENCED_INSTANCE_SEQUENCE),"SQ")}const ht=R.annotationGroupSequence.map(Nt=>this.buildAnnotationGroupModel(Nt,R.instance.referencedSeries.referencedImage.pixelSize));ht.length>0&&nt(o.lo.ANNOTATION_GROUP_SEQUENCE,ht,"SQ");const jt=(0,o.SY)("SQ",[{[o.lo.LONG_CODE_VALUE]:(0,o.SY)("UC",R.instance.annotatorId??"unknown"),[o.lo.CODE_MEANING]:(0,o.SY)("LO","author"),"00080102":(0,o.SY)("LO","99AUTH")}]);return De[o.lo.OPERATOR_IDENTIFICATION_SEQUENCE]=(0,o.SY)("SQ",[{[o.lo.PERSON_IDENTIFICATION_CODE_SEQUENCE]:jt}]),De}bulkDataURItoInlineBinary(R,se){if(R.BulkDataURI){const Ee={...se&&{authorization:"Bearer "+se},Accept:"application/octet-stream; transfer-syntax=*"};return this.http.get(R.BulkDataURI,{headers:Ee,responseType:"arraybuffer"}).pipe((0,W.T)(tt=>function I(Me){let oe="";const R=new Uint8Array(Me),se=R.byteLength;for(let Ee=0;Ee(R.InlineBinary=tt,R)))}return(0,P.of)(R)}createOrModifyDicomAnnotation(R,se=3){if(!Ae.c.ANNOTATIONS_DICOM_STORE_BASE_URL)return T.w;R.instance.path.instanceUID=this.generateUUID();const Ee=[...this.dicomAnnotationInstances$.getValue()].find(Y=>Y.annotatorId===this.currentUser);R.instance.path.seriesUID=Ee?Ee.path.seriesUID:this.dicomAnnotationInstances$.getValue().length>0?this.dicomAnnotationInstances$.getValue()[0].path.seriesUID:this.generateUUID(!0);const tt=this.annotationsToDicomModel(R);return Ee?(this.loadingDicomAnnotations$.next(!0),this.writeDicomAnnotations(tt,se).pipe((0,ne.Q)(this.destroyed$),(0,W.T)(()=>{const Y=R.instance;let Re=this.dicomAnnotationInstances$.getValue();const De=Re.filter(({annotatorId:nt})=>nt===this.currentUser);return Re=Re.filter(({annotatorId:nt})=>nt!==this.currentUser),Re.push(Y),this.dicomAnnotationInstances$.next(Re),De}),(0,Z.n)(Y=>{const Re=Y.map(De=>this.deleteDicomAnnotationsPath(De.path));return(0,E.p)(Re)}),(0,W.T)(()=>tt),(0,ie.j)(()=>{this.loadingDicomAnnotations$.next(!1)}))):this.writeDicomAnnotations(tt,se).pipe((0,ne.Q)(this.destroyed$),(0,de.M)(Y=>{const Re=R.instance,De=this.dicomAnnotationInstances$.getValue(),nt=[Re];De.length&&nt.push(...De),this.dicomAnnotationInstances$.next(nt)}),(0,W.T)(()=>tt),(0,ie.j)(()=>{this.loadingDicomAnnotations$.next(!1)}))}deleteDicomAnnotations(R){this.loadingDicomAnnotations$.next(!0);const se=Ae.c.ANNOTATIONS_DICOM_STORE_BASE_URL+Ae.c.ANNOTATIONS_DICOM_STORE_PARENT+R;return this.loadingDicomAnnotations$.next(!0),this.authGuard.getOAuthToken().pipe((0,ne.Q)(this.destroyed$),(0,Z.n)(Ee=>{const tt={...Ee&&{authorization:"Bearer "+Ee}};return this.http.delete(se,{headers:tt})}),(0,ae.W)(Ee=>{throw Ee=JSON.stringify(Ee),this.logService.error({name:`httpRequest: "${se}"`,message:Ee}),new Error("Error while deleting Dicom annotations.")}),(0,ie.j)(()=>{this.loadingDicomAnnotations$.next(!1)}))}deleteDicomAnnotationsPath(R){return this.deleteDicomAnnotations((0,c.hd)(R))}dicomModelToAnnotationInstance(R,se,Ee=0){const tt=(0,o._W)(R,o.lo.SOP_INSTANCE_UID),Y=(0,o._W)(R,o.lo.SERIES_INSTANCE_UID),Re=(0,o._W)(R,o.lo.STUDY_INSTANCE_UID),De=this.getAnnotatorIdByDicomAnnotationInstance(R)||`Unknown user ${Ee+1}`,nt=this.getCreationDateAndTimeByDicomModel(R);return{path:{studyUID:Re,seriesUID:Y,instanceUID:tt},annotatorId:De,referencedSeries:M(R,se),...nt&&{creationDateAndTime:nt}}}dicomModelToAnnotations(R,se){const tt=M(R,se).referencedImage.pixelSize,Y=(0,o._W)(R,o.lo.ANNOTATION_COORDINATE_TYPE);return{instance:this.dicomModelToAnnotationInstance(R,se),annotationCoordinateType:Y,annotationGroupSequence:(0,o.$K)(R,o.lo.ANNOTATION_GROUP_SEQUENCE).map(De=>this.dicomModelToAnnotationGroup(De,tt,Y)).flat()}}fetchDicomAnnotationInstances(R,se){if(!Ae.c.ENABLE_ANNOTATIONS)return(0,P.of)([]);const Ee=(0,c.LG)(R),tt={baseUrl:Ae.c.ANNOTATIONS_DICOM_STORE_BASE_URL+Ae.c.ANNOTATIONS_DICOM_STORE_PARENT,path:{studyUID:Ee.path.studyUID},resource:"instances",queryParams:{includefield:[o.lo.STUDY_INSTANCE_UID,o.lo.OPERATOR_IDENTIFICATION_SEQUENCE,o.lo.INSTANCE_CREATION_DATE,o.lo.INSTANCE_CREATION_TIME,o.lo.REFERENCED_INSTANCE_SEQUENCE,o.lo.REFERENCED_IMAGE_SEQUENCE,o.lo.REFERENCED_SERIES_SEQUENCE,o.lo.ANNOTATION_COORDINATE_TYPE].join(","),modality:"ANN"}},Y=(0,c.rH)(tt);return this.authGuard.getOAuthToken().pipe((0,ne.Q)(this.destroyed$),(0,Z.n)(Re=>{const De={...Re&&{authorization:"Bearer "+Re},"content-type":"application/dicom+json",Accept:"application/dicom+json"};return this.loadingDicomAnnotations$.getValue()||this.loadingDicomAnnotations$.next(!0),this.http.get(Y,{headers:De})}),(0,W.T)(Re=>Re&&Re.length>0&&Re[0]?Re:[]),(0,W.T)(Re=>Me.filterDicomModelsByReferencedSeriesUID(Re,Ee.path.seriesUID)),(0,W.T)(Re=>{if(!Re)return this.dicomAnnotationInstances$.next([]),[];const De=Re.filter(nt=>nt[o.lo.ANNOTATION_COORDINATE_TYPE]).map((nt,ht)=>this.dicomModelToAnnotationInstance(nt,se,ht));return this.dicomAnnotationInstances$.next(De),De}),(0,ae.W)(Re=>{throw this.dicomAnnotationInstances$.next([]),this.logService.error({name:`httpRequest: "${Y}"`,message:JSON.stringify(Re)}),Re}),(0,ie.j)(()=>{this.loadingDicomAnnotations$.next(!1)}))}fetchDicomAnnotationModels(R){if(this.loadingDicomAnnotations$.next(!0),!Ae.c.ENABLE_ANNOTATIONS)return(0,P.of)([]);const se=this.authGuard.getOAuthToken();return se.pipe((0,ne.Q)(this.destroyed$),(0,Z.n)(Ee=>{const tt={...Ee&&{authorization:"Bearer "+Ee},"content-type":"application/dicom+json",Accept:"application/dicom+json"};this.loadingDicomAnnotations$.getValue()||this.loadingDicomAnnotations$.next(!0);const Y=(0,c.LG)(R);Y.baseUrl=Ae.c.ANNOTATIONS_DICOM_STORE_BASE_URL+Ae.c.ANNOTATIONS_DICOM_STORE_PARENT,Y.resource="metadata";const Re=(0,c.rH)(Y);return this.http.get(Re,{headers:tt})}),(0,Le.Z)(Ee=>Ee),(0,_e.E)(se),(0,Le.Z)(([Ee,tt])=>{const Y=(0,o.$K)(Ee,o.lo.ANNOTATION_GROUP_SEQUENCE),Re=[o.lo.POINT_COORDINATES_DATA,o.lo.DOUBLE_POINT_COORDINATES_DATA,o.lo.LONG_PRIMITIVE_POINT_INDEX_LIST].map(De=>Y.map((nt,ht)=>({attr:nt[De],index:ht})).filter(({attr:nt})=>nt?.BulkDataURI).map(({attr:nt,index:ht})=>this.bulkDataURItoInlineBinary(nt,tt).pipe((0,de.M)(jt=>{Y[ht][De]=jt})))).flat();return 0===Re.length?(0,P.of)(Ee):(0,E.p)(Re).pipe((0,W.T)(()=>Ee))}),(0,Ce.$)(),(0,ne.Q)(this.destroyed$),(0,ae.W)(Ee=>{throw Ee=JSON.stringify(Ee),this.logService.error({name:"httpRequest: ",message:Ee}),new Error("Error while fetching Dicom annotations.")}),(0,ie.j)(()=>{this.loadingDicomAnnotations$.next(!1)}))}getAnnotatorIdByDicomAnnotationInstance(R){if(!R[o.lo.OPERATOR_IDENTIFICATION_SEQUENCE])return"";let se="",Ee=(R[o.lo.OPERATOR_IDENTIFICATION_SEQUENCE]?.Value??[""])[0];if(!(Ee instanceof String)){let tt=(Ee[o.lo.PERSON_IDENTIFICATION_CODE_SEQUENCE]?.Value??[""])[0];if(!(tt instanceof String)){(tt[o.lo.LONG_CODE_VALUE]?.Value??[""])[0]instanceof String||(se=(tt[o.lo.LONG_CODE_VALUE]?.Value??[""])[0])}}return se}getUniqueAnnotationInstances(R){R=[...R];const se=new Map;return R.forEach(Ee=>{se.has(Ee.annotatorId)?(se.get(Ee.annotatorId)?.creationDateAndTime??0)<(Ee?.creationDateAndTime??0)&&se.set(Ee.annotatorId,Ee):se.set(Ee.annotatorId,Ee)}),[...se.values()]}buildAnnotationGroupModel(R,se){const Ee={[o.lo.ANNOTATION_GROUP_NUMBER]:(0,o.SY)("US",[R.idNumber]),[o.lo.ANNOTATION_GROUP_UID]:(0,o.SY)("UI",R.annotationGroupUid||this.generateUUID()),[o.lo.ANNOTATION_GROUP_LABEL]:(0,o.SY)("LO",R.annotationGroupLabel),[o.lo.ANNOTATION_GROUP_DESCRIPTION]:(0,o.SY)("UT",R.annotationGroupDescription),[o.lo.ANNOTATION_GROUP_GENERATION_TYPE]:(0,o.SY)("CS",R.annotationGroupGenerationType)};if(R.annotationPropertyCategoryCodeSequence?.length)Ee[o.lo.ANNOTATION_PROPERTY_CATEGORY_CODE_SEQUENCE]=(0,o.SY)("SQ",[this.buildAnnotationPropertyCategoryCodeModel(R.annotationPropertyCategoryCodeSequence[0])]);else{const ht={"00080100":(0,o.SY)("SH","91723000"),"00080102":(0,o.SY)("SH","SCT"),"00080104":(0,o.SY)("LO","Anatomical structure")};Ee[o.lo.ANNOTATION_PROPERTY_CATEGORY_CODE_SEQUENCE]=(0,o.SY)("SQ",[ht])}const tt={"00080100":(0,o.SY)("SH","395538009"),"00080102":(0,o.SY)("SH","SCT"),"00080104":(0,o.SY)("LO",R.annotationGroupDescription)};Ee[o.lo.ANNOTATION_PROPERTY_TYPE_CODE_SEQUENCE]=(0,o.SY)("SQ",[tt]),Ee[o.lo.GRAPHIC_TYPE]=(0,o.SY)("CS",R.graphicType);const Y=X(R.pointCoordinatesData,se),Re=g(Float32Array,function N(Me){let oe=0;const R=Me.length;for(let se=0;se0}(Y)?Y:function V(Me){if(0===Me.length)return[];const oe=[];for(let R=Me.length-2;R>=0;R-=2)oe.push(Me[R],Me[R+1]);return oe}(Y));Ee[o.lo.POINT_COORDINATES_DATA]={InlineBinary:Re,vr:"OF"};const De=R.longPrimitivePointIndexList,nt=g(Int32Array,De);return Ee[o.lo.LONG_PRIMITIVE_POINT_INDEX_LIST]={InlineBinary:nt,vr:"OL"},Ee[o.lo.NUMBER_OF_ANNOTATIONS]=(0,o.SY)("UL",[De.length]),Ee[o.lo.ANNOTATION_APPLIES_TO_ALL_OPTICAL_PATHS]=(0,o.SY)("CS","YES"),Ee}buildAnnotationPropertyCategoryCodeModel(R){return{[o.lo.CODE_VALUE]:(0,o.SY)("SH",[R.codeValue]),[o.lo.CODING_SCHEME_DESIGNATOR]:(0,o.SY)("SH",[String(R.codingSchemeDesignator)]),[o.lo.CODING_SCHEME_VERSION]:(0,o.SY)("SH",[R.codingSchemeVersion]),[o.lo.CONTEXT_IDENTIFIER]:(0,o.SY)("CS",R.contextIdentifier?[R.contextIdentifier]:void 0)}}buildReferencedSeriesModel(R){const se={[o.lo.SERIES_INSTANCE_UID]:(0,o.SY)("UI",[R.seriesInstanceUid])};if(R.referencedImage){const Ee=(0,o.SY)("SQ",[{[o.lo.REFERENCED_SOP_CLASS_UID]:(0,o.SY)("UI",[R.referencedImage.sopClassUid]),[o.lo.REFERENCED_SOP_INSTANCE_UID]:(0,o.SY)("UI",[R.referencedImage.sopInstanceUid])}]);se[o.lo.REFERENCED_INSTANCE_SEQUENCE]=Ee}return se}dicomModelToAnnotationGroup(R,se,Ee){const tt={};if("2D"!==Ee)return tt.pointCoordinatesData=[],tt.error=`Unsupported coordinate type: ${Ee}`,[tt];tt.idNumber=Number(R[o.lo.ANNOTATION_GROUP_NUMBER].Value),tt.annotationGroupUid=R[o.lo.ANNOTATION_GROUP_UID].Value[0],R[o.lo.ANNOTATION_GROUP_LABEL]?.Value&&(tt.annotationGroupLabel=R[o.lo.ANNOTATION_GROUP_LABEL].Value[0]),R[o.lo.ANNOTATION_GROUP_DESCRIPTION]?.Value&&(tt.annotationGroupDescription=R[o.lo.ANNOTATION_GROUP_DESCRIPTION].Value[0]),tt.annotationGroupGenerationType=R[o.lo.ANNOTATION_GROUP_GENERATION_TYPE].Value[0];const Y=(0,o.$K)(R,o.lo.ANNOTATION_PROPERTY_CATEGORY_CODE_SEQUENCE);if(Y?.length){const rt=Y[0],ce={codeValue:(0,o._W)(rt,o.lo.CODE_VALUE),codingSchemeDesignator:Number((0,o._W)(rt,o.lo.CODING_SCHEME_DESIGNATOR)),codingSchemeVersion:(0,o._W)(rt,o.lo.CODING_SCHEME_VERSION),contextIdentifier:(0,o._W)(rt,o.lo.CONTEXT_IDENTIFIER)};tt.annotationPropertyCategoryCodeSequence=[ce]}tt.graphicType=R[o.lo.GRAPHIC_TYPE].Value[0];const Re=R[o.lo.LONG_PRIMITIVE_POINT_INDEX_LIST]?.InlineBinary??"",nt=p(y(R[o.lo.LONG_PRIMITIVE_POINT_INDEX_LIST]?.vr??"OL"),Re);nt.length||nt.push(1);const ht=nt.map(rt=>rt-1),jt=R[o.lo.DOUBLE_POINT_COORDINATES_DATA]?.InlineBinary?o.lo.DOUBLE_POINT_COORDINATES_DATA:o.lo.POINT_COORDINATES_DATA,Nt=R[jt]?.InlineBinary??"",ln=p(y(R[jt]?.vr??""),Nt);ht.slice(-1)[0]!==ln.length&&ht.push(ln.length);const Ot=[];if("POINT"===tt.graphicType){const rt={...tt};rt.pointCoordinatesData=this.pixelsToMetersWithYFlip(ln,se),Ot.push(rt)}else for(let rt=0;rt{const tt=(0,o.$K)(Ee,o.lo.REFERENCED_SERIES_SEQUENCE)[0],Y=(0,o._W)(tt,o.lo.SERIES_INSTANCE_UID),Re=(0,o._W)(Ee,o.lo.SERIES_INSTANCE_UID);return Y?Y===se:Re===se})}writeDicomAnnotations(R,se=3){this.loadingDicomAnnotations$.next(!0);const Ee=`${Ae.c.ANNOTATIONS_DICOM_STORE_BASE_URL+Ae.c.ANNOTATIONS_DICOM_STORE_PARENT}/studies`;return this.authGuard.getOAuthToken().pipe((0,ne.Q)(this.destroyed$),(0,Z.n)(tt=>{this.loadingDicomAnnotations$.getValue()||this.loadingDicomAnnotations$.next(!0);const Y="DICOMwebBoundary",Re=`--${Y}\r\nContent-Type: application/dicom+json; transfer-syntax=1.2.840.10008.1.2.1\r\n\r\n${JSON.stringify([R])}\r\n--${Y}--`,De={"Content-Type":'multipart/related; type="application/dicom+json";transfer-syntax=1.2.840.10008.1.2.1;boundary='+Y,...tt&&{authorization:"Bearer "+tt},Accept:"application/dicom+json"};return this.http.post(Ee,Re,{headers:De})}),(0,ae.W)(tt=>{const Y=JSON.stringify(tt);if(se&&Y.includes("Cannot upload DICOM Annotation. Uid triple")){se--;const Re=this.generateUUID(!0);return R[o.lo.SOP_INSTANCE_UID].Value=Re,this.writeDicomAnnotations(R,se)}throw this.logService.error({name:`httpRequest: "${Ee}"`,message:Y}),tt}))}static{this.\u0275fac=function(se){return new(se||Me)(ke.KVO(Ue.u),ke.KVO(ve.Qq),ke.KVO(ye.K),ke.KVO(Se.D),ke.KVO(D,8))}}static{this.\u0275prov=ke.jDH({token:Me,factory:Me.\u0275fac,providedIn:"root"})}}return Me})()},3738:(ut,Ie,a)=>{"use strict";a.d(Ie,{w:()=>ve,PQ:()=>Ce,do:()=>Se,N2:()=>te,w8:()=>q,Lk:()=>J,Z6:()=>z});var o=a(8294),c=a(4907),O=a(7673),d=a(8810),w=a(7786),C=a(9030),x=a(5558),D=a(6354),p=a(9437),g=a(1594),y=a(6365),h=a(5964),u=a(6594);const P="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),T="+/=".split("");var W=a(4119),ne=a(7161),de=a(1182),ie=a(4438),Z=a(1626),ae=a(8472),Le=a(2840);const _e=new RegExp("^.*studies/[0-9.]*");var Ce=function(X){return X.NONE="",X.NO="no",X.YES="yes",X.ADOBERGB="adobergb",X.ROMMRGB="rommrgb",X.SRGB="srgb",X}(Ce||{});const ke="Unknown Case ID",Ue="Unknown Case ID";let ve=(()=>{class X{constructor(N,V,I){this.http=N,this.authService=V,this.logService=I,this.slideLabelTextSegment=new RegExp("\\W?\\w+","g")}getImageTile(N,V,I,M=Ce.NONE){const j=V.levelMap[I.scale],{tileSize:ge}=j,Me=Math.ceil(Number(j.width)/ge),oe=Math.floor(I.corner.x/ge),se=Math.floor(I.corner.y/ge)*Me+oe%Me;let tt,Ee=0,Y="",Re=0;for(let nt=0;nt=Ee+j.properties[nt].frames)){tt=se-Ee+1,Y=j.properties[nt].instanceUid,Re=j.downSampleMultiplier??0;break}Ee+=j.properties[nt].frames}return typeof tt>"u"||!Y?(0,O.of)(""):V.isFlatImage?this.getFlatImage(N,Y):this.getEncodedImageTile(N,Y,tt,Re,M)}getEncodedImageTile(N,V,I,M=0,j=Ce.NONE,ge=!1){const Me=this.generateEncodedImageTileUrl(N,V,I,M,j,ge);return this.httpGetStringEncodedImage(Me)}generateEncodedImageTileUrl(N,V,I,M=0,j=Ce.NONE,ge=!1){let Me=`${N}/instances/${V}/frames/${I}/rendered`,oe=!0;return M&&(Me+=`?downsample=${M}`,oe=!1),j&&(Me+=oe?"?":"&",Me+=`iccprofile=${j}`,oe=!1),ge&&(Me+=oe?"?":"&",Me+="disable_caching="+ge.toString()),Me}getEncodedImageTiles(N,V,I,M,j=0,ge=Ce.NONE,Me=!1){let R=`${M}${N}/instances/${V}/frames/${I.join(",")}`,se=!0;return j&&(R+=`?downsample=${j}`,se=!1),ge&&(R+=se?"?":"&",R+=`iccprofile=${ge}`,se=!1),Me&&(R+=se?"?":"&",R+="disable_caching="+Me.toString()),this.httpGetStringEncodedImage(R)}getFlatImage(N,V){return this.httpGetStringEncodedImage(`${N}/instances/${V}/rendered`)}httpGetStringEncodedImage(N,V=de.jf.DEFAULT){return this.authService.getOAuthToken().pipe((0,x.n)(I=>this.http.get(N,{headers:{Accept:V+",multipart/related",Authorization:"Bearer "+(I??"")},responseType:"arraybuffer",withCredentials:!1}).pipe((0,D.T)(M=>String(function E(X){const K=P.concat(T),N=[];for(let V=0;V>6,Ee=63&Me;ge||(Ee=64,M||(se=64)),N.push(K[I>>2],K[(3&I)<<4|j>>4],K[se]||"",K[Ee]||"")}return N.join("")}(new Uint8Array(M)))),(0,p.W)(M=>(this.logService.error({name:`httpGetImg: "${N}"`,message:M}),(0,d.$)("Network error"))))))}httpGetText(N){return this.authService.getOAuthToken().pipe((0,x.n)(V=>this.http.get(N,{headers:{Authorization:"Bearer "+V},responseType:"text"}).pipe((0,p.W)(I=>(this.logService.error({name:`httpGetText: "${N}"`,message:I}),(0,d.$)(()=>new Error("Network error")))))))}getInstancesMetadata(N,V,I){const M=new URLSearchParams;V.length&&M.append("includefield",V.join(",")),I&&M.append("limit",I.toString());const j=M.toString();return this.httpGetText(`${N}/instances${j?"?":""}${j}`).pipe((0,D.T)(Me=>JSON.parse(Me)))}getExtraMetadata(N){return this.httpGetText(`${N}/metadata`).pipe((0,g.$)(),(0,D.T)(V=>JSON.parse(V)))}getImageSecondaryCapture(N,V,I=de.jf.DEFAULT,M=Ce.NONE){let j=this.generateImageSecondaryCaptureUrl(N,V,I);return M&&(j+=`?iccprofile=${M}`),this.httpGetStringEncodedImage(j,I)}generateImageSecondaryCaptureUrl(N,V,I=de.jf.DEFAULT){return`${N}/instances/${V}/rendered`}searchSlideLabel(N){const V=N.match(this.slideLabelTextSegment);if(!V)throw new Error(`Slide ID "${N}" does not confirm to provide case id template`);const I=[1,2,3].map(j=>V.length-j).filter(j=>j>0).map(j=>this.searchSeriesById(V.slice(0,j).join(""),"caseId"),c.Oo.SLIDE_MICROSCOPY);return(0,w.h)(...I).pipe((0,x.n)(j=>j||[]),(0,D.T)(j=>(0,C.v)(()=>this.getInstancesMetadata(ye(W.c.IMAGE_DICOM_STORE_BASE_URL,j),[c.lo.CONTAINER_IDENTIFIER,c.lo.STUDY_INSTANCE_UID,c.lo.SERIES_INSTANCE_UID],1))),(0,y.U)(5),(0,D.T)(j=>j[0]),(0,h.p)(j=>{const ge=j[c.lo.CONTAINER_IDENTIFIER]?.Value;return ge?.constructor===Array&&ge[0].constructor===String&&ge[0]===N}),(0,u.$)())}searchSeriesById(N,V,I=c.Oo.SLIDE_MICROSCOPY){const M={baseUrl:W.c.IMAGE_DICOM_STORE_BASE_URL,resource:"series",queryParams:{modality:I.toString()},path:{}};let j;switch("*"===N&&(N="",M.queryParams.limit=20),V){case"caseId":j=o.H.caseId;break;case"slideId":j=o.H.slideId;break;case"patientId":j=o.H.patientId;break;default:throw new Error(`Invalid search type ${V}`)}if(j.dicomWebSearchToken&&(M.queryParams[j.dicomWebSearchToken]=N),"slideId"===V)return this.searchSlideLabel(N);if(void 0===j.dicomWebSearchToken)throw new Error(`dicomWebSearchToken not defined for ${V}`);return this.httpGetText((0,ne.rH)(M)).pipe((0,g.$)(),(0,D.T)(ge=>ge&&JSON.parse(ge)||[]))}getStudyMeta(N){const V=(0,ne.LG)(N);return V.resource="series",V.queryParams={includefield:[c.lo.ACCESSION_NUMBER,c.lo.STUDY_DATE].join(","),limit:1},this.httpGetText((0,ne.rH)(V)).pipe((0,g.$)(),(0,D.T)(I=>JSON.parse(I)))}getInstancesByStudy(N,V=c.Oo.SLIDE_MICROSCOPY){return this.httpGetText(`${N}/instances?modality=${V}&includefield=${c.lo.CONTAINER_IDENTIFIER}`).pipe((0,g.$)(),(0,D.T)(I=>JSON.parse(I)))}static{this.\u0275fac=function(V){return new(V||X)(ie.KVO(Z.Qq),ie.KVO(ae.u),ie.KVO(Le.K))}}static{this.\u0275prov=ie.jDH({token:X,factory:X.\u0275fac,providedIn:"root"})}}return X})();function ye(X,K){const N=K[c.lo.STUDY_INSTANCE_UID]?.Value;let V="";N?.constructor===Array&&N[0].constructor===String&&(V=N[0]);const I=K[c.lo.SERIES_INSTANCE_UID]?.Value;let M="";return I?.constructor===Array&&I[0].constructor===String&&(M=I[0]),`${X}/studies/${V}/series/${M}`}function Se(X){return X.reduce((N,V)=>{if(V.dicomUri){const I=V.dicomUri.match(_e);if(!I||!I[0])throw new Error(`Malformated dicom uid: ${V.dicomUri}`);{const M=I[0];N.set(M,[...N.get(M)??[],V])}}return N},new Map)}function z(X,K){const N=X[c.lo.PATIENT_NAME]?.Value,V=N?.constructor!==Array&&(0,c.$q)(N)?N[0]:void 0;K.name??=(0,c.nD)(V);const I=X[c.lo.PATIENT_ID]?.Value;let M="";I?.constructor===Array&&I[0].constructor===String&&(M=I[0]),K.patientId??=M;const j=X[c.lo.ACCESSION_NUMBER]?.Value;let ge="Unknown Case ID";j?.constructor===Array&&j[0].constructor===String&&(ge=j[0]??"Unknown Case ID");const Me=X[c.lo.STUDY_DATE]?.Value;let oe="";Me?.constructor===Array&&Me[0].constructor===String&&(oe=Me[0]),(!K.latestCaseDate||oe>K.latestCaseDate)&&(K.latestCaseDate=oe,K.latestCaseAccessionNumber=ge)}function te(X,K,N){const V=K[c.lo.STUDY_INSTANCE_UID]?.Value;let I="";V?.constructor===Array&&V[0].constructor===String&&(I=V[0]);const M=K[c.lo.SERIES_INSTANCE_UID]?.Value;let j="";if(M?.constructor===Array&&M[0].constructor===String&&(j=M[0]),!I||!j)return;let ge=N.get(I);ge||(ge=q(`${X}/studies/${I}`,K,!1)),ge.slides=[...ge.slides??[],L(K)],N.set(I,ge)}function L(X){const K=X[c.lo.STUDY_INSTANCE_UID]?.Value;let N="";K?.constructor===Array&&K[0].constructor===String&&(N=K[0]);const V=X[c.lo.SERIES_INSTANCE_UID]?.Value;let I="";V?.constructor===Array&&V[0].constructor===String&&(I=V[0]);const M=N.slice(N.lastIndexOf(".")+1);return{scanUniqueId:M,name:`pathologySlides/${M}`,dicomUri:`${W.c.IMAGE_DICOM_STORE_BASE_URL}/studies/${N}/series/${I}`}}function q(X,K,N=!1){const V=K[c.lo.ACCESSION_NUMBER]?.Value;let I=ke;V?.constructor===Array&&V[0].constructor===String&&(I=V[0]??ke),N&&(I=Ue);const M=K[c.lo.STUDY_DATE]?.Value;let j="";return M?.constructor===Array&&M[0].constructor===String&&(j=M[0]),{accessionNumber:I,date:(0,c.Yq)(j),caseId:X,slides:[]}}function J(X,K){const N=K[c.lo.CONTAINER_IDENTIFIER]?.Value;let V="";return N?.constructor===Array&&N[0].constructor===String&&(V=N[0]),{slideId:ye(X,K),...V&&{slideRecordId:V}}}},2840:(ut,Ie,a)=>{"use strict";a.d(Ie,{K:()=>d});var o=a(4438),c=a(2073);let d=(()=>{class w{constructor(x){this.userService=x,this.logEntries=[]}error(x){this.addLogEntryError("error",x),console.error(JSON.stringify(x))}getLogEntries(){return this.logEntries}downloadLogs(){const x=this.getLogText(),D=document.createElement("a");D.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(x)),D.setAttribute("download",`viewer-log-${this.getDateString()}.txt`),D.click()}addLogEntryError(x,D){this.logEntries.push({type:x,message:D,date:this.getDateString()})}getLogText(){return this.logEntries.map(x=>[x.date,x.type,JSON.stringify(x.message,null,2)].join(",")).join("\n")}getDateString(){return(new Date).toLocaleString()}static{this.\u0275fac=function(D){return new(D||w)(o.KVO(c.D))}}static{this.\u0275prov=o.jDH({token:w,factory:w.\u0275fac,providedIn:"root"})}}return w})()},7955:(ut,Ie,a)=>{"use strict";a.d(Ie,{T:()=>ke});var o=a(4412),c=a(8810),O=a(983),d=a(4907),w=a(6354),C=a(9437),x=a(3738),Z=a(4119),ae=a(5717),Le=a(4438);let ke=(()=>{class Ue{constructor(ye){this.dicomwebService=ye,this.ENABLE_SERVER_INTERPOLATION=Z.c.ENABLE_SERVER_INTERPOLATION??!1,this.slideDescriptors$=new o.t([]),this.selectedSlideInfo$=new o.t(void 0),this.selectedExtraMetaData$=new o.t(void 0)}computeLevel(ye,Se){let z=ye[d.lo.NUMBER_OF_FRAMES]?.Value?.[0],te=Number(ye?.[d.lo.TOTAL_PIXEL_MATRIX_ROWS]?.Value??NaN),L=Number(ye?.[d.lo.TOTAL_PIXEL_MATRIX_COLUMNS]?.Value??NaN);const q=Math.max(Number(ye?.[d.lo.ROWS]?.Value?.[0]??void 0),Number(ye?.[d.lo.COLS]?.Value?.[0]??void 0)),J=ye[d.lo.SOP_INSTANCE_UID]?.Value?.[0],X=ye[d.lo.OFFSET]?.Value?.[0]??0;let V=Number(ye[d.lo.IMAGE_VOLUME_WIDTH]?.Value??NaN)/L,I=Number(ye[d.lo.IMAGE_VOLUME_HEIGHT]?.Value??NaN)/te;if(!(Number.isFinite(V)&&Number.isFinite(I)||2!==ye[d.lo.PIXEL_SPACING]?.Value?.length)){const j=ye[d.lo.PIXEL_SPACING].Value;V=Number(j[0]),I=Number(j[1])}return V=V&&Number.isFinite(V)?V:void 0,I=I&&Number.isFinite(I)?I:void 0,Se&&(z=1,te=Number(ye?.[d.lo.ROWS]?.Value?.[0]??void 0),L=Number(ye?.[d.lo.COLS]?.Value?.[0]??void 0)),{properties:[{offset:X,frames:z,instanceUid:J}],width:L,height:te,pixelWidth:V,pixelHeight:I,tileSize:q,zoom:0,storedBytes:Math.ceil(Number(ye?.[d.lo.ROWS]?.Value?.[0]??NaN)*Number(ye?.[d.lo.COLS]?.Value?.[0]??NaN)*z*Number(ye?.[d.lo.SAMPLES_PER_PIXEL]?.Value?.[0]??NaN)*Math.ceil(Number(ye?.[d.lo.BITS_ALLOCATED]?.Value?.[0]??NaN)/8)/Number(ye?.[d.lo.LOSSY_IMAGE_COMPRESSION_RATIO]?.Value?.[0]??1)),dicomModel:ye}}fillServerDownsampledLevels(ye){const z=(ye=JSON.parse(JSON.stringify(ye))).reduce((q,J)=>q.width>J.width?q:J),te=new Set;for(let q=1;q1024||L.height>1024)&&!L.downSampleMultiplier){const q=this.downScaleLevel(L,2);q.downSampleMultiplier=2,ye.push(q)}return ye}downScaleLevel(ye,Se,z=!1){return(ye=JSON.parse(JSON.stringify(ye))).width=Math.floor(ye.width/Se),ye.height=Math.floor(ye.height/Se),ye.pixelWidth=ye.pixelWidth&&ye.pixelWidth*Se,ye.pixelHeight=ye.pixelHeight&&ye.pixelHeight*Se,z&&(ye.tileSize=Math.floor(ye.tileSize/Se)),ye.storedBytes&&(ye.storedBytes=Math.ceil(ye.storedBytes/Se/Se)),ye}fillZoom(ye){const Se=ye[0];return ye.map(z=>(z.zoom=Se.pixelWidth&&z.pixelWidth?Se.pixelWidth/z.pixelWidth:z.width/Se.width,z.zoom=Number.parseFloat(z.zoom.toPrecision(6)),z))}computeSlideInfo(ye,Se,z,te,L,q){const J=Se.reduce((N,V)=>N.width>V.width?N:V),K=Se.reduce((N,V)=>N.width{if(!z)throw(0,c.$)(ye+" not found");let te=[];const L=[];let q=!1;const J=z[0]?.[d.lo.CONTAINER_IDENTIFIER]?.Value?.[0];for(const X of z){const N=X[d.lo.SOP_CLASS_UID]?.Value?.[0],V=X[d.lo.SOP_INSTANCE_UID]?.Value?.[0],I=X?.[d.lo.IMAGE_TYPE]?.Value?.[2]??"unknown",M=N===d.fg.TILED_SECONDARY_CAPTURE;if(M||N===d.fg.TILED_MICROSCOPE&&"VOLUME"!==I){const ge=Number(X?.[d.lo.ROWS]?.Value?.[0]??void 0),Me=Number(X?.[d.lo.COLS]?.Value?.[0]??void 0);L.push({width:Me,height:ge,instanceUid:V,type:I,isSecondaryCapture:M});continue}if(q=N===d.fg.VL_MICROSCOPIC_IMAGE_STORAGE||N===d.fg.VL_SLIDE_COORDINATES_MICROSCOPIC_IMAGE_STORAGE,q){let ge=[this.computeLevel(X,q)];return ge=this.fillZoom(ge),this.computeSlideInfo(ye,ge,L,J,q,N)}if(N!==d.fg.TILED_MICROSCOPE)continue;const j=this.computeLevel(X,q);j.properties.sort((ge,Me)=>ge.offset-Me.offset),te.push(j)}te.sort((X,K)=>(X.pixelWidth??0)-(K.pixelWidth??0)),te.splice(te.filter(X=>X).length);for(let X=0;X(X.pixelWidth??0)-(K.pixelWidth??0)),this.computeSlideInfo(ye,te,L,J,q,d.fg.TILED_MICROSCOPE)}),(0,C.W)(z=>(0,c.$)("string"==typeof z?z+" when handling slide metadata":z)))}getSlideExtraMetadata(ye){const Se=(0,ae.Eb)(ye);return this.dicomwebService.getExtraMetadata(ye).pipe((0,w.T)(z=>{const te=z[0];return{patientName:(0,d.nD)(te[d.lo.PATIENT_NAME]?.Value?.[0])||"Unknown Patient Name",patientId:te[d.lo.PATIENT_ID]?.Value?.[0],caseId:te[d.lo.ACCESSION_NUMBER]?.Value?.[0]??"Unknown Case ID",...Se&&{deided:Se},rawValue:te}}),(0,C.W)(z=>(0,c.$)("string"==typeof z?z+" when handling slide extra metadata":z)))}getSlidesForCase(ye){return this.dicomwebService.getInstancesByStudy(ye).pipe((0,w.T)(Se=>{if(!Se)return[];const z=new Map;for(const L of Se){const q=L[d.lo.SERIES_INSTANCE_UID]?.Value?.[0];z.has(q)||z.set(q,{id:`${ye}/series/${q}`,name:L[d.lo.CONTAINER_IDENTIFIER]?.Value?.[0]})}const te=Array.from(z.values()).sort((L,q)=>(L.name??"").localeCompare(q.name??""));return this.slideDescriptors$.next(te),te}))}getImageTile(ye,Se,z){return this.dicomwebService.getImageTile(ye,Se,z,this.ENABLE_SERVER_INTERPOLATION?x.PQ.SRGB:x.PQ.NONE)}getImageTileBinary(ye,Se,z){return O.w}getImageSlideLabel(ye,Se){const z=Se.associatedImages.find(({type:te})=>"LABEL"===te.toUpperCase());return z?(z.isSecondaryCapture?this.dicomwebService.getImageSecondaryCapture(ye,z.instanceUid):this.dicomwebService.getEncodedImageTile(ye,z.instanceUid,1)).pipe((0,w.T)(te=>te&&`data:image/jpeg;base64,${te}`),(0,C.W)(te=>"")):O.w}static{this.\u0275fac=function(Se){return new(Se||Ue)(Le.KVO(x.w))}}static{this.\u0275prov=Le.jDH({token:Ue,factory:Ue.\u0275fac,providedIn:"root"})}}return Ue})()},2073:(ut,Ie,a)=>{"use strict";a.d(Ie,{D:()=>w});var o=a(4412),c=a(6354),O=a(4438);let w=(()=>{class C{constructor(){this.currentUserSubject=new o.t(null),this.currentUser$=this.currentUserSubject.asObservable()}getCurrentUser$(){return this.currentUser$}getCurrentUserHash$(){return this.currentUser$.pipe((0,c.T)(D=>D?function d(C){let x=0;for(let D=0;D{"use strict";a.d(Ie,{G:()=>O,s:()=>d});var o=a(177),c=a(4438);const O="credential";let d=(()=>{class w{constructor(x){this.platformId=x,this.window=void 0,(0,o.UE)(this.platformId)&&(this.window=window)}getWindowOrigin(){return this.window&&this.window.location.origin||""}getLocalStorageItem(x){return this.window&&this.window.localStorage.getItem(x)||void 0}setLocalStorageItem(x,D){this.window&&this.window.localStorage.setItem(x,JSON.stringify(D))}removeLocalStorageItem(x){this.window&&this.window.localStorage.removeItem(x)}sanitizeHtmlAssertUnchanged(x){return""}safelySetInnerHtml(x,D){x.innerHTML=D}extractContent(x){return(new DOMParser).parseFromString(x,"text/html").documentElement.textContent??""}static{this.\u0275fac=function(D){return new(D||w)(c.KVO(c.Agw))}}static{this.\u0275prov=c.jDH({token:w,factory:w.\u0275fac,providedIn:"root"})}}return w})()},6372:(ut,Ie,a)=>{"use strict";a.d(Ie,{y:()=>Se});var o=a(1626),c=a(4958),O=a(6558),d=a(3213),w=a(8791),C=a(5493),x=a(4412),D=a(2771),p=a(983),g=a(4572),y=a(7673),h=a(7468),u=a(6977),P=a(8141),T=a(9437),E=a(5558),W=a(3294),ne=a(6354),de=a(2181),ie=a(4119),Z=a(5717),ae=a(7161),Le=a(1182),_e=a(4438),Ce=a(2168),Ae=a(2639),ke=a(9423),Ue=a(2901),ve=a(2073),ye=a(7955);let Se=(()=>{class z{constructor(L,q,J,X,K,N,V){this.activatedRoute=L,this.cohortService=q,this.dialogService=J,this.dicomAnnotationsService=X,this.userService=K,this.slideApiService=N,this.router=V,this.caseId="",this.iccProfile$=new x.t(Le.PQ.ADOBERGB),this.isMultiViewSlidePicker$=new x.t(!1),this.multiViewScreenSelectedIndex$=new x.t(0),this.multiViewScreens$=new x.t(1),this.showXYZCoordinates$=new x.t(!1),this.syncLock$=new x.t(!1),this.loadingDicomAnnotations$=new x.t(!0),this.selectedSplitViewSlideDescriptor$=new x.t(void 0),this.slideInfoBySlideDescriptorId$=new x.t(new Map),this.olMapBySlideDescriptorId$=new x.t(new Map),this.olMapOriginalViewBySlideDescriptorId$=new x.t(new Map),this.slideMetaDataBySlideDescriptorId$=new x.t(new Map),this.splitViewSlideDescriptors$=new x.t([]),this.slideDescriptorsByCaseId$=new x.t(new Map),this.annotationInstancesBySlideDescriptorId$=new x.t(new Map),this.currentUser="",this.selectedInstanceIdsBySlideDescriptorId$=new x.t(new Map),this.destroy$=new D.m,this.annotationsDicomModelByAnnotationInstanceId$=new x.t(new Map),this.sideNavLayersBySlideDescriptorId$=new x.t(new Map),this.hasAnnotationReadAccessBySlideDescriptorId$=new x.t(new Map),this.hasAnnotationWriteAccessBySlideDescriptorId$=new x.t(new Map),this.setup()}ngOnDestroy(){this.destroy$.next(!0),this.destroy$.complete()}setup(){this.setupCurrentUser(),this.setupRouteHandling(),this.setupSplitViewSlideDescriptorsChanges(),this.setupFetchingAnnotations(),this.setupAnnotationLayers()}createOrModifyDicomAnnotation(L,q){return this.hasAnnotationWriteAccessBySlideDescriptorId$.value.set(L,!0),this.hasAnnotationWriteAccessBySlideDescriptorId$.next(this.hasAnnotationWriteAccessBySlideDescriptorId$.value),this.dicomAnnotationsService.createOrModifyDicomAnnotation(q).pipe((0,u.Q)(this.destroy$),(0,P.M)(J=>{const X=this.dicomAnnotationsService.dicomAnnotationInstances$.value,K=(this.annotationInstancesBySlideDescriptorId$.value.get(L)??[]).find(I=>I.annotatorId===this.currentUser),N=X.find(I=>I.annotatorId===this.currentUser),V=this.selectedInstanceIdsBySlideDescriptorId$.value.get(L)??new Set;if(K?.path.instanceUID&&V.delete(K.path.instanceUID),N?.path.instanceUID&&V.add(N.path.instanceUID),this.selectedInstanceIdsBySlideDescriptorId$.value.set(L,V),this.annotationInstancesBySlideDescriptorId$.value.set(L,X),N?.path.instanceUID){const I=this.annotationsDicomModelByAnnotationInstanceId$.value;I.set(N.path.instanceUID,J),K?.path.instanceUID&&I.delete(K?.path.instanceUID),this.annotationsDicomModelByAnnotationInstanceId$.next(I)}this.selectedInstanceIdsBySlideDescriptorId$.next(this.selectedInstanceIdsBySlideDescriptorId$.value),this.annotationInstancesBySlideDescriptorId$.next(this.annotationInstancesBySlideDescriptorId$.value)}),(0,T.W)(J=>{let X="Error while creating Dicom annotation.";return J.status===o.kG.Forbidden&&(this.hasAnnotationWriteAccessBySlideDescriptorId$.value.set(L,!1),this.hasAnnotationWriteAccessBySlideDescriptorId$.next(this.hasAnnotationWriteAccessBySlideDescriptorId$.value),X='"Permission required."\n Your current access level doesn\'t allow you to create Dicom annotations'),this.dialogService.error(X).subscribe(),J}))}deleteDicomAnnotationsPath(L){const q=this.selectedSplitViewSlideDescriptor$.value,J=this.slideInfoBySlideDescriptorId$.value.get(q?.id);return this.dicomAnnotationsService.deleteDicomAnnotationsPath(L.path).pipe((0,E.n)(()=>q?.id&&J?this.fetchAnnotationInstances(q.id,J):p.w),(0,P.M)(()=>{q?.id&&this.handleSeriesDeletion(L,q)}))}handleSeriesDeletion(L,q){const J=q?.id;if(!J)return;const X=this.annotationInstancesBySlideDescriptorId$.value;let K=X.get(J)??[];K=K.filter(I=>I.annotatorId!==this.currentUser),X.set(J,K),this.annotationInstancesBySlideDescriptorId$.next(X);const N=this.selectedInstanceIdsBySlideDescriptorId$.value;(N.get(J)??new Set).delete(L.path.instanceUID??""),this.selectedInstanceIdsBySlideDescriptorId$.next(N)}setupAnnotationLayers(){(0,g.z)([this.olMapBySlideDescriptorId$,this.selectedSplitViewSlideDescriptor$]).pipe((0,u.Q)(this.destroy$),(0,P.M)(([L,q])=>{if(!q)return;const J=q.id,X=L.get(J);if(!X)return;const K=X.getAllLayers().find(V=>"draw-layer"===V.get("name"));if(!K)return;const N=K.getSource();N&&N?.on("change",()=>{const M=[...N.getFeatures()].sort((j,ge)=>{const Me=this.getFeatureAnnotationKey(j);return this.getFeatureAnnotationKey(ge).index-Me.index}).map((j,ge)=>{let oe;return j.getId()?oe={...Le.Qy,...this.getFeatureAnnotationKey(j)}:(oe={...Le.Qy,names:"ROI",annotatorId:this.currentUser},j.setId(JSON.stringify(oe))),oe.names=`${oe.names}-${oe.index}`,{...oe,feature:j}}).sort((j,ge)=>ge.index-j.index);this.sideNavLayersBySlideDescriptorId$.value.set(J,M),this.sideNavLayersBySlideDescriptorId$.next(this.sideNavLayersBySlideDescriptorId$.value)})})).subscribe(),(0,g.z)([this.annotationsDicomModelByAnnotationInstanceId$,this.olMapBySlideDescriptorId$,this.selectedInstanceIdsBySlideDescriptorId$]).pipe((0,u.Q)(this.destroy$),(0,P.M)(()=>{this.updateSideNavLayers()})).subscribe()}updateSideNavLayers(){const L=this.selectedInstanceIdsBySlideDescriptorId$.value,q=this.annotationsDicomModelByAnnotationInstanceId$.value,J=this.olMapBySlideDescriptorId$.value,X=this.slideInfoBySlideDescriptorId$.value,K=this.annotationInstancesBySlideDescriptorId$.value,V=this.splitViewSlideDescriptors$.value.filter(M=>!!M?.id),I=this.generateSideNavLayersBySlideDescriptorId(V,X,K,L,q);V.forEach(M=>{const j=M.id,ge=J.get(j),Me=I.get(j)??[];if(!ge)return;const oe=ge.getAllLayers().find(Ee=>"draw-layer"===Ee.get("name"));if(!oe)return;const R=oe.getSource();!R||R.getFeatures().length===Me.length||this.addAnnotationsToDrawLayer(Me,ge)})}generateSideNavLayersBySlideDescriptorId(L,q,J,X,K){const N=new Map;return L.forEach(V=>{const I=V.id;if(!I)return;const M=q.get(I);if(!M)return;let j=J.get(I)??[];const ge=X.get(I)??new Set;if(j=j.filter(R=>R.path.instanceUID&&ge.has(R.path.instanceUID)),!j)return;let Me=j.map(R=>{if(!R.path.instanceUID)return;const se=K.get(R.path.instanceUID);return se?this.dicomModelToSideNavLayers(se,M):void 0}).filter(R=>void 0!==R).flat();const oe=j.map(({annotatorId:R})=>R).filter(R=>R!==this.currentUser);oe.push(this.currentUser),Me=Me.sort((R,se)=>oe.indexOf(R.annotatorId)-oe.indexOf(se.annotatorId)).reverse().map((R,se)=>(R.index=se+1,R)).reverse(),N.set(I,Me)}),N}getFeatureAnnotationKey(L){return JSON.parse(L.getId())}addAnnotationsToDrawLayer(L,q){if(!q)return;const J=q.getAllLayers().find(N=>"draw-layer"===N.get("name"));if(!J)return;const X=J.getSource();if(!X)return;const K=L.map(N=>{const V={...Le.Qy,names:N.names??"ROI",notes:N.notes,annotatorId:N.annotatorId,index:N.index};return N.feature.setId(JSON.stringify(V)),N.feature});X.clear(),X.addFeatures(K)}dicomModelToSideNavLayers(L,q){const X=this.dicomAnnotationsService.dicomModelToAnnotations(L,q).annotationGroupSequence,K=X.find(V=>V.error);return K&&this.dialogService.error(K.error),X.filter(V=>!V.error).map((V,I)=>{const M=this.dicomAnnotationsService.getAnnotatorIdByDicomAnnotationInstance(L),j={names:V.annotationGroupLabel,notes:V.annotationGroupDescription,annotatorId:M,index:I};switch(V.graphicType){case"POLYLINE":return{...j,feature:new c.A(new O.A(V.pointCoordinatesData))};case"RECTANGLE":const ge=[];for(let se=0;se{const[Ee,tt,Y,Re]=se,De=[Ee,tt,Y,Re,Ee];return{...j,feature:new c.A(new d.Ay([De]))}});case"ELLIPSE":const oe=[];for(let se=0;se{const Ee=this.computeEllipseFeature(se);return{...j,feature:Ee}});case"POLYGON":return{...j,feature:new c.A(new d.Ay([V.pointCoordinatesData]))};case"POINT":return V.pointCoordinatesData.map((se,Ee)=>({...j,feature:new c.A(new w.A(se)),index:Ee}))}}).filter(V=>!!V).flat()}computeEllipseFeature(L){const J=[L[0],L[1]],X=[L[2],L[3]],K=[(J[0][0]+J[1][0])/2,(J[0][1]+J[1][1])/2],N=Math.sqrt(Math.pow(J[0][0]-J[1][0],2)+Math.pow(J[0][1]-J[1][1],2))/2,V=Math.sqrt(Math.pow(X[0][0]-X[1][0],2)+Math.pow(X[0][1]-X[1][1],2))/2,I=Math.atan2(J[1][1]-J[0][1],J[1][0]-J[0][0]),M=[];for(let Me=0;Me<64;Me++){const oe=Me/64*2*Math.PI,R=K[0]+N*Math.cos(oe)*Math.cos(I)-V*Math.sin(oe)*Math.sin(I),se=K[1]+N*Math.cos(oe)*Math.sin(I)+V*Math.sin(oe)*Math.cos(I);M.push([R,se])}return new c.A(new d.Ay([M]))}setupCurrentUser(){(ie.c.ANNOTATION_HASH_STORED_USER_EMAIL?this.userService.getCurrentUserHash$():this.userService.getCurrentUser$()).subscribe(L=>{this.currentUser=L??"",Le.Qy.annotatorId=this.currentUser})}setupSplitViewSlideDescriptorsChanges(){this.splitViewSlideDescriptors$.pipe((0,u.Q)(this.destroy$),(0,E.n)(L=>{const q=L.filter(X=>!!X?.id);if(!q.length)return p.w;const J=q.map(X=>{const K=X.id;return[this.fetchSlideInfo(K).pipe((0,E.n)(N=>N?this.fetchAnnotationInstances(K,N):p.w)),this.fetchSlideExtraMetadata(K)]}).flat().filter(X=>void 0!==X);return(0,g.z)(J)})).subscribe()}setupRouteHandling(){this.activatedRoute.queryParams.pipe((0,u.Q)(this.destroy$),(0,W.F)(),(0,P.M)(L=>{if(!this.router.url.startsWith(de.Pq))return;let{cohortName:J,series:X}=L;if(X&&(X=(0,Z.q5)(X)),!ie.c.IMAGE_DICOM_STORE_BASE_URL)return void this.router.navigate(["/config"]);if(!X&&!J)return void this.router.navigate(["/viewer"],{queryParams:{series:`${ie.c.IMAGE_DICOM_STORE_BASE_URL}${ie.c.DEFAULT_SERIES_TO_LOAD}`}});if(J){if(!X)return void this.router.navigate(["/cohorts"],{queryParams:{cohortName:J}});this.cohortService.fetchPathologyCohort(J)}if(!X)return void this.router.navigate(["/search"]);try{(0,Z.ow)(X)}catch{return void this.dialogService.error("For your safety loading this slide was blocked. The DICOM store specified in your browser URL is not on the ones that were configured.").subscribe(()=>{this.router.navigate(["/search"])})}const K=X.indexOf("/series/");let N=-1===K?X:X.slice(0,K);this.caseId!==N&&(this.caseId=""),this.caseId||(this.caseId=N,N=""),this.caseId&&this.caseId!==N&&this.slideApiService.getSlidesForCase(this.caseId).subscribe(I=>{const M=this.slideDescriptorsByCaseId$.value;M.set(this.caseId,I),this.slideDescriptorsByCaseId$.next(M)});const V=X.split(",").map(I=>{if(I)return{id:I}});3===V.length&&V.push(void 0),this.multiViewScreens$.next(V.length),this.splitViewSlideDescriptors$.next(V),this.selectedSplitViewSlideDescriptor$.next(V[this.multiViewScreenSelectedIndex$.value]??V[0])})).subscribe()}fetchSlideInfo(L){return this.slideInfoBySlideDescriptorId$.value.has(L)?p.w:this.slideApiService.getSlideInfo(L).pipe((0,P.M)(q=>{const J=this.slideInfoBySlideDescriptorId$.value;J.set(L,q),this.slideInfoBySlideDescriptorId$.next(J)}))}fetchSlideExtraMetadata(L){return this.slideMetaDataBySlideDescriptorId$.value.has(L)?p.w:this.slideApiService.getSlideExtraMetadata(L).pipe((0,ne.T)(q=>{const J=this.slideMetaDataBySlideDescriptorId$.value;return J.set(L,q),J}),(0,P.M)(q=>{this.slideMetaDataBySlideDescriptorId$.next(q)}))}fetchAnnotationInstances(L,q){if(!ie.c.ENABLE_ANNOTATIONS||!ie.c.ANNOTATIONS_DICOM_STORE_BASE_URL||!q)return p.w;const J=(0,ae.hd)((0,ae.LG)(L).path);return this.hasAnnotationReadAccessBySlideDescriptorId$.value.set(L,!0),this.hasAnnotationReadAccessBySlideDescriptorId$.next(this.hasAnnotationReadAccessBySlideDescriptorId$.value),this.dicomAnnotationsService.fetchDicomAnnotationInstances(J,q).pipe((0,ne.T)(X=>{X=this.dicomAnnotationsService.getUniqueAnnotationInstances(X).sort((N,V)=>N.annotatorId.localeCompare(V.annotatorId));const K=this.annotationInstancesBySlideDescriptorId$.value;return K.set(L,X),K}),(0,P.M)(X=>{this.annotationInstancesBySlideDescriptorId$.next(X)}),(0,T.W)(X=>{let K="Something went wrong when trying to retrieve Dicom annotations.";throw X.status===o.kG.Forbidden&&(K=`"Permission required."\n Your current access level doesn't allow you to retrieve Dicom annotations for:\n ${q.slideName}`,this.hasAnnotationReadAccessBySlideDescriptorId$.value.set(L,!1),this.hasAnnotationReadAccessBySlideDescriptorId$.next(this.hasAnnotationReadAccessBySlideDescriptorId$.value)),this.dialogService.error(K).subscribe(),new Error(K)}))}setupFetchingAnnotations(){this.loadingDicomAnnotations$=this.dicomAnnotationsService.loadingDicomAnnotations$,(0,g.z)([this.splitViewSlideDescriptors$,this.selectedInstanceIdsBySlideDescriptorId$,this.annotationInstancesBySlideDescriptorId$]).pipe((0,P.M)(([L,q,J])=>{L.filter(X=>!!X?.id).filter(X=>{if(X.id)return!q.has(X.id)}).map(X=>X.id).forEach(X=>{if(!X||q.has(X))return;const K=(J.get(X)??[]).filter(N=>N.annotatorId===this.currentUser).map(N=>N.path.instanceUID).filter(N=>void 0!==N);K.length&&(q.set(X,new Set(K)),this.selectedInstanceIdsBySlideDescriptorId$.next(q))})})).subscribe(),(0,g.z)([this.splitViewSlideDescriptors$,this.selectedInstanceIdsBySlideDescriptorId$,this.annotationInstancesBySlideDescriptorId$]).pipe((0,u.Q)(this.destroy$),(0,ne.T)(([L,q,J])=>L.length&&q.size&&J.size?L.filter(K=>!!K?.id).map(K=>{const N=K.id,V=(J.get(N)??[]).filter(I=>{const M=q.get(N);return!M||I.path.instanceUID&&M.has(I.path.instanceUID)});return{slideDescriptorId:N,filteredAnnotationInstances:V}}).filter(({filteredAnnotationInstances:K})=>K.length):void 0),(0,E.n)(L=>L&&L.length?this.fetchAnnotationsDicomModels(L):p.w),(0,ne.T)(L=>{if(!Array.isArray(L))return;const q=this.annotationsDicomModelByAnnotationInstanceId$.value;return q.clear(),L.forEach(({annotationInstance:J,annotations:X})=>{J.path.instanceUID&&q.set(J.path.instanceUID,X)}),q}),(0,P.M)(L=>{L&&this.annotationsDicomModelByAnnotationInstanceId$.next(L)}),(0,T.W)(L=>(this.dialogService.error(L).subscribe(),p.w))).subscribe()}fetchAnnotationsDicomModels(L){if(!L)return(0,y.of)(p.w);const q=L.map(({filteredAnnotationInstances:X})=>X.map(K=>{const N=(0,ae.hd)(K.path);return this.dicomAnnotationsService.fetchDicomAnnotationModels(N).pipe((0,ne.T)(V=>({annotationInstance:K,annotations:V[0]})))})).flat().filter(J=>void 0!==J);return(0,h.p)(q)}cleanOldModifyInteractions(L){L.getInteractions().getArray().filter(J=>J instanceof C.A).forEach(J=>{L?.removeInteraction(J)})}static{this.\u0275fac=function(q){return new(q||z)(_e.KVO(Ce.nX),_e.KVO(Ae.Do),_e.KVO(ke.o),_e.KVO(Ue.AI),_e.KVO(ve.D),_e.KVO(ye.T),_e.KVO(Ce.Ix))}}static{this.\u0275prov=_e.jDH({token:z,factory:z.\u0275fac,providedIn:"root"})}}return z})()},8375:(ut,Ie,a)=>{"use strict";a.d(Ie,{An:()=>g,s2:()=>D});var o=a(9030),c=a(4412),O=a(7468),d=a(7673),w=a(980),C=a(8141);function D(y){return(0,o.v)(()=>{let h=0;const u=new c.t(0),P=y.map((E,W)=>E.pipe((0,w.j)(()=>{const ne=100*++h/y.length;u.next(ne)}))),T=(0,O.p)(P).pipe((0,C.M)(()=>{u.next(100),u.complete()}));return(0,d.of)({result:T,progress:u.asObservable()})})}function g(y,h,u){const P=h.slice(0,u);if(!y.size||!h||!u)return P;const T=Array.from(y).filter(ke=>ke.trim().length<=u).map(ke=>ke.trim().replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")).join("|");if(!T)return P;const E=new RegExp(T,"gi");let de,ie,W=0,ne=0,Z=0,ae=0;const Le=[...h.matchAll(E)].filter(({index:ke})=>ke);for(let ke=0;keu){if(W--,W>ne){const z=Le[ke-1];ne=W,de=Le[ae].index,ie=z.index+z[0].length}Z=Ue.index+ye.length-Le[ae+1].index,ae++}else ke===Le.length-1&&W>ne&&(ne=W,de=Le[ae].index,ie=Ue.index+ye.length)}if(!de||!ie)return P;let Ae=Math.max(0,de-Math.round(.7*(u-(ie-de))));return Ae+u>h.length&&(Ae=Math.max(0,h.length-u)),h.substring(Ae,Ae+u)}},9995:function(ut){ut.exports=function(){"use strict";function Ie(T,E,W,ne,de){!function ie(Z,ae,Le,_e,Ce){for(;_e>Le;){if(_e-Le>600){var Ae=_e-Le+1,ke=ae-Le+1,Ue=Math.log(Ae),ve=.5*Math.exp(2*Ue/3),ye=.5*Math.sqrt(Ue*ve*(Ae-ve)/Ae)*(ke-Ae/2<0?-1:1);ie(Z,ae,Math.max(Le,Math.floor(ae-ke*ve/Ae+ye)),Math.min(_e,Math.floor(ae+(Ae-ke)*ve/Ae+ye)),Ce)}var te=Z[ae],L=Le,q=_e;for(a(Z,Le,ae),Ce(Z[_e],te)>0&&a(Z,Le,_e);L0;)q--}0===Ce(Z[Le],te)?a(Z,Le,q):a(Z,++q,_e),q<=ae&&(Le=q+1),ae<=q&&(_e=q-1)}}(T,E,W||0,ne||T.length-1,de||o)}function a(T,E,W){var ne=T[E];T[E]=T[W],T[W]=ne}function o(T,E){return TE?1:0}var c=function(T){void 0===T&&(T=9),this._maxEntries=Math.max(4,T),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function O(T,E,W){if(!W)return E.indexOf(T);for(var ne=0;ne=T.minX&&E.maxY>=T.minY}function u(T){return{children:T,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function P(T,E,W,ne,de){for(var ie=[E,W];ie.length;)if(!((W=ie.pop())-(E=ie.pop())<=ne)){var Z=E+Math.ceil((W-E)/ne/2)*ne;Ie(T,Z,E,W,de),ie.push(E,Z,Z,W)}}return c.prototype.all=function(){return this._all(this.data,[])},c.prototype.search=function(T){var E=this.data,W=[];if(!h(T,E))return W;for(var ne=this.toBBox,de=[];E;){for(var ie=0;ie=0&&de[E].children.length>this._maxEntries;)this._split(de,E),E--;this._adjustParentBBoxes(ne,de,E)},c.prototype._split=function(T,E){var W=T[E],ne=W.children.length,de=this._minEntries;this._chooseSplitAxis(W,de,ne);var ie=this._chooseSplitIndex(W,de,ne),Z=u(W.children.splice(ie,W.children.length-ie));Z.height=W.height,Z.leaf=W.leaf,d(W,this.toBBox),d(Z,this.toBBox),E?T[E-1].children.push(Z):this._splitRoot(W,Z)},c.prototype._splitRoot=function(T,E){this.data=u([T,E]),this.data.height=T.height+1,this.data.leaf=!1,d(this.data,this.toBBox)},c.prototype._chooseSplitIndex=function(T,E,W){for(var ne,de,ie,Z,ae,Le,_e,Ce=1/0,Ae=1/0,ke=E;ke<=W-E;ke++){var Ue=w(T,0,ke,this.toBBox),ve=w(T,ke,W,this.toBBox),ye=(de=Ue,ie=ve,void 0,void 0,void 0,void 0,Z=Math.max(de.minX,ie.minX),ae=Math.max(de.minY,ie.minY),Le=Math.min(de.maxX,ie.maxX),_e=Math.min(de.maxY,ie.maxY),Math.max(0,Le-Z)*Math.max(0,_e-ae)),Se=p(Ue)+p(ve);ye=E;Ce--){var Ae=T.children[Ce];C(Z,T.leaf?de(Ae):Ae),ae+=g(Z)}return ae},c.prototype._adjustParentBBoxes=function(T,E,W){for(var ne=W;ne>=0;ne--)C(E[ne],T)},c.prototype._condense=function(T){for(var E=T.length-1,W=void 0;E>=0;E--)0===T[E].children.length?E>0?(W=T[E-1].children).splice(W.indexOf(T[E]),1):this.clear():d(T[E],this.toBBox)},c}()},4412:(ut,Ie,a)=>{"use strict";a.d(Ie,{t:()=>c});var o=a(1413);class c extends o.B{constructor(d){super(),this._value=d}get value(){return this.getValue()}_subscribe(d){const w=super._subscribe(d);return!w.closed&&d.next(this._value),w}getValue(){const{hasError:d,thrownError:w,_value:C}=this;if(d)throw w;return this._throwIfClosed(),C}next(d){super.next(this._value=d)}}},1985:(ut,Ie,a)=>{"use strict";a.d(Ie,{c:()=>D});var o=a(7707),c=a(8359),O=a(3494),d=a(1203),w=a(1026),C=a(8071),x=a(9786);let D=(()=>{class h{constructor(P){P&&(this._subscribe=P)}lift(P){const T=new h;return T.source=this,T.operator=P,T}subscribe(P,T,E){const W=function y(h){return h&&h instanceof o.vU||function g(h){return h&&(0,C.T)(h.next)&&(0,C.T)(h.error)&&(0,C.T)(h.complete)}(h)&&(0,c.Uv)(h)}(P)?P:new o.Ms(P,T,E);return(0,x.Y)(()=>{const{operator:ne,source:de}=this;W.add(ne?ne.call(W,de):de?this._subscribe(W):this._trySubscribe(W))}),W}_trySubscribe(P){try{return this._subscribe(P)}catch(T){P.error(T)}}forEach(P,T){return new(T=p(T))((E,W)=>{const ne=new o.Ms({next:de=>{try{P(de)}catch(ie){W(ie),ne.unsubscribe()}},error:W,complete:E});this.subscribe(ne)})}_subscribe(P){var T;return null===(T=this.source)||void 0===T?void 0:T.subscribe(P)}[O.s](){return this}pipe(...P){return(0,d.m)(P)(this)}toPromise(P){return new(P=p(P))((T,E)=>{let W;this.subscribe(ne=>W=ne,ne=>E(ne),()=>T(W))})}}return h.create=u=>new h(u),h})();function p(h){var u;return null!==(u=h??w.$.Promise)&&void 0!==u?u:Promise}},2771:(ut,Ie,a)=>{"use strict";a.d(Ie,{m:()=>O});var o=a(1413),c=a(6129);class O extends o.B{constructor(w=1/0,C=1/0,x=c.U){super(),this._bufferSize=w,this._windowTime=C,this._timestampProvider=x,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=C===1/0,this._bufferSize=Math.max(1,w),this._windowTime=Math.max(1,C)}next(w){const{isStopped:C,_buffer:x,_infiniteTimeWindow:D,_timestampProvider:p,_windowTime:g}=this;C||(x.push(w),!D&&x.push(p.now()+g)),this._trimBuffer(),super.next(w)}_subscribe(w){this._throwIfClosed(),this._trimBuffer();const C=this._innerSubscribe(w),{_infiniteTimeWindow:x,_buffer:D}=this,p=D.slice();for(let g=0;g{"use strict";a.d(Ie,{B:()=>x});var o=a(1985),c=a(8359);const d=(0,a(1853).L)(p=>function(){p(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var w=a(7908),C=a(9786);let x=(()=>{class p extends o.c{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(y){const h=new D(this,this);return h.operator=y,h}_throwIfClosed(){if(this.closed)throw new d}next(y){(0,C.Y)(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const h of this.currentObservers)h.next(y)}})}error(y){(0,C.Y)(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=y;const{observers:h}=this;for(;h.length;)h.shift().error(y)}})}complete(){(0,C.Y)(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:y}=this;for(;y.length;)y.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var y;return(null===(y=this.observers)||void 0===y?void 0:y.length)>0}_trySubscribe(y){return this._throwIfClosed(),super._trySubscribe(y)}_subscribe(y){return this._throwIfClosed(),this._checkFinalizedStatuses(y),this._innerSubscribe(y)}_innerSubscribe(y){const{hasError:h,isStopped:u,observers:P}=this;return h||u?c.Kn:(this.currentObservers=null,P.push(y),new c.yU(()=>{this.currentObservers=null,(0,w.o)(P,y)}))}_checkFinalizedStatuses(y){const{hasError:h,thrownError:u,isStopped:P}=this;h?y.error(u):P&&y.complete()}asObservable(){const y=new o.c;return y.source=this,y}}return p.create=(g,y)=>new D(g,y),p})();class D extends x{constructor(g,y){super(),this.destination=g,this.source=y}next(g){var y,h;null===(h=null===(y=this.destination)||void 0===y?void 0:y.next)||void 0===h||h.call(y,g)}error(g){var y,h;null===(h=null===(y=this.destination)||void 0===y?void 0:y.error)||void 0===h||h.call(y,g)}complete(){var g,y;null===(y=null===(g=this.destination)||void 0===g?void 0:g.complete)||void 0===y||y.call(g)}_subscribe(g){var y,h;return null!==(h=null===(y=this.source)||void 0===y?void 0:y.subscribe(g))&&void 0!==h?h:c.Kn}}},7707:(ut,Ie,a)=>{"use strict";a.d(Ie,{Ms:()=>E,vU:()=>h});var o=a(8071),c=a(8359),O=a(1026),d=a(5334),w=a(5343);const C=p("C",void 0,void 0);function p(Z,ae,Le){return{kind:Z,value:ae,error:Le}}var g=a(9270),y=a(9786);class h extends c.yU{constructor(ae){super(),this.isStopped=!1,ae?(this.destination=ae,(0,c.Uv)(ae)&&ae.add(this)):this.destination=ie}static create(ae,Le,_e){return new E(ae,Le,_e)}next(ae){this.isStopped?de(function D(Z){return p("N",Z,void 0)}(ae),this):this._next(ae)}error(ae){this.isStopped?de(function x(Z){return p("E",void 0,Z)}(ae),this):(this.isStopped=!0,this._error(ae))}complete(){this.isStopped?de(C,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(ae){this.destination.next(ae)}_error(ae){try{this.destination.error(ae)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const u=Function.prototype.bind;function P(Z,ae){return u.call(Z,ae)}class T{constructor(ae){this.partialObserver=ae}next(ae){const{partialObserver:Le}=this;if(Le.next)try{Le.next(ae)}catch(_e){W(_e)}}error(ae){const{partialObserver:Le}=this;if(Le.error)try{Le.error(ae)}catch(_e){W(_e)}else W(ae)}complete(){const{partialObserver:ae}=this;if(ae.complete)try{ae.complete()}catch(Le){W(Le)}}}class E extends h{constructor(ae,Le,_e){let Ce;if(super(),(0,o.T)(ae)||!ae)Ce={next:ae??void 0,error:Le??void 0,complete:_e??void 0};else{let Ae;this&&O.$.useDeprecatedNextContext?(Ae=Object.create(ae),Ae.unsubscribe=()=>this.unsubscribe(),Ce={next:ae.next&&P(ae.next,Ae),error:ae.error&&P(ae.error,Ae),complete:ae.complete&&P(ae.complete,Ae)}):Ce=ae}this.destination=new T(Ce)}}function W(Z){O.$.useDeprecatedSynchronousErrorHandling?(0,y.l)(Z):(0,d.m)(Z)}function de(Z,ae){const{onStoppedNotification:Le}=O.$;Le&&g.f.setTimeout(()=>Le(Z,ae))}const ie={closed:!0,next:w.l,error:function ne(Z){throw Z},complete:w.l}},8359:(ut,Ie,a)=>{"use strict";a.d(Ie,{Kn:()=>C,yU:()=>w,Uv:()=>x});var o=a(8071);const O=(0,a(1853).L)(p=>function(y){p(this),this.message=y?`${y.length} errors occurred during unsubscription:\n${y.map((h,u)=>`${u+1}) ${h.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=y});var d=a(7908);class w{constructor(g){this.initialTeardown=g,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let g;if(!this.closed){this.closed=!0;const{_parentage:y}=this;if(y)if(this._parentage=null,Array.isArray(y))for(const P of y)P.remove(this);else y.remove(this);const{initialTeardown:h}=this;if((0,o.T)(h))try{h()}catch(P){g=P instanceof O?P.errors:[P]}const{_finalizers:u}=this;if(u){this._finalizers=null;for(const P of u)try{D(P)}catch(T){g=g??[],T instanceof O?g=[...g,...T.errors]:g.push(T)}}if(g)throw new O(g)}}add(g){var y;if(g&&g!==this)if(this.closed)D(g);else{if(g instanceof w){if(g.closed||g._hasParent(this))return;g._addParent(this)}(this._finalizers=null!==(y=this._finalizers)&&void 0!==y?y:[]).push(g)}}_hasParent(g){const{_parentage:y}=this;return y===g||Array.isArray(y)&&y.includes(g)}_addParent(g){const{_parentage:y}=this;this._parentage=Array.isArray(y)?(y.push(g),y):y?[y,g]:g}_removeParent(g){const{_parentage:y}=this;y===g?this._parentage=null:Array.isArray(y)&&(0,d.o)(y,g)}remove(g){const{_finalizers:y}=this;y&&(0,d.o)(y,g),g instanceof w&&g._removeParent(this)}}w.EMPTY=(()=>{const p=new w;return p.closed=!0,p})();const C=w.EMPTY;function x(p){return p instanceof w||p&&"closed"in p&&(0,o.T)(p.remove)&&(0,o.T)(p.add)&&(0,o.T)(p.unsubscribe)}function D(p){(0,o.T)(p)?p():p.unsubscribe()}},1026:(ut,Ie,a)=>{"use strict";a.d(Ie,{$:()=>o});const o={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1}},17:(ut,Ie,a)=>{"use strict";a.d(Ie,{G:()=>C});var o=a(1985),c=a(8359),O=a(9898),d=a(4360),w=a(9974);class C extends o.c{constructor(D,p){super(),this.source=D,this.subjectFactory=p,this._subject=null,this._refCount=0,this._connection=null,(0,w.S)(D)&&(this.lift=D.lift)}_subscribe(D){return this.getSubject().subscribe(D)}getSubject(){const D=this._subject;return(!D||D.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:D}=this;this._subject=this._connection=null,D?.unsubscribe()}connect(){let D=this._connection;if(!D){D=this._connection=new c.yU;const p=this.getSubject();D.add(this.source.subscribe((0,d._)(p,void 0,()=>{this._teardown(),p.complete()},g=>{this._teardown(),p.error(g)},()=>this._teardown()))),D.closed&&(this._connection=null,D=c.yU.EMPTY)}return D}refCount(){return(0,O.B)()(this)}}},4572:(ut,Ie,a)=>{"use strict";a.d(Ie,{z:()=>g});var o=a(1985),c=a(3073),O=a(6648),d=a(3669),w=a(6450),C=a(9326),x=a(8496),D=a(4360),p=a(5225);function g(...u){const P=(0,C.lI)(u),T=(0,C.ms)(u),{args:E,keys:W}=(0,c.D)(u);if(0===E.length)return(0,O.H)([],P);const ne=new o.c(function y(u,P,T=d.D){return E=>{h(P,()=>{const{length:W}=u,ne=new Array(W);let de=W,ie=W;for(let Z=0;Z{const ae=(0,O.H)(u[Z],P);let Le=!1;ae.subscribe((0,D._)(E,_e=>{ne[Z]=_e,Le||(Le=!0,ie--),ie||E.next(T(ne.slice()))},()=>{--de||E.complete()}))},E)},E)}}(E,P,W?de=>(0,x.e)(W,de):d.D));return T?ne.pipe((0,w.I)(T)):ne}function h(u,P,T){u?(0,p.N)(T,u,P):P()}},8793:(ut,Ie,a)=>{"use strict";a.d(Ie,{x:()=>w});var o=a(6365),O=a(9326),d=a(6648);function w(...C){return function c(){return(0,o.U)(1)}()((0,d.H)(C,(0,O.lI)(C)))}},9030:(ut,Ie,a)=>{"use strict";a.d(Ie,{v:()=>O});var o=a(1985),c=a(8750);function O(d){return new o.c(w=>{(0,c.Tg)(d()).subscribe(w)})}},983:(ut,Ie,a)=>{"use strict";a.d(Ie,{w:()=>c});const c=new(a(1985).c)(w=>w.complete())},7468:(ut,Ie,a)=>{"use strict";a.d(Ie,{p:()=>D});var o=a(1985),c=a(3073),O=a(8750),d=a(9326),w=a(4360),C=a(6450),x=a(8496);function D(...p){const g=(0,d.ms)(p),{args:y,keys:h}=(0,c.D)(p),u=new o.c(P=>{const{length:T}=y;if(!T)return void P.complete();const E=new Array(T);let W=T,ne=T;for(let de=0;de{ie||(ie=!0,ne--),E[de]=Z},()=>W--,void 0,()=>{(!W||!ie)&&(ne||P.next(h?(0,x.e)(h,E):E),P.complete())}))}});return g?u.pipe((0,C.I)(g)):u}},6648:(ut,Ie,a)=>{"use strict";a.d(Ie,{H:()=>_e});var o=a(8750),c=a(5225),O=a(9974),d=a(4360);function w(Ce,Ae=0){return(0,O.N)((ke,Ue)=>{ke.subscribe((0,d._)(Ue,ve=>(0,c.N)(Ue,Ce,()=>Ue.next(ve),Ae),()=>(0,c.N)(Ue,Ce,()=>Ue.complete(),Ae),ve=>(0,c.N)(Ue,Ce,()=>Ue.error(ve),Ae)))})}function C(Ce,Ae=0){return(0,O.N)((ke,Ue)=>{Ue.add(Ce.schedule(()=>ke.subscribe(Ue),Ae))})}var p=a(1985),y=a(4761),h=a(8071);function P(Ce,Ae){if(!Ce)throw new Error("Iterable cannot be null");return new p.c(ke=>{(0,c.N)(ke,Ae,()=>{const Ue=Ce[Symbol.asyncIterator]();(0,c.N)(ke,Ae,()=>{Ue.next().then(ve=>{ve.done?ke.complete():ke.next(ve.value)})},0,!0)})})}var T=a(5055),E=a(9858),W=a(7441),ne=a(5397),de=a(7953),ie=a(591),Z=a(5196);function _e(Ce,Ae){return Ae?function Le(Ce,Ae){if(null!=Ce){if((0,T.l)(Ce))return function x(Ce,Ae){return(0,o.Tg)(Ce).pipe(C(Ae),w(Ae))}(Ce,Ae);if((0,W.X)(Ce))return function g(Ce,Ae){return new p.c(ke=>{let Ue=0;return Ae.schedule(function(){Ue===Ce.length?ke.complete():(ke.next(Ce[Ue++]),ke.closed||this.schedule())})})}(Ce,Ae);if((0,E.y)(Ce))return function D(Ce,Ae){return(0,o.Tg)(Ce).pipe(C(Ae),w(Ae))}(Ce,Ae);if((0,de.T)(Ce))return P(Ce,Ae);if((0,ne.x)(Ce))return function u(Ce,Ae){return new p.c(ke=>{let Ue;return(0,c.N)(ke,Ae,()=>{Ue=Ce[y.l](),(0,c.N)(ke,Ae,()=>{let ve,ye;try{({value:ve,done:ye}=Ue.next())}catch(Se){return void ke.error(Se)}ye?ke.complete():ke.next(ve)},0,!0)}),()=>(0,h.T)(Ue?.return)&&Ue.return()})}(Ce,Ae);if((0,Z.U)(Ce))return function ae(Ce,Ae){return P((0,Z.C)(Ce),Ae)}(Ce,Ae)}throw(0,ie.L)(Ce)}(Ce,Ae):(0,o.Tg)(Ce)}},8750:(ut,Ie,a)=>{"use strict";a.d(Ie,{Tg:()=>u});var o=a(1635),c=a(7441),O=a(9858),d=a(1985),w=a(5055),C=a(7953),x=a(591),D=a(5397),p=a(5196),g=a(8071),y=a(5334),h=a(3494);function u(Z){if(Z instanceof d.c)return Z;if(null!=Z){if((0,w.l)(Z))return function P(Z){return new d.c(ae=>{const Le=Z[h.s]();if((0,g.T)(Le.subscribe))return Le.subscribe(ae);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(Z);if((0,c.X)(Z))return function T(Z){return new d.c(ae=>{for(let Le=0;Le{Z.then(Le=>{ae.closed||(ae.next(Le),ae.complete())},Le=>ae.error(Le)).then(null,y.m)})}(Z);if((0,C.T)(Z))return ne(Z);if((0,D.x)(Z))return function W(Z){return new d.c(ae=>{for(const Le of Z)if(ae.next(Le),ae.closed)return;ae.complete()})}(Z);if((0,p.U)(Z))return function de(Z){return ne((0,p.C)(Z))}(Z)}throw(0,x.L)(Z)}function ne(Z){return new d.c(ae=>{(function ie(Z,ae){var Le,_e,Ce,Ae;return(0,o.sH)(this,void 0,void 0,function*(){try{for(Le=(0,o.xN)(Z);!(_e=yield Le.next()).done;)if(ae.next(_e.value),ae.closed)return}catch(ke){Ce={error:ke}}finally{try{_e&&!_e.done&&(Ae=Le.return)&&(yield Ae.call(Le))}finally{if(Ce)throw Ce.error}}ae.complete()})})(Z,ae).catch(Le=>ae.error(Le))})}},7786:(ut,Ie,a)=>{"use strict";a.d(Ie,{h:()=>C});var o=a(6365),c=a(8750),O=a(983),d=a(9326),w=a(6648);function C(...x){const D=(0,d.lI)(x),p=(0,d.R0)(x,1/0),g=x;return g.length?1===g.length?(0,c.Tg)(g[0]):(0,o.U)(p)((0,w.H)(g,D)):O.w}},7673:(ut,Ie,a)=>{"use strict";a.d(Ie,{of:()=>O});var o=a(9326),c=a(6648);function O(...d){const w=(0,o.lI)(d);return(0,c.H)(d,w)}},8810:(ut,Ie,a)=>{"use strict";a.d(Ie,{$:()=>O});var o=a(1985),c=a(8071);function O(d,w){const C=(0,c.T)(d)?d:()=>d,x=D=>D.error(C());return new o.c(w?D=>w.schedule(x,0,D):x)}},1584:(ut,Ie,a)=>{"use strict";a.d(Ie,{O:()=>w});var o=a(1985),c=a(3236),O=a(9470);function w(C=0,x,D=c.b){let p=-1;return null!=x&&((0,O.m)(x)?D=x:p=x),new o.c(g=>{let y=function d(C){return C instanceof Date&&!isNaN(C)}(C)?+C-D.now():C;y<0&&(y=0);let h=0;return D.schedule(function(){g.closed||(g.next(h++),0<=p?this.schedule(void 0,p):g.complete())},y)})}},4360:(ut,Ie,a)=>{"use strict";a.d(Ie,{_:()=>c});var o=a(7707);function c(d,w,C,x,D){return new O(d,w,C,x,D)}class O extends o.vU{constructor(w,C,x,D,p,g){super(w),this.onFinalize=p,this.shouldUnsubscribe=g,this._next=C?function(y){try{C(y)}catch(h){w.error(h)}}:super._next,this._error=D?function(y){try{D(y)}catch(h){w.error(h)}finally{this.unsubscribe()}}:super._error,this._complete=x?function(){try{x()}catch(y){w.error(y)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var w;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:C}=this;super.unsubscribe(),!C&&(null===(w=this.onFinalize)||void 0===w||w.call(this))}}}},9437:(ut,Ie,a)=>{"use strict";a.d(Ie,{W:()=>d});var o=a(8750),c=a(4360),O=a(9974);function d(w){return(0,O.N)((C,x)=>{let g,D=null,p=!1;D=C.subscribe((0,c._)(x,void 0,void 0,y=>{g=(0,o.Tg)(w(y,d(w)(C))),D?(D.unsubscribe(),D=null,g.subscribe(x)):p=!0})),p&&(D.unsubscribe(),D=null,g.subscribe(x))})}},274:(ut,Ie,a)=>{"use strict";a.d(Ie,{H:()=>O});var o=a(1397),c=a(8071);function O(d,w){return(0,c.T)(w)?(0,o.Z)(d,w,1):(0,o.Z)(d,1)}},152:(ut,Ie,a)=>{"use strict";a.d(Ie,{B:()=>d});var o=a(3236),c=a(9974),O=a(4360);function d(w,C=o.E){return(0,c.N)((x,D)=>{let p=null,g=null,y=null;const h=()=>{if(p){p.unsubscribe(),p=null;const P=g;g=null,D.next(P)}};function u(){const P=y+w,T=C.now();if(T{g=P,y=C.now(),p||(p=C.schedule(u,w),D.add(p))},()=>{h(),D.complete()},void 0,()=>{g=p=null}))})}},9901:(ut,Ie,a)=>{"use strict";a.d(Ie,{U:()=>O});var o=a(9974),c=a(4360);function O(d){return(0,o.N)((w,C)=>{let x=!1;w.subscribe((0,c._)(C,D=>{x=!0,C.next(D)},()=>{x||C.next(d),C.complete()}))})}},3294:(ut,Ie,a)=>{"use strict";a.d(Ie,{F:()=>d});var o=a(3669),c=a(9974),O=a(4360);function d(C,x=o.D){return C=C??w,(0,c.N)((D,p)=>{let g,y=!0;D.subscribe((0,O._)(p,h=>{const u=x(h);(y||!C(g,u))&&(y=!1,g=u,p.next(h))}))})}function w(C,x){return C===x}},5964:(ut,Ie,a)=>{"use strict";a.d(Ie,{p:()=>O});var o=a(9974),c=a(4360);function O(d,w){return(0,o.N)((C,x)=>{let D=0;C.subscribe((0,c._)(x,p=>d.call(w,p,D++)&&x.next(p)))})}},980:(ut,Ie,a)=>{"use strict";a.d(Ie,{j:()=>c});var o=a(9974);function c(O){return(0,o.N)((d,w)=>{try{d.subscribe(w)}finally{w.add(O)}})}},1594:(ut,Ie,a)=>{"use strict";a.d(Ie,{$:()=>x});var o=a(9350),c=a(5964),O=a(6697),d=a(9901),w=a(3774),C=a(3669);function x(D,p){const g=arguments.length>=2;return y=>y.pipe(D?(0,c.p)((h,u)=>D(h,u,y)):C.D,(0,O.s)(1),g?(0,d.U)(p):(0,w.v)(()=>new o.G))}},3557:(ut,Ie,a)=>{"use strict";a.d(Ie,{w:()=>d});var o=a(9974),c=a(4360),O=a(5343);function d(){return(0,o.N)((w,C)=>{w.subscribe((0,c._)(C,O.l))})}},6354:(ut,Ie,a)=>{"use strict";a.d(Ie,{T:()=>O});var o=a(9974),c=a(4360);function O(d,w){return(0,o.N)((C,x)=>{let D=0;C.subscribe((0,c._)(x,p=>{x.next(d.call(w,p,D++))}))})}},6365:(ut,Ie,a)=>{"use strict";a.d(Ie,{U:()=>O});var o=a(1397),c=a(3669);function O(d=1/0){return(0,o.Z)(c.D,d)}},1397:(ut,Ie,a)=>{"use strict";a.d(Ie,{Z:()=>D});var o=a(6354),c=a(8750),O=a(9974),d=a(5225),w=a(4360),x=a(8071);function D(p,g,y=1/0){return(0,x.T)(g)?D((h,u)=>(0,o.T)((P,T)=>g(h,P,u,T))((0,c.Tg)(p(h,u))),y):("number"==typeof g&&(y=g),(0,O.N)((h,u)=>function C(p,g,y,h,u,P,T,E){const W=[];let ne=0,de=0,ie=!1;const Z=()=>{ie&&!W.length&&!ne&&g.complete()},ae=_e=>ne{P&&g.next(_e),ne++;let Ce=!1;(0,c.Tg)(y(_e,de++)).subscribe((0,w._)(g,Ae=>{u?.(Ae),P?ae(Ae):g.next(Ae)},()=>{Ce=!0},void 0,()=>{if(Ce)try{for(ne--;W.length&&neLe(Ae)):Le(Ae)}Z()}catch(Ae){g.error(Ae)}}))};return p.subscribe((0,w._)(g,ae,()=>{ie=!0,Z()})),()=>{E?.()}}(h,u,p,y)))}},9852:(ut,Ie,a)=>{"use strict";a.d(Ie,{T:()=>O});var o=a(6649),c=a(9974);function O(d,w){return(0,c.N)((0,o.S)(d,w,arguments.length>=2,!1,!0))}},9898:(ut,Ie,a)=>{"use strict";a.d(Ie,{B:()=>O});var o=a(9974),c=a(4360);function O(){return(0,o.N)((d,w)=>{let C=null;d._refCount++;const x=(0,c._)(w,void 0,void 0,void 0,()=>{if(!d||d._refCount<=0||0<--d._refCount)return void(C=null);const D=d._connection,p=C;C=null,D&&(!p||D===p)&&D.unsubscribe(),w.unsubscribe()});d.subscribe(x),x.closed||(C=d.connect())})}},6649:(ut,Ie,a)=>{"use strict";a.d(Ie,{S:()=>c});var o=a(4360);function c(O,d,w,C,x){return(D,p)=>{let g=w,y=d,h=0;D.subscribe((0,o._)(p,u=>{const P=h++;y=g?O(y,u,P):(g=!0,u),C&&p.next(y)},x&&(()=>{g&&p.next(y),p.complete()})))}}},7647:(ut,Ie,a)=>{"use strict";a.d(Ie,{u:()=>w});var o=a(8750),c=a(1413),O=a(7707),d=a(9974);function w(x={}){const{connector:D=()=>new c.B,resetOnError:p=!0,resetOnComplete:g=!0,resetOnRefCountZero:y=!0}=x;return h=>{let u,P,T,E=0,W=!1,ne=!1;const de=()=>{P?.unsubscribe(),P=void 0},ie=()=>{de(),u=T=void 0,W=ne=!1},Z=()=>{const ae=u;ie(),ae?.unsubscribe()};return(0,d.N)((ae,Le)=>{E++,!ne&&!W&&de();const _e=T=T??D();Le.add(()=>{E--,0===E&&!ne&&!W&&(P=C(Z,y))}),_e.subscribe(Le),!u&&E>0&&(u=new O.Ms({next:Ce=>_e.next(Ce),error:Ce=>{ne=!0,de(),P=C(ie,p,Ce),_e.error(Ce)},complete:()=>{W=!0,de(),P=C(ie,g),_e.complete()}}),(0,o.Tg)(ae).subscribe(u))})(h)}}function C(x,D,...p){if(!0===D)return void x();if(!1===D)return;const g=new O.Ms({next:()=>{g.unsubscribe(),x()}});return(0,o.Tg)(D(...p)).subscribe(g)}},4668:(ut,Ie,a)=>{"use strict";a.d(Ie,{t:()=>O});var o=a(2771),c=a(7647);function O(d,w,C){let x,D=!1;return d&&"object"==typeof d?({bufferSize:x=1/0,windowTime:w=1/0,refCount:D=!1,scheduler:C}=d):x=d??1/0,(0,c.u)({connector:()=>new o.m(x,w,C),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:D})}},5245:(ut,Ie,a)=>{"use strict";a.d(Ie,{i:()=>c});var o=a(5964);function c(O){return(0,o.p)((d,w)=>O<=w)}},9172:(ut,Ie,a)=>{"use strict";a.d(Ie,{Z:()=>d});var o=a(8793),c=a(9326),O=a(9974);function d(...w){const C=(0,c.lI)(w);return(0,O.N)((x,D)=>{(C?(0,o.x)(w,x,C):(0,o.x)(w,x)).subscribe(D)})}},5558:(ut,Ie,a)=>{"use strict";a.d(Ie,{n:()=>d});var o=a(8750),c=a(9974),O=a(4360);function d(w,C){return(0,c.N)((x,D)=>{let p=null,g=0,y=!1;const h=()=>y&&!p&&D.complete();x.subscribe((0,O._)(D,u=>{p?.unsubscribe();let P=0;const T=g++;(0,o.Tg)(w(u,T)).subscribe(p=(0,O._)(D,E=>D.next(C?C(u,E,T,P++):E),()=>{p=null,h()}))},()=>{y=!0,h()}))})}},6697:(ut,Ie,a)=>{"use strict";a.d(Ie,{s:()=>d});var o=a(983),c=a(9974),O=a(4360);function d(w){return w<=0?()=>o.w:(0,c.N)((C,x)=>{let D=0;C.subscribe((0,O._)(x,p=>{++D<=w&&(x.next(p),w<=D&&x.complete())}))})}},6977:(ut,Ie,a)=>{"use strict";a.d(Ie,{Q:()=>w});var o=a(9974),c=a(4360),O=a(8750),d=a(5343);function w(C){return(0,o.N)((x,D)=>{(0,O.Tg)(C).subscribe((0,c._)(D,()=>D.complete(),d.l)),!D.closed&&x.subscribe(D)})}},8141:(ut,Ie,a)=>{"use strict";a.d(Ie,{M:()=>w});var o=a(8071),c=a(9974),O=a(4360),d=a(3669);function w(C,x,D){const p=(0,o.T)(C)||x||D?{next:C,error:x,complete:D}:C;return p?(0,c.N)((g,y)=>{var h;null===(h=p.subscribe)||void 0===h||h.call(p);let u=!0;g.subscribe((0,O._)(y,P=>{var T;null===(T=p.next)||void 0===T||T.call(p,P),y.next(P)},()=>{var P;u=!1,null===(P=p.complete)||void 0===P||P.call(p),y.complete()},P=>{var T;u=!1,null===(T=p.error)||void 0===T||T.call(p,P),y.error(P)},()=>{var P,T;u&&(null===(P=p.unsubscribe)||void 0===P||P.call(p)),null===(T=p.finalize)||void 0===T||T.call(p)}))}):d.D}},3774:(ut,Ie,a)=>{"use strict";a.d(Ie,{v:()=>d});var o=a(9350),c=a(9974),O=a(4360);function d(C=w){return(0,c.N)((x,D)=>{let p=!1;x.subscribe((0,O._)(D,g=>{p=!0,D.next(g)},()=>p?D.complete():D.error(C())))})}function w(){return new o.G}},6594:(ut,Ie,a)=>{"use strict";a.d(Ie,{$:()=>d});var o=a(9852),c=a(9974);const O=(w,C)=>(w.push(C),w);function d(){return(0,c.N)((w,C)=>{(0,o.T)(O,[])(w).subscribe(C)})}},3993:(ut,Ie,a)=>{"use strict";a.d(Ie,{E:()=>x});var o=a(9974),c=a(4360),O=a(8750),d=a(3669),w=a(5343),C=a(9326);function x(...D){const p=(0,C.ms)(D);return(0,o.N)((g,y)=>{const h=D.length,u=new Array(h);let P=D.map(()=>!1),T=!1;for(let E=0;E{u[E]=W,!T&&!P[E]&&(P[E]=!0,(T=P.every(d.D))&&(P=null))},w.l));g.subscribe((0,c._)(y,E=>{if(T){const W=[E,...u];y.next(p?p(...W):W)}}))})}},6780:(ut,Ie,a)=>{"use strict";a.d(Ie,{R:()=>w});var o=a(8359);class c extends o.yU{constructor(x,D){super()}schedule(x,D=0){return this}}const O={setInterval(C,x,...D){const{delegate:p}=O;return p?.setInterval?p.setInterval(C,x,...D):setInterval(C,x,...D)},clearInterval(C){const{delegate:x}=O;return(x?.clearInterval||clearInterval)(C)},delegate:void 0};var d=a(7908);class w extends c{constructor(x,D){super(x,D),this.scheduler=x,this.work=D,this.pending=!1}schedule(x,D=0){var p;if(this.closed)return this;this.state=x;const g=this.id,y=this.scheduler;return null!=g&&(this.id=this.recycleAsyncId(y,g,D)),this.pending=!0,this.delay=D,this.id=null!==(p=this.id)&&void 0!==p?p:this.requestAsyncId(y,this.id,D),this}requestAsyncId(x,D,p=0){return O.setInterval(x.flush.bind(x,this),p)}recycleAsyncId(x,D,p=0){if(null!=p&&this.delay===p&&!1===this.pending)return D;null!=D&&O.clearInterval(D)}execute(x,D){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const p=this._execute(x,D);if(p)return p;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(x,D){let g,p=!1;try{this.work(x)}catch(y){p=!0,g=y||new Error("Scheduled action threw falsy error")}if(p)return this.unsubscribe(),g}unsubscribe(){if(!this.closed){const{id:x,scheduler:D}=this,{actions:p}=D;this.work=this.state=this.scheduler=null,this.pending=!1,(0,d.o)(p,this),null!=x&&(this.id=this.recycleAsyncId(D,x,null)),this.delay=null,super.unsubscribe()}}}},9687:(ut,Ie,a)=>{"use strict";a.d(Ie,{q:()=>O});var o=a(6129);class c{constructor(w,C=c.now){this.schedulerActionCtor=w,this.now=C}schedule(w,C=0,x){return new this.schedulerActionCtor(this,w).schedule(x,C)}}c.now=o.U.now;class O extends c{constructor(w,C=c.now){super(w,C),this.actions=[],this._active=!1}flush(w){const{actions:C}=this;if(this._active)return void C.push(w);let x;this._active=!0;do{if(x=w.execute(w.state,w.delay))break}while(w=C.shift());if(this._active=!1,x){for(;w=C.shift();)w.unsubscribe();throw x}}}},3236:(ut,Ie,a)=>{"use strict";a.d(Ie,{E:()=>O,b:()=>d});var o=a(6780);const O=new(a(9687).q)(o.R),d=O},6129:(ut,Ie,a)=>{"use strict";a.d(Ie,{U:()=>o});const o={now:()=>(o.delegate||Date).now(),delegate:void 0}},9270:(ut,Ie,a)=>{"use strict";a.d(Ie,{f:()=>o});const o={setTimeout(c,O,...d){const{delegate:w}=o;return w?.setTimeout?w.setTimeout(c,O,...d):setTimeout(c,O,...d)},clearTimeout(c){const{delegate:O}=o;return(O?.clearTimeout||clearTimeout)(c)},delegate:void 0}},4761:(ut,Ie,a)=>{"use strict";a.d(Ie,{l:()=>c});const c=function o(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}()},3494:(ut,Ie,a)=>{"use strict";a.d(Ie,{s:()=>o});const o="function"==typeof Symbol&&Symbol.observable||"@@observable"},9350:(ut,Ie,a)=>{"use strict";a.d(Ie,{G:()=>c});const c=(0,a(1853).L)(O=>function(){O(this),this.name="EmptyError",this.message="no elements in sequence"})},9326:(ut,Ie,a)=>{"use strict";a.d(Ie,{R0:()=>C,lI:()=>w,ms:()=>d});var o=a(8071),c=a(9470);function O(x){return x[x.length-1]}function d(x){return(0,o.T)(O(x))?x.pop():void 0}function w(x){return(0,c.m)(O(x))?x.pop():void 0}function C(x,D){return"number"==typeof O(x)?x.pop():D}},3073:(ut,Ie,a)=>{"use strict";a.d(Ie,{D:()=>w});const{isArray:o}=Array,{getPrototypeOf:c,prototype:O,keys:d}=Object;function w(x){if(1===x.length){const D=x[0];if(o(D))return{args:D,keys:null};if(function C(x){return x&&"object"==typeof x&&c(x)===O}(D)){const p=d(D);return{args:p.map(g=>D[g]),keys:p}}}return{args:x,keys:null}}},7908:(ut,Ie,a)=>{"use strict";function o(c,O){if(c){const d=c.indexOf(O);0<=d&&c.splice(d,1)}}a.d(Ie,{o:()=>o})},1853:(ut,Ie,a)=>{"use strict";function o(c){const d=c(w=>{Error.call(w),w.stack=(new Error).stack});return d.prototype=Object.create(Error.prototype),d.prototype.constructor=d,d}a.d(Ie,{L:()=>o})},8496:(ut,Ie,a)=>{"use strict";function o(c,O){return c.reduce((d,w,C)=>(d[w]=O[C],d),{})}a.d(Ie,{e:()=>o})},9786:(ut,Ie,a)=>{"use strict";a.d(Ie,{Y:()=>O,l:()=>d});var o=a(1026);let c=null;function O(w){if(o.$.useDeprecatedSynchronousErrorHandling){const C=!c;if(C&&(c={errorThrown:!1,error:null}),w(),C){const{errorThrown:x,error:D}=c;if(c=null,x)throw D}}else w()}function d(w){o.$.useDeprecatedSynchronousErrorHandling&&c&&(c.errorThrown=!0,c.error=w)}},5225:(ut,Ie,a)=>{"use strict";function o(c,O,d,w=0,C=!1){const x=O.schedule(function(){d(),C?c.add(this.schedule(null,w)):this.unsubscribe()},w);if(c.add(x),!C)return x}a.d(Ie,{N:()=>o})},3669:(ut,Ie,a)=>{"use strict";function o(c){return c}a.d(Ie,{D:()=>o})},7441:(ut,Ie,a)=>{"use strict";a.d(Ie,{X:()=>o});const o=c=>c&&"number"==typeof c.length&&"function"!=typeof c},7953:(ut,Ie,a)=>{"use strict";a.d(Ie,{T:()=>c});var o=a(8071);function c(O){return Symbol.asyncIterator&&(0,o.T)(O?.[Symbol.asyncIterator])}},8071:(ut,Ie,a)=>{"use strict";function o(c){return"function"==typeof c}a.d(Ie,{T:()=>o})},5055:(ut,Ie,a)=>{"use strict";a.d(Ie,{l:()=>O});var o=a(3494),c=a(8071);function O(d){return(0,c.T)(d[o.s])}},5397:(ut,Ie,a)=>{"use strict";a.d(Ie,{x:()=>O});var o=a(4761),c=a(8071);function O(d){return(0,c.T)(d?.[o.l])}},4402:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>O});var o=a(1985),c=a(8071);function O(d){return!!d&&(d instanceof o.c||(0,c.T)(d.lift)&&(0,c.T)(d.subscribe))}},9858:(ut,Ie,a)=>{"use strict";a.d(Ie,{y:()=>c});var o=a(8071);function c(O){return(0,o.T)(O?.then)}},5196:(ut,Ie,a)=>{"use strict";a.d(Ie,{C:()=>O,U:()=>d});var o=a(1635),c=a(8071);function O(w){return(0,o.AQ)(this,arguments,function*(){const x=w.getReader();try{for(;;){const{value:D,done:p}=yield(0,o.N3)(x.read());if(p)return yield(0,o.N3)(void 0);yield yield(0,o.N3)(D)}}finally{x.releaseLock()}})}function d(w){return(0,c.T)(w?.getReader)}},9470:(ut,Ie,a)=>{"use strict";a.d(Ie,{m:()=>c});var o=a(8071);function c(O){return O&&(0,o.T)(O.schedule)}},9974:(ut,Ie,a)=>{"use strict";a.d(Ie,{N:()=>O,S:()=>c});var o=a(8071);function c(d){return(0,o.T)(d?.lift)}function O(d){return w=>{if(c(w))return w.lift(function(C){try{return d(C,this)}catch(x){this.error(x)}});throw new TypeError("Unable to lift unknown Observable type")}}},6450:(ut,Ie,a)=>{"use strict";a.d(Ie,{I:()=>d});var o=a(6354);const{isArray:c}=Array;function d(w){return(0,o.T)(C=>function O(w,C){return c(C)?w(...C):w(C)}(w,C))}},5343:(ut,Ie,a)=>{"use strict";function o(){}a.d(Ie,{l:()=>o})},1203:(ut,Ie,a)=>{"use strict";a.d(Ie,{F:()=>c,m:()=>O});var o=a(3669);function c(...d){return O(d)}function O(d){return 0===d.length?o.D:1===d.length?d[0]:function(C){return d.reduce((x,D)=>D(x),C)}}},5334:(ut,Ie,a)=>{"use strict";a.d(Ie,{m:()=>O});var o=a(1026),c=a(9270);function O(d){c.f.setTimeout(()=>{const{onUnhandledError:w}=o.$;if(!w)throw d;w(d)})}},591:(ut,Ie,a)=>{"use strict";function o(c){return new TypeError(`You provided ${null!==c&&"object"==typeof c?"an invalid object":`'${c}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}a.d(Ie,{L:()=>o})},9969:(ut,Ie,a)=>{"use strict";a.d(Ie,{FX:()=>Ae,If:()=>o,K2:()=>C,MA:()=>h,Os:()=>w,P:()=>P,hZ:()=>O,i0:()=>d,i7:()=>p,iF:()=>x,kY:()=>g,kp:()=>c,sf:()=>_e,ui:()=>Ce,wk:()=>D});var o=function(ke){return ke[ke.State=0]="State",ke[ke.Transition=1]="Transition",ke[ke.Sequence=2]="Sequence",ke[ke.Group=3]="Group",ke[ke.Animate=4]="Animate",ke[ke.Keyframes=5]="Keyframes",ke[ke.Style=6]="Style",ke[ke.Trigger=7]="Trigger",ke[ke.Reference=8]="Reference",ke[ke.AnimateChild=9]="AnimateChild",ke[ke.AnimateRef=10]="AnimateRef",ke[ke.Query=11]="Query",ke[ke.Stagger=12]="Stagger",ke}(o||{});const c="*";function O(ke,Ue){return{type:o.Trigger,name:ke,definitions:Ue,options:{}}}function d(ke,Ue=null){return{type:o.Animate,styles:Ue,timings:ke}}function w(ke,Ue=null){return{type:o.Group,steps:ke,options:Ue}}function C(ke,Ue=null){return{type:o.Sequence,steps:ke,options:Ue}}function x(ke){return{type:o.Style,styles:ke,offset:null}}function D(ke,Ue,ve){return{type:o.State,name:ke,styles:Ue,options:ve}}function p(ke){return{type:o.Keyframes,steps:ke}}function g(ke,Ue,ve=null){return{type:o.Transition,expr:ke,animation:Ue,options:ve}}function h(ke=null){return{type:o.AnimateChild,options:ke}}function P(ke,Ue,ve=null){return{type:o.Query,selector:ke,animation:Ue,options:ve}}class _e{_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_originalOnDoneFns=[];_originalOnStartFns=[];_started=!1;_destroyed=!1;_finished=!1;_position=0;parentPlayer=null;totalTime;constructor(Ue=0,ve=0){this.totalTime=Ue+ve}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(Ue=>Ue()),this._onDoneFns=[])}onStart(Ue){this._originalOnStartFns.push(Ue),this._onStartFns.push(Ue)}onDone(Ue){this._originalOnDoneFns.push(Ue),this._onDoneFns.push(Ue)}onDestroy(Ue){this._onDestroyFns.push(Ue)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(Ue=>Ue()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(Ue=>Ue()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(Ue){this._position=this.totalTime?Ue*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(Ue){const ve="start"==Ue?this._onStartFns:this._onDoneFns;ve.forEach(ye=>ye()),ve.length=0}}class Ce{_onDoneFns=[];_onStartFns=[];_finished=!1;_started=!1;_destroyed=!1;_onDestroyFns=[];parentPlayer=null;totalTime=0;players;constructor(Ue){this.players=Ue;let ve=0,ye=0,Se=0;const z=this.players.length;0==z?queueMicrotask(()=>this._onFinish()):this.players.forEach(te=>{te.onDone(()=>{++ve==z&&this._onFinish()}),te.onDestroy(()=>{++ye==z&&this._onDestroy()}),te.onStart(()=>{++Se==z&&this._onStart()})}),this.totalTime=this.players.reduce((te,L)=>Math.max(te,L.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(Ue=>Ue()),this._onDoneFns=[])}init(){this.players.forEach(Ue=>Ue.init())}onStart(Ue){this._onStartFns.push(Ue)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(Ue=>Ue()),this._onStartFns=[])}onDone(Ue){this._onDoneFns.push(Ue)}onDestroy(Ue){this._onDestroyFns.push(Ue)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(Ue=>Ue.play())}pause(){this.players.forEach(Ue=>Ue.pause())}restart(){this.players.forEach(Ue=>Ue.restart())}finish(){this._onFinish(),this.players.forEach(Ue=>Ue.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(Ue=>Ue.destroy()),this._onDestroyFns.forEach(Ue=>Ue()),this._onDestroyFns=[])}reset(){this.players.forEach(Ue=>Ue.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(Ue){const ve=Ue*this.totalTime;this.players.forEach(ye=>{const Se=ye.totalTime?Math.min(1,ve/ye.totalTime):1;ye.setPosition(Se)})}getPosition(){const Ue=this.players.reduce((ve,ye)=>null===ve||ye.totalTime>ve.totalTime?ye:ve,null);return null!=Ue?Ue.getPosition():0}beforeDestroy(){this.players.forEach(Ue=>{Ue.beforeDestroy&&Ue.beforeDestroy()})}triggerCallback(Ue){const ve="start"==Ue?this._onStartFns:this._onDoneFns;ve.forEach(ye=>ye()),ve.length=0}}const Ae="!"},9888:(ut,Ie,a)=>{"use strict";a.d(Ie,{Pd:()=>it,Au:()=>X,vr:()=>Se,Bu:()=>K,FN:()=>at,GX:()=>rt,Q_:()=>We,Z7:()=>R,Ai:()=>nn,g7:()=>ct,px:()=>_e,_G:()=>le,w6:()=>Q,Ae:()=>Ce});var o=a(177),c=a(4438),O=a(6860),d=a(9046),w=a(7336),C=a(1413),x=a(8359),p=(a(4402),a(7673)),g=a(4412),y=a(8141),h=a(152),u=a(5964),P=a(6354),E=(a(6697),a(5245)),W=a(3294),ne=a(6977),ie=a(2318),Z=a(4085),ae=a(9327);const Le=" ";function _e(b,k,A){const H=Ae(b,k);A=A.trim(),!H.some(xe=>xe.trim()===A)&&(H.push(A),b.setAttribute(k,H.join(Le)))}function Ce(b,k,A){const H=Ae(b,k);A=A.trim();const xe=H.filter(Oe=>Oe!==A);xe.length?b.setAttribute(k,xe.join(Le)):b.removeAttribute(k)}function Ae(b,k){return b.getAttribute(k)?.match(/\S+/g)??[]}const Ue="cdk-describedby-message",ve="cdk-describedby-host";let ye=0,Se=(()=>{class b{_platform=(0,c.WQX)(O.OD);_document=(0,c.WQX)(o.qQ);_messageRegistry=new Map;_messagesContainer=null;_id=""+ye++;constructor(){(0,c.WQX)(d.l).load(d.Y),this._id=(0,c.WQX)(c.sZ2)+"-"+ye++}describe(A,H,xe){if(!this._canBeDescribed(A,H))return;const Oe=z(H,xe);"string"!=typeof H?(te(H,this._id),this._messageRegistry.set(Oe,{messageElement:H,referenceCount:0})):this._messageRegistry.has(Oe)||this._createMessageElement(H,xe),this._isElementDescribedByMessage(A,Oe)||this._addMessageReference(A,Oe)}removeDescription(A,H,xe){if(!H||!this._isElementNode(A))return;const Oe=z(H,xe);if(this._isElementDescribedByMessage(A,Oe)&&this._removeMessageReference(A,Oe),"string"==typeof H){const je=this._messageRegistry.get(Oe);je&&0===je.referenceCount&&this._deleteMessageElement(Oe)}0===this._messagesContainer?.childNodes.length&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){const A=this._document.querySelectorAll(`[${ve}="${this._id}"]`);for(let H=0;H0!=xe.indexOf(Ue));A.setAttribute("aria-describedby",H.join(" "))}_addMessageReference(A,H){const xe=this._messageRegistry.get(H);_e(A,"aria-describedby",xe.messageElement.id),A.setAttribute(ve,this._id),xe.referenceCount++}_removeMessageReference(A,H){const xe=this._messageRegistry.get(H);xe.referenceCount--,Ce(A,"aria-describedby",xe.messageElement.id),A.removeAttribute(ve)}_isElementDescribedByMessage(A,H){const xe=Ae(A,"aria-describedby"),Oe=this._messageRegistry.get(H),je=Oe&&Oe.messageElement.id;return!!je&&-1!=xe.indexOf(je)}_canBeDescribed(A,H){if(!this._isElementNode(A))return!1;if(H&&"object"==typeof H)return!0;const xe=null==H?"":`${H}`.trim(),Oe=A.getAttribute("aria-label");return!(!xe||Oe&&Oe.trim()===xe)}_isElementNode(A){return A.nodeType===this._document.ELEMENT_NODE}static \u0275fac=function(H){return new(H||b)};static \u0275prov=c.jDH({token:b,factory:b.\u0275fac,providedIn:"root"})}return b})();function z(b,k){return"string"==typeof b?`${k||""}/${b}`:b}function te(b,k){b.id||(b.id=`${Ue}-${k}-${ye++}`)}class q{_letterKeyStream=new C.B;_items=[];_selectedItemIndex=-1;_pressedLetters=[];_skipPredicateFn;_selectedItem=new C.B;selectedItem=this._selectedItem;constructor(k,A){const H="number"==typeof A?.debounceInterval?A.debounceInterval:200;A?.skipPredicate&&(this._skipPredicateFn=A.skipPredicate),this.setItems(k),this._setupKeyHandler(H)}destroy(){this._pressedLetters=[],this._letterKeyStream.complete(),this._selectedItem.complete()}setCurrentSelectedItemIndex(k){this._selectedItemIndex=k}setItems(k){this._items=k}handleKey(k){const A=k.keyCode;k.key&&1===k.key.length?this._letterKeyStream.next(k.key.toLocaleUpperCase()):(A>=w.A&&A<=w.Z||A>=w.f2&&A<=w.bn)&&this._letterKeyStream.next(String.fromCharCode(A))}isTyping(){return this._pressedLetters.length>0}reset(){this._pressedLetters=[]}_setupKeyHandler(k){this._letterKeyStream.pipe((0,y.M)(A=>this._pressedLetters.push(A)),(0,h.B)(k),(0,u.p)(()=>this._pressedLetters.length>0),(0,P.T)(()=>this._pressedLetters.join("").toLocaleUpperCase())).subscribe(A=>{for(let H=1;Hk.disabled;constructor(k,A){this._items=k,k instanceof c.rOR?this._itemChangesSubscription=k.changes.subscribe(H=>this._itemsChanged(H.toArray())):(0,c.Hps)(k)&&(this._effectRef=(0,c.QZP)(()=>this._itemsChanged(k()),{injector:A}))}tabOut=new C.B;change=new C.B;skipPredicate(k){return this._skipPredicateFn=k,this}withWrap(k=!0){return this._wrap=k,this}withVerticalOrientation(k=!0){return this._vertical=k,this}withHorizontalOrientation(k){return this._horizontal=k,this}withAllowedModifierKeys(k){return this._allowedModifierKeys=k,this}withTypeAhead(k=200){this._typeaheadSubscription.unsubscribe();const A=this._getItemsArray();return this._typeahead=new q(A,{debounceInterval:"number"==typeof k?k:void 0,skipPredicate:H=>this._skipPredicateFn(H)}),this._typeaheadSubscription=this._typeahead.selectedItem.subscribe(H=>{this.setActiveItem(H)}),this}cancelTypeahead(){return this._typeahead?.reset(),this}withHomeAndEnd(k=!0){return this._homeAndEnd=k,this}withPageUpDown(k=!0,A=10){return this._pageUpAndDown={enabled:k,delta:A},this}setActiveItem(k){const A=this._activeItem();this.updateActiveItem(k),this._activeItem()!==A&&this.change.next(this._activeItemIndex)}onKeydown(k){const A=k.keyCode,xe=["altKey","ctrlKey","metaKey","shiftKey"].every(Oe=>!k[Oe]||this._allowedModifierKeys.indexOf(Oe)>-1);switch(A){case w.wn:return void this.tabOut.next();case w.n6:if(this._vertical&&xe){this.setNextItemActive();break}return;case w.i7:if(this._vertical&&xe){this.setPreviousItemActive();break}return;case w.LE:if(this._horizontal&&xe){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case w.UQ:if(this._horizontal&&xe){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case w.yZ:if(this._homeAndEnd&&xe){this.setFirstItemActive();break}return;case w.Kp:if(this._homeAndEnd&&xe){this.setLastItemActive();break}return;case w.w_:if(this._pageUpAndDown.enabled&&xe){const Oe=this._activeItemIndex-this._pageUpAndDown.delta;this._setActiveItemByIndex(Oe>0?Oe:0,1);break}return;case w.dB:if(this._pageUpAndDown.enabled&&xe){const Oe=this._activeItemIndex+this._pageUpAndDown.delta,je=this._getItemsArray().length;this._setActiveItemByIndex(Oe-1&&H!==this._activeItemIndex&&(this._activeItemIndex=H,this._typeahead?.setCurrentSelectedItemIndex(H))}}}class X extends J{setActiveItem(k){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(k),this.activeItem&&this.activeItem.setActiveStyles()}}class K extends J{_origin="program";setFocusOrigin(k){return this._origin=k,this}setActiveItem(k){super.setActiveItem(k),this.activeItem&&this.activeItem.focus(this._origin)}}let R=(()=>{class b{_platform=(0,c.WQX)(O.OD);constructor(){}isDisabled(A){return A.hasAttribute("disabled")}isVisible(A){return function Ee(b){return!!(b.offsetWidth||b.offsetHeight||"function"==typeof b.getClientRects&&b.getClientRects().length)}(A)&&"visible"===getComputedStyle(A).visibility}isTabbable(A){if(!this._platform.isBrowser)return!1;const H=function se(b){try{return b.frameElement}catch{return null}}(function ln(b){return b.ownerDocument&&b.ownerDocument.defaultView||window}(A));if(H&&(-1===jt(H)||!this.isVisible(H)))return!1;let xe=A.nodeName.toLowerCase(),Oe=jt(A);return A.hasAttribute("contenteditable")?-1!==Oe:!("iframe"===xe||"object"===xe||this._platform.WEBKIT&&this._platform.IOS&&!function Nt(b){let k=b.nodeName.toLowerCase(),A="input"===k&&b.type;return"text"===A||"password"===A||"select"===k||"textarea"===k}(A))&&("audio"===xe?!!A.hasAttribute("controls")&&-1!==Oe:"video"===xe?-1!==Oe&&(null!==Oe||this._platform.FIREFOX||A.hasAttribute("controls")):A.tabIndex>=0)}isFocusable(A,H){return function on(b){return!function Y(b){return function De(b){return"input"==b.nodeName.toLowerCase()}(b)&&"hidden"==b.type}(b)&&(function tt(b){let k=b.nodeName.toLowerCase();return"input"===k||"select"===k||"button"===k||"textarea"===k}(b)||function Re(b){return function nt(b){return"a"==b.nodeName.toLowerCase()}(b)&&b.hasAttribute("href")}(b)||b.hasAttribute("contenteditable")||ht(b))}(A)&&!this.isDisabled(A)&&(H?.ignoreVisibility||this.isVisible(A))}static \u0275fac=function(H){return new(H||b)};static \u0275prov=c.jDH({token:b,factory:b.\u0275fac,providedIn:"root"})}return b})();function ht(b){if(!b.hasAttribute("tabindex")||void 0===b.tabIndex)return!1;let k=b.getAttribute("tabindex");return!(!k||isNaN(parseInt(k,10)))}function jt(b){if(!ht(b))return null;const k=parseInt(b.getAttribute("tabindex")||"",10);return isNaN(k)?-1:k}class Ot{_element;_checker;_ngZone;_document;_injector;_startAnchor;_endAnchor;_hasAttached=!1;startAnchorListener=()=>this.focusLastTabbableElement();endAnchorListener=()=>this.focusFirstTabbableElement();get enabled(){return this._enabled}set enabled(k){this._enabled=k,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(k,this._startAnchor),this._toggleAnchorTabIndex(k,this._endAnchor))}_enabled=!0;constructor(k,A,H,xe,Oe=!1,je){this._element=k,this._checker=A,this._ngZone=H,this._document=xe,this._injector=je,Oe||this.attachAnchors()}destroy(){const k=this._startAnchor,A=this._endAnchor;k&&(k.removeEventListener("focus",this.startAnchorListener),k.remove()),A&&(A.removeEventListener("focus",this.endAnchorListener),A.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return!!this._hasAttached||(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(k){return new Promise(A=>{this._executeOnStable(()=>A(this.focusInitialElement(k)))})}focusFirstTabbableElementWhenReady(k){return new Promise(A=>{this._executeOnStable(()=>A(this.focusFirstTabbableElement(k)))})}focusLastTabbableElementWhenReady(k){return new Promise(A=>{this._executeOnStable(()=>A(this.focusLastTabbableElement(k)))})}_getRegionBoundary(k){const A=this._element.querySelectorAll(`[cdk-focus-region-${k}], [cdkFocusRegion${k}], [cdk-focus-${k}]`);return"start"==k?A.length?A[0]:this._getFirstTabbableElement(this._element):A.length?A[A.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(k){const A=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(A){if(!this._checker.isFocusable(A)){const H=this._getFirstTabbableElement(A);return H?.focus(k),!!H}return A.focus(k),!0}return this.focusFirstTabbableElement(k)}focusFirstTabbableElement(k){const A=this._getRegionBoundary("start");return A&&A.focus(k),!!A}focusLastTabbableElement(k){const A=this._getRegionBoundary("end");return A&&A.focus(k),!!A}hasAttached(){return this._hasAttached}_getFirstTabbableElement(k){if(this._checker.isFocusable(k)&&this._checker.isTabbable(k))return k;const A=k.children;for(let H=0;H=0;H--){const xe=A[H].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(A[H]):null;if(xe)return xe}return null}_createAnchor(){const k=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,k),k.classList.add("cdk-visually-hidden"),k.classList.add("cdk-focus-trap-anchor"),k.setAttribute("aria-hidden","true"),k}_toggleAnchorTabIndex(k,A){k?A.setAttribute("tabindex","0"):A.removeAttribute("tabindex")}toggleAnchors(k){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(k,this._startAnchor),this._toggleAnchorTabIndex(k,this._endAnchor))}_executeOnStable(k){this._injector?(0,c.mal)(k,{injector:this._injector}):setTimeout(k)}}let rt=(()=>{class b{_checker=(0,c.WQX)(R);_ngZone=(0,c.WQX)(c.SKi);_document=(0,c.WQX)(o.qQ);_injector=(0,c.WQX)(c.zZn);constructor(){(0,c.WQX)(d.l).load(d.Y)}create(A,H=!1){return new Ot(A,this._checker,this._ngZone,this._document,H,this._injector)}static \u0275fac=function(H){return new(H||b)};static \u0275prov=c.jDH({token:b,factory:b.\u0275fac,providedIn:"root"})}return b})();function le(b){return 0===b.buttons||0===b.detail}function Q(b){const k=b.touches&&b.touches[0]||b.changedTouches&&b.changedTouches[0];return!(!k||-1!==k.identifier||null!=k.radiusX&&1!==k.radiusX||null!=k.radiusY&&1!==k.radiusY)}const Be=new c.nKC("cdk-input-modality-detector-options"),Je={ignoreKeys:[w.A$,w.W3,w.eg,w.Ge,w.FX]},ot=(0,O.BQ)({passive:!0,capture:!0});let It=(()=>{class b{_platform=(0,c.WQX)(O.OD);modalityDetected;modalityChanged;get mostRecentModality(){return this._modality.value}_mostRecentTarget=null;_modality=new g.t(null);_options;_lastTouchMs=0;_onKeydown=A=>{this._options?.ignoreKeys?.some(H=>H===A.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=(0,O.Fb)(A))};_onMousedown=A=>{Date.now()-this._lastTouchMs<650||(this._modality.next(le(A)?"keyboard":"mouse"),this._mostRecentTarget=(0,O.Fb)(A))};_onTouchstart=A=>{Q(A)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=(0,O.Fb)(A))};constructor(){const A=(0,c.WQX)(c.SKi),H=(0,c.WQX)(o.qQ),xe=(0,c.WQX)(Be,{optional:!0});this._options={...Je,...xe},this.modalityDetected=this._modality.pipe((0,E.i)(1)),this.modalityChanged=this.modalityDetected.pipe((0,W.F)()),this._platform.isBrowser&&A.runOutsideAngular(()=>{H.addEventListener("keydown",this._onKeydown,ot),H.addEventListener("mousedown",this._onMousedown,ot),H.addEventListener("touchstart",this._onTouchstart,ot)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,ot),document.removeEventListener("mousedown",this._onMousedown,ot),document.removeEventListener("touchstart",this._onTouchstart,ot))}static \u0275fac=function(H){return new(H||b)};static \u0275prov=c.jDH({token:b,factory:b.\u0275fac,providedIn:"root"})}return b})();const Ft=new c.nKC("liveAnnouncerElement",{providedIn:"root",factory:function kt(){return null}}),Qt=new c.nKC("LIVE_ANNOUNCER_DEFAULT_OPTIONS");let rn=0,nn=(()=>{class b{_ngZone=(0,c.WQX)(c.SKi);_defaultOptions=(0,c.WQX)(Qt,{optional:!0});_liveElement;_document=(0,c.WQX)(o.qQ);_previousTimeout;_currentPromise;_currentResolve;constructor(){const A=(0,c.WQX)(Ft,{optional:!0});this._liveElement=A||this._createLiveElement()}announce(A,...H){const xe=this._defaultOptions;let Oe,je;return 1===H.length&&"number"==typeof H[0]?je=H[0]:[Oe,je]=H,this.clear(),clearTimeout(this._previousTimeout),Oe||(Oe=xe&&xe.politeness?xe.politeness:"polite"),null==je&&xe&&(je=xe.duration),this._liveElement.setAttribute("aria-live",Oe),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(Ze=>this._currentResolve=Ze)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{this._liveElement.textContent=A,"number"==typeof je&&(this._previousTimeout=setTimeout(()=>this.clear(),je)),this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.remove(),this._liveElement=null,this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){const A="cdk-live-announcer-element",H=this._document.getElementsByClassName(A),xe=this._document.createElement("div");for(let Oe=0;Oe .cdk-overlay-container [aria-modal="true"]');for(let xe=0;xe{class b{_ngZone=(0,c.WQX)(c.SKi);_platform=(0,c.WQX)(O.OD);_inputModalityDetector=(0,c.WQX)(It);_origin=null;_lastFocusOrigin;_windowFocused=!1;_windowFocusTimeoutId;_originTimeoutId;_originFromTouchInteraction=!1;_elementInfo=new Map;_monitoredElementCount=0;_rootNodeFocusListenerCount=new Map;_detectionMode;_windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=setTimeout(()=>this._windowFocused=!1)};_document=(0,c.WQX)(o.qQ,{optional:!0});_stopInputModalityDetector=new C.B;constructor(){const A=(0,c.WQX)(Te,{optional:!0});this._detectionMode=A?.detectionMode||lt.IMMEDIATE}_rootNodeFocusAndBlurListener=A=>{for(let xe=(0,O.Fb)(A);xe;xe=xe.parentElement)"focus"===A.type?this._onFocus(A,xe):this._onBlur(A,xe)};monitor(A,H=!1){const xe=(0,Z.i8)(A);if(!this._platform.isBrowser||1!==xe.nodeType)return(0,p.of)();const Oe=(0,O.KT)(xe)||this._getDocument(),je=this._elementInfo.get(xe);if(je)return H&&(je.checkChildren=!0),je.subject;const Ze={checkChildren:H,subject:new C.B,rootNode:Oe};return this._elementInfo.set(xe,Ze),this._registerGlobalListeners(Ze),Ze.subject}stopMonitoring(A){const H=(0,Z.i8)(A),xe=this._elementInfo.get(H);xe&&(xe.subject.complete(),this._setClasses(H),this._elementInfo.delete(H),this._removeGlobalListeners(xe))}focusVia(A,H,xe){const Oe=(0,Z.i8)(A);Oe===this._getDocument().activeElement?this._getClosestElementsInfo(Oe).forEach(([Ze,dt])=>this._originChanged(Ze,H,dt)):(this._setOrigin(H),"function"==typeof Oe.focus&&Oe.focus(xe))}ngOnDestroy(){this._elementInfo.forEach((A,H)=>this.stopMonitoring(H))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(A){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(A)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:A&&this._isLastInteractionFromInputLabel(A)?"mouse":"program"}_shouldBeAttributedToTouch(A){return this._detectionMode===lt.EVENTUAL||!!A?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(A,H){A.classList.toggle("cdk-focused",!!H),A.classList.toggle("cdk-touch-focused","touch"===H),A.classList.toggle("cdk-keyboard-focused","keyboard"===H),A.classList.toggle("cdk-mouse-focused","mouse"===H),A.classList.toggle("cdk-program-focused","program"===H)}_setOrigin(A,H=!1){this._ngZone.runOutsideAngular(()=>{this._origin=A,this._originFromTouchInteraction="touch"===A&&H,this._detectionMode===lt.IMMEDIATE&&(clearTimeout(this._originTimeoutId),this._originTimeoutId=setTimeout(()=>this._origin=null,this._originFromTouchInteraction?650:1))})}_onFocus(A,H){const xe=this._elementInfo.get(H),Oe=(0,O.Fb)(A);!xe||!xe.checkChildren&&H!==Oe||this._originChanged(H,this._getFocusOrigin(Oe),xe)}_onBlur(A,H){const xe=this._elementInfo.get(H);!xe||xe.checkChildren&&A.relatedTarget instanceof Node&&H.contains(A.relatedTarget)||(this._setClasses(H),this._emitOrigin(xe,null))}_emitOrigin(A,H){A.subject.observers.length&&this._ngZone.run(()=>A.subject.next(H))}_registerGlobalListeners(A){if(!this._platform.isBrowser)return;const H=A.rootNode,xe=this._rootNodeFocusListenerCount.get(H)||0;xe||this._ngZone.runOutsideAngular(()=>{H.addEventListener("focus",this._rootNodeFocusAndBlurListener,He),H.addEventListener("blur",this._rootNodeFocusAndBlurListener,He)}),this._rootNodeFocusListenerCount.set(H,xe+1),1==++this._monitoredElementCount&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe((0,ne.Q)(this._stopInputModalityDetector)).subscribe(Oe=>{this._setOrigin(Oe,!0)}))}_removeGlobalListeners(A){const H=A.rootNode;if(this._rootNodeFocusListenerCount.has(H)){const xe=this._rootNodeFocusListenerCount.get(H);xe>1?this._rootNodeFocusListenerCount.set(H,xe-1):(H.removeEventListener("focus",this._rootNodeFocusAndBlurListener,He),H.removeEventListener("blur",this._rootNodeFocusAndBlurListener,He),this._rootNodeFocusListenerCount.delete(H))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(A,H,xe){this._setClasses(A,H),this._emitOrigin(xe,H),this._lastFocusOrigin=H}_getClosestElementsInfo(A){const H=[];return this._elementInfo.forEach((xe,Oe)=>{(Oe===A||xe.checkChildren&&Oe.contains(A))&&H.push([Oe,xe])}),H}_isLastInteractionFromInputLabel(A){const{_mostRecentTarget:H,mostRecentModality:xe}=this._inputModalityDetector;if("mouse"!==xe||!H||H===A||"INPUT"!==A.nodeName&&"TEXTAREA"!==A.nodeName||A.disabled)return!1;const Oe=A.labels;if(Oe)for(let je=0;je{class b{_platform=(0,c.WQX)(O.OD);_hasCheckedHighContrastMode;_document=(0,c.WQX)(o.qQ);_breakpointSubscription;constructor(){this._breakpointSubscription=(0,c.WQX)(ae.QP).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return Ut.NONE;const A=this._document.createElement("div");A.style.backgroundColor="rgb(1,2,3)",A.style.position="absolute",this._document.body.appendChild(A);const H=this._document.defaultView||window,xe=H&&H.getComputedStyle?H.getComputedStyle(A):null,Oe=(xe&&xe.backgroundColor||"").replace(/ /g,"");switch(A.remove(),Oe){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return Ut.WHITE_ON_BLACK;case"rgb(255,255,255)":case"rgb(255,250,239)":return Ut.BLACK_ON_WHITE}return Ut.NONE}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const A=this._document.body.classList;A.remove(mt,Un,pt),this._hasCheckedHighContrastMode=!0;const H=this.getHighContrastMode();H===Ut.BLACK_ON_WHITE?A.add(mt,Un):H===Ut.WHITE_ON_BLACK&&A.add(mt,pt)}}static \u0275fac=function(H){return new(H||b)};static \u0275prov=c.jDH({token:b,factory:b.\u0275fac,providedIn:"root"})}return b})(),it=(()=>{class b{constructor(){(0,c.WQX)(We)._applyBodyHighContrastModeCssClasses()}static \u0275fac=function(H){return new(H||b)};static \u0275mod=c.$C({type:b});static \u0275inj=c.G2t({imports:[ie.w5]})}return b})();const bt={};let ct=(()=>{class b{_appId=(0,c.WQX)(c.sZ2);getId(A){return"ng"!==this._appId&&(A+=this._appId),bt.hasOwnProperty(A)||(bt[A]=0),`${A}${bt[A]++}`}static \u0275fac=function(H){return new(H||b)};static \u0275prov=c.jDH({token:b,factory:b.\u0275fac,providedIn:"root"})}return b})()},8203:(ut,Ie,a)=>{"use strict";a.d(Ie,{dS:()=>x,jI:()=>p});var o=a(4438),c=a(177);const O=new o.nKC("cdk-dir-doc",{providedIn:"root",factory:function d(){return(0,o.WQX)(c.qQ)}}),w=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let x=(()=>{class g{value="ltr";change=new o.bkB;constructor(){const h=(0,o.WQX)(O,{optional:!0});h&&(this.value=function C(g){const y=g?.toLowerCase()||"";return"auto"===y&&typeof navigator<"u"&&navigator?.language?w.test(navigator.language)?"rtl":"ltr":"rtl"===y?"rtl":"ltr"}((h.body?h.body.dir:null)||(h.documentElement?h.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}static \u0275fac=function(u){return new(u||g)};static \u0275prov=o.jDH({token:g,factory:g.\u0275fac,providedIn:"root"})}return g})(),p=(()=>{class g{static \u0275fac=function(u){return new(u||g)};static \u0275mod=o.$C({type:g});static \u0275inj=o.G2t({})}return g})()},4085:(ut,Ie,a)=>{"use strict";a.d(Ie,{FG:()=>w,OE:()=>O,a1:()=>C,he:()=>c,i8:()=>x,o1:()=>d});var o=a(4438);function c(p){return null!=p&&"false"!=`${p}`}function O(p,g=0){return d(p)?Number(p):2===arguments.length?g:0}function d(p){return!isNaN(parseFloat(p))&&!isNaN(Number(p))}function w(p){return Array.isArray(p)?p:[p]}function C(p){return null==p?"":"string"==typeof p?p:`${p}px`}function x(p){return p instanceof o.aKT?p.nativeElement:p}},5024:(ut,Ie,a)=>{"use strict";a.d(Ie,{CB:()=>u,DQ:()=>h,Q3:()=>p,qS:()=>C,sL:()=>g,xn:()=>y,y4:()=>x,zP:()=>T});var o=a(17),d=(a(4402),a(7673),a(1413)),w=a(4438);class C{}function x(E){return E&&"function"==typeof E.connect&&!(E instanceof o.G)}var p=function(E){return E[E.REPLACED=0]="REPLACED",E[E.INSERTED=1]="INSERTED",E[E.MOVED=2]="MOVED",E[E.REMOVED=3]="REMOVED",E}(p||{});const g=new w.nKC("_ViewRepeater");class y{applyChanges(W,ne,de,ie,Z){W.forEachOperation((ae,Le,_e)=>{let Ce,Ae;if(null==ae.previousIndex){const ke=de(ae,Le,_e);Ce=ne.createEmbeddedView(ke.templateRef,ke.context,ke.index),Ae=p.INSERTED}else null==_e?(ne.remove(Le),Ae=p.REMOVED):(Ce=ne.get(Le),ne.move(Ce,_e),Ae=p.MOVED);Z&&Z({context:Ce?.context,operation:Ae,record:ae})})}detach(){}}class h{viewCacheSize=20;_viewCache=[];applyChanges(W,ne,de,ie,Z){W.forEachOperation((ae,Le,_e)=>{let Ce,Ae;null==ae.previousIndex?(Ce=this._insertView(()=>de(ae,Le,_e),_e,ne,ie(ae)),Ae=Ce?p.INSERTED:p.REPLACED):null==_e?(this._detachAndCacheView(Le,ne),Ae=p.REMOVED):(Ce=this._moveView(Le,_e,ne,ie(ae)),Ae=p.MOVED),Z&&Z({context:Ce?.context,operation:Ae,record:ae})})}detach(){for(const W of this._viewCache)W.destroy();this._viewCache=[]}_insertView(W,ne,de,ie){const Z=this._insertViewFromCache(ne,de);if(Z)return void(Z.context.$implicit=ie);const ae=W();return de.createEmbeddedView(ae.templateRef,ae.context,ae.index)}_detachAndCacheView(W,ne){const de=ne.detach(W);this._maybeCacheView(de,ne)}_moveView(W,ne,de,ie){const Z=de.get(W);return de.move(Z,ne),Z.context.$implicit=ie,Z}_maybeCacheView(W,ne){if(this._viewCache.lengththis._markSelected(Z)):this._markSelected(ne[0]),this._selectedToEmit.length=0)}select(...W){this._verifyValueAssignment(W),W.forEach(de=>this._markSelected(de));const ne=this._hasQueuedChanges();return this._emitChangeEvent(),ne}deselect(...W){this._verifyValueAssignment(W),W.forEach(de=>this._unmarkSelected(de));const ne=this._hasQueuedChanges();return this._emitChangeEvent(),ne}setSelection(...W){this._verifyValueAssignment(W);const ne=this.selected,de=new Set(W);W.forEach(Z=>this._markSelected(Z)),ne.filter(Z=>!de.has(this._getConcreteValue(Z,de))).forEach(Z=>this._unmarkSelected(Z));const ie=this._hasQueuedChanges();return this._emitChangeEvent(),ie}toggle(W){return this.isSelected(W)?this.deselect(W):this.select(W)}clear(W=!0){this._unmarkAll();const ne=this._hasQueuedChanges();return W&&this._emitChangeEvent(),ne}isSelected(W){return this._selection.has(this._getConcreteValue(W))}isEmpty(){return 0===this._selection.size}hasValue(){return!this.isEmpty()}sort(W){this._multiple&&this.selected&&this._selected.sort(W)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(W){W=this._getConcreteValue(W),this.isSelected(W)||(this._multiple||this._unmarkAll(),this.isSelected(W)||this._selection.add(W),this._emitChanges&&this._selectedToEmit.push(W))}_unmarkSelected(W){W=this._getConcreteValue(W),this.isSelected(W)&&(this._selection.delete(W),this._emitChanges&&this._deselectedToEmit.push(W))}_unmarkAll(){this.isEmpty()||this._selection.forEach(W=>this._unmarkSelected(W))}_verifyValueAssignment(W){}_hasQueuedChanges(){return!(!this._deselectedToEmit.length&&!this._selectedToEmit.length)}_getConcreteValue(W,ne){if(this.compareWith){ne=ne??this._selection;for(let de of ne)if(this.compareWith(W,de))return de;return W}return W}}let T=(()=>{class E{_listeners=[];notify(ne,de){for(let ie of this._listeners)ie(ne,de)}listen(ne){return this._listeners.push(ne),()=>{this._listeners=this._listeners.filter(de=>ne!==de)}}ngOnDestroy(){this._listeners=[]}static \u0275fac=function(de){return new(de||E)};static \u0275prov=w.jDH({token:E,factory:E.\u0275fac,providedIn:"root"})}return E})()},7336:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>N,A$:()=>D,FX:()=>C,Fm:()=>w,G_:()=>c,Ge:()=>be,KE:()=>Gt,Kp:()=>T,LE:()=>de,SJ:()=>_e,UQ:()=>W,W3:()=>x,Z:()=>re,_f:()=>y,bn:()=>L,dB:()=>P,eg:()=>Mn,f2:()=>Ce,i7:()=>ne,n6:()=>ie,rp:()=>qt,t6:()=>h,w_:()=>u,wn:()=>O,yZ:()=>E});const c=8,O=9,w=13,C=16,x=17,D=18,y=27,h=32,u=33,P=34,T=35,E=36,W=37,ne=38,de=39,ie=40,_e=46,Ce=48,L=57,N=65,re=90,be=91,Gt=188,Mn=224;function qt(gn,...In){return In.length?In.some(Ve=>gn[Ve]):gn.altKey||gn.shiftKey||gn.ctrlKey||gn.metaKey}},9327:(ut,Ie,a)=>{"use strict";a.d(Ie,{QP:()=>ie,Rp:()=>ae});var o=a(4438),c=a(4085),O=a(1413),d=a(4572),w=a(8793),C=a(1985),x=a(6697),D=a(5245),p=a(152),g=a(6354),y=a(9172),h=a(6977),u=a(6860);const T=new Set;let E,W=(()=>{class Le{_platform=(0,o.WQX)(u.OD);_nonce=(0,o.WQX)(o.BIS,{optional:!0});_matchMedia;constructor(){this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):de}matchMedia(Ce){return(this._platform.WEBKIT||this._platform.BLINK)&&function ne(Le,_e){if(!T.has(Le))try{E||(E=document.createElement("style"),_e&&E.setAttribute("nonce",_e),E.setAttribute("type","text/css"),document.head.appendChild(E)),E.sheet&&(E.sheet.insertRule(`@media ${Le} {body{ }}`,0),T.add(Le))}catch(Ce){console.error(Ce)}}(Ce,this._nonce),this._matchMedia(Ce)}static \u0275fac=function(Ae){return new(Ae||Le)};static \u0275prov=o.jDH({token:Le,factory:Le.\u0275fac,providedIn:"root"})}return Le})();function de(Le){return{matches:"all"===Le||""===Le,media:Le,addListener:()=>{},removeListener:()=>{}}}let ie=(()=>{class Le{_mediaMatcher=(0,o.WQX)(W);_zone=(0,o.WQX)(o.SKi);_queries=new Map;_destroySubject=new O.B;constructor(){}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(Ce){return Z((0,c.FG)(Ce)).some(ke=>this._registerQuery(ke).mql.matches)}observe(Ce){const ke=Z((0,c.FG)(Ce)).map(ve=>this._registerQuery(ve).observable);let Ue=(0,d.z)(ke);return Ue=(0,w.x)(Ue.pipe((0,x.s)(1)),Ue.pipe((0,D.i)(1),(0,p.B)(0))),Ue.pipe((0,g.T)(ve=>{const ye={matches:!1,breakpoints:{}};return ve.forEach(({matches:Se,query:z})=>{ye.matches=ye.matches||Se,ye.breakpoints[z]=Se}),ye}))}_registerQuery(Ce){if(this._queries.has(Ce))return this._queries.get(Ce);const Ae=this._mediaMatcher.matchMedia(Ce),Ue={observable:new C.c(ve=>{const ye=Se=>this._zone.run(()=>ve.next(Se));return Ae.addListener(ye),()=>{Ae.removeListener(ye)}}).pipe((0,y.Z)(Ae),(0,g.T)(({matches:ve})=>({query:Ce,matches:ve})),(0,h.Q)(this._destroySubject)),mql:Ae};return this._queries.set(Ce,Ue),Ue}static \u0275fac=function(Ae){return new(Ae||Le)};static \u0275prov=o.jDH({token:Le,factory:Le.\u0275fac,providedIn:"root"})}return Le})();function Z(Le){return Le.map(_e=>_e.split(",")).reduce((_e,Ce)=>_e.concat(Ce)).map(_e=>_e.trim())}const ae={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)"}},2318:(ut,Ie,a)=>{"use strict";a.d(Ie,{w5:()=>C});var o=a(4438);let O=(()=>{class x{create(p){return typeof MutationObserver>"u"?null:new MutationObserver(p)}static \u0275fac=function(g){return new(g||x)};static \u0275prov=o.jDH({token:x,factory:x.\u0275fac,providedIn:"root"})}return x})(),C=(()=>{class x{static \u0275fac=function(g){return new(g||x)};static \u0275mod=o.$C({type:x});static \u0275inj=o.G2t({providers:[O]})}return x})()},6969:(ut,Ie,a)=>{"use strict";a.d(Ie,{WB:()=>Nt,$Q:()=>jt,hJ:()=>De,rR:()=>Ue,Sf:()=>N,z_:()=>Ot,yY:()=>V});var o=a(3980),c=a(177),O=a(4438),d=a(4085),w=a(6860),C=a(5964),x=a(6977),D=a(9974),p=a(4360),y=a(8203),h=a(6939),u=a(9888),P=a(9046),T=a(1413),E=a(8359),W=a(7786),ne=a(7336);const de=(0,w.CZ)();class ie{_viewportRuler;_previousHTMLStyles={top:"",left:""};_previousScrollPosition;_isEnabled=!1;_document;constructor(ee,re){this._viewportRuler=ee,this._document=re}attach(){}enable(){if(this._canBeEnabled()){const ee=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=ee.style.left||"",this._previousHTMLStyles.top=ee.style.top||"",ee.style.left=(0,d.a1)(-this._previousScrollPosition.left),ee.style.top=(0,d.a1)(-this._previousScrollPosition.top),ee.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const ee=this._document.documentElement,be=ee.style,Ke=this._document.body.style,ft=be.scrollBehavior||"",le=Ke.scrollBehavior||"";this._isEnabled=!1,be.left=this._previousHTMLStyles.left,be.top=this._previousHTMLStyles.top,ee.classList.remove("cdk-global-scrollblock"),de&&(be.scrollBehavior=Ke.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),de&&(be.scrollBehavior=ft,Ke.scrollBehavior=le)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const re=this._document.body,be=this._viewportRuler.getViewportSize();return re.scrollHeight>be.height||re.scrollWidth>be.width}}class ae{_scrollDispatcher;_ngZone;_viewportRuler;_config;_scrollSubscription=null;_overlayRef;_initialScrollPosition;constructor(ee,re,be,Ke){this._scrollDispatcher=ee,this._ngZone=re,this._viewportRuler=be,this._config=Ke}attach(ee){this._overlayRef=ee}enable(){if(this._scrollSubscription)return;const ee=this._scrollDispatcher.scrolled(0).pipe((0,C.p)(re=>!re||!this._overlayRef.overlayElement.contains(re.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=ee.subscribe(()=>{const re=this._viewportRuler.getViewportScrollPosition().top;Math.abs(re-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=ee.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}_detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}class Le{enable(){}disable(){}attach(){}}function _e(ce,ee){return ee.some(re=>ce.bottomre.bottom||ce.rightre.right)}function Ce(ce,ee){return ee.some(re=>ce.topre.bottom||ce.leftre.right)}class Ae{_scrollDispatcher;_viewportRuler;_ngZone;_config;_scrollSubscription=null;_overlayRef;constructor(ee,re,be,Ke){this._scrollDispatcher=ee,this._viewportRuler=re,this._ngZone=be,this._config=Ke}attach(ee){this._overlayRef=ee}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const re=this._overlayRef.overlayElement.getBoundingClientRect(),{width:be,height:Ke}=this._viewportRuler.getViewportSize();_e(re,[{width:be,height:Ke,bottom:Ke,right:be,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let ke=(()=>{class ce{_scrollDispatcher=(0,O.WQX)(o.R);_viewportRuler=(0,O.WQX)(o.Xj);_ngZone=(0,O.WQX)(O.SKi);_document=(0,O.WQX)(c.qQ);constructor(){}noop=()=>new Le;close=re=>new ae(this._scrollDispatcher,this._ngZone,this._viewportRuler,re);block=()=>new ie(this._viewportRuler,this._document);reposition=re=>new Ae(this._scrollDispatcher,this._viewportRuler,this._ngZone,re);static \u0275fac=function(be){return new(be||ce)};static \u0275prov=O.jDH({token:ce,factory:ce.\u0275fac,providedIn:"root"})}return ce})();class Ue{positionStrategy;scrollStrategy=new Le;panelClass="";hasBackdrop=!1;backdropClass="cdk-overlay-dark-backdrop";width;height;minWidth;minHeight;maxWidth;maxHeight;direction;disposeOnNavigation=!1;constructor(ee){if(ee){const re=Object.keys(ee);for(const be of re)void 0!==ee[be]&&(this[be]=ee[be])}}}class Se{connectionPair;scrollableViewProperties;constructor(ee,re){this.connectionPair=ee,this.scrollableViewProperties=re}}let L=(()=>{class ce{_attachedOverlays=[];_document=(0,O.WQX)(c.qQ);_isAttached;constructor(){}ngOnDestroy(){this.detach()}add(re){this.remove(re),this._attachedOverlays.push(re)}remove(re){const be=this._attachedOverlays.indexOf(re);be>-1&&this._attachedOverlays.splice(be,1),0===this._attachedOverlays.length&&this.detach()}static \u0275fac=function(be){return new(be||ce)};static \u0275prov=O.jDH({token:ce,factory:ce.\u0275fac,providedIn:"root"})}return ce})(),q=(()=>{class ce extends L{_ngZone=(0,O.WQX)(O.SKi);_renderer=(0,O.WQX)(O._9s).createRenderer(null,null);_cleanupKeydown;add(re){super.add(re),this._isAttached||(this._ngZone.runOutsideAngular(()=>{this._cleanupKeydown=this._renderer.listen("body","keydown",this._keydownListener)}),this._isAttached=!0)}detach(){this._isAttached&&(this._cleanupKeydown?.(),this._isAttached=!1)}_keydownListener=re=>{const be=this._attachedOverlays;for(let Ke=be.length-1;Ke>-1;Ke--)if(be[Ke]._keydownEvents.observers.length>0){this._ngZone.run(()=>be[Ke]._keydownEvents.next(re));break}};static \u0275fac=(()=>{let re;return function(Ke){return(re||(re=O.xGo(ce)))(Ke||ce)}})();static \u0275prov=O.jDH({token:ce,factory:ce.\u0275fac,providedIn:"root"})}return ce})(),J=(()=>{class ce extends L{_platform=(0,O.WQX)(w.OD);_ngZone=(0,O.WQX)(O.SKi,{optional:!0});_cursorOriginalValue;_cursorStyleIsSet=!1;_pointerDownEventTarget;add(re){if(super.add(re),!this._isAttached){const be=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(be)):this._addEventListeners(be),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=be.style.cursor,be.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){const re=this._document.body;re.removeEventListener("pointerdown",this._pointerDownListener,!0),re.removeEventListener("click",this._clickListener,!0),re.removeEventListener("auxclick",this._clickListener,!0),re.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(re.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(re){re.addEventListener("pointerdown",this._pointerDownListener,!0),re.addEventListener("click",this._clickListener,!0),re.addEventListener("auxclick",this._clickListener,!0),re.addEventListener("contextmenu",this._clickListener,!0)}_pointerDownListener=re=>{this._pointerDownEventTarget=(0,w.Fb)(re)};_clickListener=re=>{const be=(0,w.Fb)(re),Ke="click"===re.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:be;this._pointerDownEventTarget=null;const ft=this._attachedOverlays.slice();for(let le=ft.length-1;le>-1;le--){const Q=ft[le];if(Q._outsidePointerEvents.observers.length<1||!Q.hasAttached())continue;if(X(Q.overlayElement,be)||X(Q.overlayElement,Ke))break;const Be=Q._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>Be.next(re)):Be.next(re)}};static \u0275fac=(()=>{let re;return function(Ke){return(re||(re=O.xGo(ce)))(Ke||ce)}})();static \u0275prov=O.jDH({token:ce,factory:ce.\u0275fac,providedIn:"root"})}return ce})();function X(ce,ee){const re=typeof ShadowRoot<"u"&&ShadowRoot;let be=ee;for(;be;){if(be===ce)return!0;be=re&&be instanceof ShadowRoot?be.host:be.parentNode}return!1}let K=(()=>{class ce{static \u0275fac=function(be){return new(be||ce)};static \u0275cmp=O.VBU({type:ce,selectors:[["ng-component"]],hostAttrs:["cdk-overlay-style-loader",""],decls:0,vars:0,template:function(be,Ke){},styles:[".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed}@layer cdk-overlay{.cdk-overlay-container{z-index:1000}}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute}@layer cdk-overlay{.cdk-global-overlay-wrapper{z-index:1000}}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%}@layer cdk-overlay{.cdk-overlay-pane{z-index:1000}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}@layer cdk-overlay{.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px}@layer cdk-overlay{.cdk-overlay-connected-position-bounding-box{z-index:1000}}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}"],encapsulation:2,changeDetection:0})}return ce})(),N=(()=>{class ce{_platform=(0,O.WQX)(w.OD);_containerElement;_document=(0,O.WQX)(c.qQ);_styleLoader=(0,O.WQX)(P.l);constructor(){}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._loadStyles(),this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const re="cdk-overlay-container";if(this._platform.isBrowser||(0,w.v8)()){const Ke=this._document.querySelectorAll(`.${re}[platform="server"], .${re}[platform="test"]`);for(let ft=0;ft(0,O.Tzd)(()=>{this._renders.next()},{injector:this._injector}))}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(ee){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);const re=this._portalOutlet.attach(ee);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._afterNextRenderRef?.destroy(),this._afterNextRenderRef=(0,O.mal)(()=>{this.hasAttached()&&this.updatePosition()},{injector:this._injector}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof re?.onDestroy&&re.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),re}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const ee=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenEmpty(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),ee}dispose(){const ee=this.hasAttached();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._afterNextRenderRef?.destroy(),this._previousHostParent=this._pane=this._host=null,ee&&this._detachments.next(),this._detachments.complete(),this._afterRenderRef.destroy(),this._renders.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(ee){ee!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=ee,this.hasAttached()&&(ee.attach(this),this.updatePosition()))}updateSize(ee){this._config={...this._config,...ee},this._updateElementSize()}setDirection(ee){this._config={...this._config,direction:ee},this._updateElementDirection()}addPanelClass(ee){this._pane&&this._toggleClasses(this._pane,ee,!0)}removePanelClass(ee){this._pane&&this._toggleClasses(this._pane,ee,!1)}getDirection(){const ee=this._config.direction;return ee?"string"==typeof ee?ee:ee.value:"ltr"}updateScrollStrategy(ee){ee!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=ee,this.hasAttached()&&(ee.attach(this),ee.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const ee=this._pane.style;ee.width=(0,d.a1)(this._config.width),ee.height=(0,d.a1)(this._config.height),ee.minWidth=(0,d.a1)(this._config.minWidth),ee.minHeight=(0,d.a1)(this._config.minHeight),ee.maxWidth=(0,d.a1)(this._config.maxWidth),ee.maxHeight=(0,d.a1)(this._config.maxHeight)}_togglePointerEvents(ee){this._pane.style.pointerEvents=ee?"":"none"}_attachBackdrop(){const ee="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._cleanupBackdropClick?.(),this._cleanupBackdropClick=this._renderer.listen(this._backdropElement,"click",re=>this._backdropClick.next(re)),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(ee)})}):this._backdropElement.classList.add(ee)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){const ee=this._backdropElement;if(ee){if(this._animationsDisabled)return void this._disposeBackdrop(ee);ee.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{this._cleanupBackdropTransitionEnd?.(),this._cleanupBackdropTransitionEnd=this._renderer.listen(ee,"transitionend",re=>{this._disposeBackdrop(re.target)})}),ee.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(ee)},500))}}_toggleClasses(ee,re,be){const Ke=(0,d.FG)(re||[]).filter(ft=>!!ft);Ke.length&&(be?ee.classList.add(...Ke):ee.classList.remove(...Ke))}_detachContentWhenEmpty(){this._ngZone.runOutsideAngular(()=>{const ee=this._renders.pipe((0,x.Q)((0,W.h)(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),ee.unsubscribe())})})}_disposeScrollStrategy(){const ee=this._scrollStrategy;ee&&(ee.disable(),ee.detach&&ee.detach())}_disposeBackdrop(ee){this._cleanupBackdropClick?.(),this._cleanupBackdropTransitionEnd?.(),ee&&(ee.remove(),this._backdropElement===ee&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}}const I="cdk-overlay-connected-position-bounding-box",M=/([A-Za-z%]+)$/;class j{_viewportRuler;_document;_platform;_overlayContainer;_overlayRef;_isInitialRender;_lastBoundingBoxSize={width:0,height:0};_isPushed=!1;_canPush=!0;_growAfterOpen=!1;_hasFlexibleDimensions=!0;_positionLocked=!1;_originRect;_overlayRect;_viewportRect;_containerRect;_viewportMargin=0;_scrollables=[];_preferredPositions=[];_origin;_pane;_isDisposed;_boundingBox;_lastPosition;_lastScrollVisibility;_positionChanges=new T.B;_resizeSubscription=E.yU.EMPTY;_offsetX=0;_offsetY=0;_transformOriginSelector;_appliedPanelClasses=[];_previousPushAmount;positionChanges=this._positionChanges;get positions(){return this._preferredPositions}constructor(ee,re,be,Ke,ft){this._viewportRuler=re,this._document=be,this._platform=Ke,this._overlayContainer=ft,this.setOrigin(ee)}attach(ee){this._validatePositions(),ee.hostElement.classList.add(I),this._overlayRef=ee,this._boundingBox=ee.hostElement,this._pane=ee.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const ee=this._originRect,re=this._overlayRect,be=this._viewportRect,Ke=this._containerRect,ft=[];let le;for(let Q of this._preferredPositions){let Be=this._getOriginPoint(ee,Ke,Q),Je=this._getOverlayPoint(Be,re,Q),qe=this._getOverlayFit(Je,re,be,Q);if(qe.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(Q,Be);this._canFitWithFlexibleDimensions(qe,Je,be)?ft.push({position:Q,origin:Be,overlayRect:re,boundingBoxRect:this._calculateBoundingBoxRect(Be,Q)}):(!le||le.overlayFit.visibleAreaBe&&(Be=qe,Q=Je)}return this._isPushed=!1,void this._applyPosition(Q.position,Q.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(le.position,le.originPoint);this._applyPosition(le.position,le.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&ge(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(I),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const ee=this._lastPosition;if(ee){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const re=this._getOriginPoint(this._originRect,this._containerRect,ee);this._applyPosition(ee,re)}else this.apply()}withScrollableContainers(ee){return this._scrollables=ee,this}withPositions(ee){return this._preferredPositions=ee,-1===ee.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(ee){return this._viewportMargin=ee,this}withFlexibleDimensions(ee=!0){return this._hasFlexibleDimensions=ee,this}withGrowAfterOpen(ee=!0){return this._growAfterOpen=ee,this}withPush(ee=!0){return this._canPush=ee,this}withLockedPosition(ee=!0){return this._positionLocked=ee,this}setOrigin(ee){return this._origin=ee,this}withDefaultOffsetX(ee){return this._offsetX=ee,this}withDefaultOffsetY(ee){return this._offsetY=ee,this}withTransformOriginOn(ee){return this._transformOriginSelector=ee,this}_getOriginPoint(ee,re,be){let Ke,ft;if("center"==be.originX)Ke=ee.left+ee.width/2;else{const le=this._isRtl()?ee.right:ee.left,Q=this._isRtl()?ee.left:ee.right;Ke="start"==be.originX?le:Q}return re.left<0&&(Ke-=re.left),ft="center"==be.originY?ee.top+ee.height/2:"top"==be.originY?ee.top:ee.bottom,re.top<0&&(ft-=re.top),{x:Ke,y:ft}}_getOverlayPoint(ee,re,be){let Ke,ft;return Ke="center"==be.overlayX?-re.width/2:"start"===be.overlayX?this._isRtl()?-re.width:0:this._isRtl()?0:-re.width,ft="center"==be.overlayY?-re.height/2:"top"==be.overlayY?0:-re.height,{x:ee.x+Ke,y:ee.y+ft}}_getOverlayFit(ee,re,be,Ke){const ft=oe(re);let{x:le,y:Q}=ee,Be=this._getOffset(Ke,"x"),Je=this._getOffset(Ke,"y");Be&&(le+=Be),Je&&(Q+=Je);let It=0-Q,Ft=Q+ft.height-be.height,kt=this._subtractOverflows(ft.width,0-le,le+ft.width-be.width),Qt=this._subtractOverflows(ft.height,It,Ft),rn=kt*Qt;return{visibleArea:rn,isCompletelyWithinViewport:ft.width*ft.height===rn,fitsInViewportVertically:Qt===ft.height,fitsInViewportHorizontally:kt==ft.width}}_canFitWithFlexibleDimensions(ee,re,be){if(this._hasFlexibleDimensions){const Ke=be.bottom-re.y,ft=be.right-re.x,le=Me(this._overlayRef.getConfig().minHeight),Q=Me(this._overlayRef.getConfig().minWidth);return(ee.fitsInViewportVertically||null!=le&&le<=Ke)&&(ee.fitsInViewportHorizontally||null!=Q&&Q<=ft)}return!1}_pushOverlayOnScreen(ee,re,be){if(this._previousPushAmount&&this._positionLocked)return{x:ee.x+this._previousPushAmount.x,y:ee.y+this._previousPushAmount.y};const Ke=oe(re),ft=this._viewportRect,le=Math.max(ee.x+Ke.width-ft.width,0),Q=Math.max(ee.y+Ke.height-ft.height,0),Be=Math.max(ft.top-be.top-ee.y,0),Je=Math.max(ft.left-be.left-ee.x,0);let qe=0,ot=0;return qe=Ke.width<=ft.width?Je||-le:ee.xkt&&!this._isInitialRender&&!this._growAfterOpen&&(le=ee.y-kt/2)}if("end"===re.overlayX&&!Ke||"start"===re.overlayX&&Ke)It=be.width-ee.x+2*this._viewportMargin,qe=ee.x-this._viewportMargin;else if("start"===re.overlayX&&!Ke||"end"===re.overlayX&&Ke)ot=ee.x,qe=be.right-ee.x;else{const Ft=Math.min(be.right-ee.x+be.left,ee.x),kt=this._lastBoundingBoxSize.width;qe=2*Ft,ot=ee.x-Ft,qe>kt&&!this._isInitialRender&&!this._growAfterOpen&&(ot=ee.x-kt/2)}return{top:le,left:ot,bottom:Q,right:It,width:qe,height:ft}}_setBoundingBoxStyles(ee,re){const be=this._calculateBoundingBoxRect(ee,re);!this._isInitialRender&&!this._growAfterOpen&&(be.height=Math.min(be.height,this._lastBoundingBoxSize.height),be.width=Math.min(be.width,this._lastBoundingBoxSize.width));const Ke={};if(this._hasExactPosition())Ke.top=Ke.left="0",Ke.bottom=Ke.right=Ke.maxHeight=Ke.maxWidth="",Ke.width=Ke.height="100%";else{const ft=this._overlayRef.getConfig().maxHeight,le=this._overlayRef.getConfig().maxWidth;Ke.height=(0,d.a1)(be.height),Ke.top=(0,d.a1)(be.top),Ke.bottom=(0,d.a1)(be.bottom),Ke.width=(0,d.a1)(be.width),Ke.left=(0,d.a1)(be.left),Ke.right=(0,d.a1)(be.right),Ke.alignItems="center"===re.overlayX?"center":"end"===re.overlayX?"flex-end":"flex-start",Ke.justifyContent="center"===re.overlayY?"center":"bottom"===re.overlayY?"flex-end":"flex-start",ft&&(Ke.maxHeight=(0,d.a1)(ft)),le&&(Ke.maxWidth=(0,d.a1)(le))}this._lastBoundingBoxSize=be,ge(this._boundingBox.style,Ke)}_resetBoundingBoxStyles(){ge(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){ge(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(ee,re){const be={},Ke=this._hasExactPosition(),ft=this._hasFlexibleDimensions,le=this._overlayRef.getConfig();if(Ke){const qe=this._viewportRuler.getViewportScrollPosition();ge(be,this._getExactOverlayY(re,ee,qe)),ge(be,this._getExactOverlayX(re,ee,qe))}else be.position="static";let Q="",Be=this._getOffset(re,"x"),Je=this._getOffset(re,"y");Be&&(Q+=`translateX(${Be}px) `),Je&&(Q+=`translateY(${Je}px)`),be.transform=Q.trim(),le.maxHeight&&(Ke?be.maxHeight=(0,d.a1)(le.maxHeight):ft&&(be.maxHeight="")),le.maxWidth&&(Ke?be.maxWidth=(0,d.a1)(le.maxWidth):ft&&(be.maxWidth="")),ge(this._pane.style,be)}_getExactOverlayY(ee,re,be){let Ke={top:"",bottom:""},ft=this._getOverlayPoint(re,this._overlayRect,ee);return this._isPushed&&(ft=this._pushOverlayOnScreen(ft,this._overlayRect,be)),"bottom"===ee.overlayY?Ke.bottom=this._document.documentElement.clientHeight-(ft.y+this._overlayRect.height)+"px":Ke.top=(0,d.a1)(ft.y),Ke}_getExactOverlayX(ee,re,be){let le,Ke={left:"",right:""},ft=this._getOverlayPoint(re,this._overlayRect,ee);return this._isPushed&&(ft=this._pushOverlayOnScreen(ft,this._overlayRect,be)),le=this._isRtl()?"end"===ee.overlayX?"left":"right":"end"===ee.overlayX?"right":"left","right"===le?Ke.right=this._document.documentElement.clientWidth-(ft.x+this._overlayRect.width)+"px":Ke.left=(0,d.a1)(ft.x),Ke}_getScrollVisibility(){const ee=this._getOriginRect(),re=this._pane.getBoundingClientRect(),be=this._scrollables.map(Ke=>Ke.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:Ce(ee,be),isOriginOutsideView:_e(ee,be),isOverlayClipped:Ce(re,be),isOverlayOutsideView:_e(re,be)}}_subtractOverflows(ee,...re){return re.reduce((be,Ke)=>be-Math.max(Ke,0),ee)}_getNarrowedViewportRect(){const ee=this._document.documentElement.clientWidth,re=this._document.documentElement.clientHeight,be=this._viewportRuler.getViewportScrollPosition();return{top:be.top+this._viewportMargin,left:be.left+this._viewportMargin,right:be.left+ee-this._viewportMargin,bottom:be.top+re-this._viewportMargin,width:ee-2*this._viewportMargin,height:re-2*this._viewportMargin}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(ee,re){return"x"===re?null==ee.offsetX?this._offsetX:ee.offsetX:null==ee.offsetY?this._offsetY:ee.offsetY}_validatePositions(){}_addPanelClasses(ee){this._pane&&(0,d.FG)(ee).forEach(re=>{""!==re&&-1===this._appliedPanelClasses.indexOf(re)&&(this._appliedPanelClasses.push(re),this._pane.classList.add(re))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(ee=>{this._pane.classList.remove(ee)}),this._appliedPanelClasses=[])}_getOriginRect(){const ee=this._origin;if(ee instanceof O.aKT)return ee.nativeElement.getBoundingClientRect();if(ee instanceof Element)return ee.getBoundingClientRect();const re=ee.width||0,be=ee.height||0;return{top:ee.y,bottom:ee.y+be,left:ee.x,right:ee.x+re,height:be,width:re}}}function ge(ce,ee){for(let re in ee)ee.hasOwnProperty(re)&&(ce[re]=ee[re]);return ce}function Me(ce){if("number"!=typeof ce&&null!=ce){const[ee,re]=ce.split(M);return re&&"px"!==re?null:parseFloat(ee)}return ce||null}function oe(ce){return{top:Math.floor(ce.top),right:Math.floor(ce.right),bottom:Math.floor(ce.bottom),left:Math.floor(ce.left),width:Math.floor(ce.width),height:Math.floor(ce.height)}}const tt="cdk-global-overlay-wrapper";class Y{_overlayRef;_cssPosition="static";_topOffset="";_bottomOffset="";_alignItems="";_xPosition="";_xOffset="";_width="";_height="";_isDisposed=!1;attach(ee){const re=ee.getConfig();this._overlayRef=ee,this._width&&!re.width&&ee.updateSize({width:this._width}),this._height&&!re.height&&ee.updateSize({height:this._height}),ee.hostElement.classList.add(tt),this._isDisposed=!1}top(ee=""){return this._bottomOffset="",this._topOffset=ee,this._alignItems="flex-start",this}left(ee=""){return this._xOffset=ee,this._xPosition="left",this}bottom(ee=""){return this._topOffset="",this._bottomOffset=ee,this._alignItems="flex-end",this}right(ee=""){return this._xOffset=ee,this._xPosition="right",this}start(ee=""){return this._xOffset=ee,this._xPosition="start",this}end(ee=""){return this._xOffset=ee,this._xPosition="end",this}width(ee=""){return this._overlayRef?this._overlayRef.updateSize({width:ee}):this._width=ee,this}height(ee=""){return this._overlayRef?this._overlayRef.updateSize({height:ee}):this._height=ee,this}centerHorizontally(ee=""){return this.left(ee),this._xPosition="center",this}centerVertically(ee=""){return this.top(ee),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const ee=this._overlayRef.overlayElement.style,re=this._overlayRef.hostElement.style,be=this._overlayRef.getConfig(),{width:Ke,height:ft,maxWidth:le,maxHeight:Q}=be,Be=!("100%"!==Ke&&"100vw"!==Ke||le&&"100%"!==le&&"100vw"!==le),Je=!("100%"!==ft&&"100vh"!==ft||Q&&"100%"!==Q&&"100vh"!==Q),qe=this._xPosition,ot=this._xOffset,It="rtl"===this._overlayRef.getConfig().direction;let Ft="",kt="",Qt="";Be?Qt="flex-start":"center"===qe?(Qt="center",It?kt=ot:Ft=ot):It?"left"===qe||"end"===qe?(Qt="flex-end",Ft=ot):("right"===qe||"start"===qe)&&(Qt="flex-start",kt=ot):"left"===qe||"start"===qe?(Qt="flex-start",Ft=ot):("right"===qe||"end"===qe)&&(Qt="flex-end",kt=ot),ee.position=this._cssPosition,ee.marginLeft=Be?"0":Ft,ee.marginTop=Je?"0":this._topOffset,ee.marginBottom=this._bottomOffset,ee.marginRight=Be?"0":kt,re.justifyContent=Qt,re.alignItems=Je?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const ee=this._overlayRef.overlayElement.style,re=this._overlayRef.hostElement,be=re.style;re.classList.remove(tt),be.justifyContent=be.alignItems=ee.marginTop=ee.marginBottom=ee.marginLeft=ee.marginRight=ee.position="",this._overlayRef=null,this._isDisposed=!0}}let Re=(()=>{class ce{_viewportRuler=(0,O.WQX)(o.Xj);_document=(0,O.WQX)(c.qQ);_platform=(0,O.WQX)(w.OD);_overlayContainer=(0,O.WQX)(N);constructor(){}global(){return new Y}flexibleConnectedTo(re){return new j(re,this._viewportRuler,this._document,this._platform,this._overlayContainer)}static \u0275fac=function(be){return new(be||ce)};static \u0275prov=O.jDH({token:ce,factory:ce.\u0275fac,providedIn:"root"})}return ce})(),De=(()=>{class ce{scrollStrategies=(0,O.WQX)(ke);_overlayContainer=(0,O.WQX)(N);_positionBuilder=(0,O.WQX)(Re);_keyboardDispatcher=(0,O.WQX)(q);_injector=(0,O.WQX)(O.zZn);_ngZone=(0,O.WQX)(O.SKi);_document=(0,O.WQX)(c.qQ);_directionality=(0,O.WQX)(y.dS);_location=(0,O.WQX)(c.aZ);_outsideClickDispatcher=(0,O.WQX)(J);_animationsModuleType=(0,O.WQX)(O.bc$,{optional:!0});_idGenerator=(0,O.WQX)(u.g7);_renderer=(0,O.WQX)(O._9s).createRenderer(null,null);_appRef;_styleLoader=(0,O.WQX)(P.l);constructor(){}create(re){this._styleLoader.load(K);const be=this._createHostElement(),Ke=this._createPaneElement(be),ft=this._createPortalOutlet(Ke),le=new Ue(re);return le.direction=le.direction||this._directionality.value,new V(ft,be,Ke,le,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,"NoopAnimations"===this._animationsModuleType,this._injector.get(O.uvJ),this._renderer)}position(){return this._positionBuilder}_createPaneElement(re){const be=this._document.createElement("div");return be.id=this._idGenerator.getId("cdk-overlay-"),be.classList.add("cdk-overlay-pane"),re.appendChild(be),be}_createHostElement(){const re=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(re),re}_createPortalOutlet(re){return this._appRef||(this._appRef=this._injector.get(O.o8S)),new h.aI(re,null,this._appRef,this._injector,this._document)}static \u0275fac=function(be){return new(be||ce)};static \u0275prov=O.jDH({token:ce,factory:ce.\u0275fac,providedIn:"root"})}return ce})();const nt=[{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"}],ht=new O.nKC("cdk-connected-overlay-scroll-strategy",{providedIn:"root",factory:()=>{const ce=(0,O.WQX)(De);return()=>ce.scrollStrategies.reposition()}});let jt=(()=>{class ce{elementRef=(0,O.WQX)(O.aKT);constructor(){}static \u0275fac=function(be){return new(be||ce)};static \u0275dir=O.FsC({type:ce,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"]})}return ce})(),Nt=(()=>{class ce{_overlay=(0,O.WQX)(De);_dir=(0,O.WQX)(y.dS,{optional:!0});_overlayRef;_templatePortal;_backdropSubscription=E.yU.EMPTY;_attachSubscription=E.yU.EMPTY;_detachSubscription=E.yU.EMPTY;_positionSubscription=E.yU.EMPTY;_offsetX;_offsetY;_position;_scrollStrategyFactory=(0,O.WQX)(ht);_disposeOnNavigation=!1;_ngZone=(0,O.WQX)(O.SKi);origin;positions;positionStrategy;get offsetX(){return this._offsetX}set offsetX(re){this._offsetX=re,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(re){this._offsetY=re,this._position&&this._updatePositionStrategy(this._position)}width;height;minWidth;minHeight;backdropClass;panelClass;viewportMargin=0;scrollStrategy;open=!1;disableClose=!1;transformOriginSelector;hasBackdrop=!1;lockPosition=!1;flexibleDimensions=!1;growAfterOpen=!1;push=!1;get disposeOnNavigation(){return this._disposeOnNavigation}set disposeOnNavigation(re){this._disposeOnNavigation=re}backdropClick=new O.bkB;positionChange=new O.bkB;attach=new O.bkB;detach=new O.bkB;overlayKeydown=new O.bkB;overlayOutsideClick=new O.bkB;constructor(){const re=(0,O.WQX)(O.C4Q),be=(0,O.WQX)(O.c1b);this._templatePortal=new h.VA(re,be),this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}ngOnChanges(re){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),re.origin&&this.open&&this._position.apply()),re.open&&(this.open?this._attachOverlay():this._detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=nt);const re=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=re.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=re.detachments().subscribe(()=>this.detach.emit()),re.keydownEvents().subscribe(be=>{this.overlayKeydown.next(be),be.keyCode===ne._f&&!this.disableClose&&!(0,ne.rp)(be)&&(be.preventDefault(),this._detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(be=>{const Ke=this._getOriginElement(),ft=(0,w.Fb)(be);(!Ke||Ke!==ft&&!Ke.contains(ft))&&this.overlayOutsideClick.next(be)})}_buildConfig(){const re=this._position=this.positionStrategy||this._createPositionStrategy(),be=new Ue({direction:this._dir||"ltr",positionStrategy:re,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop,disposeOnNavigation:this.disposeOnNavigation});return(this.width||0===this.width)&&(be.width=this.width),(this.height||0===this.height)&&(be.height=this.height),(this.minWidth||0===this.minWidth)&&(be.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(be.minHeight=this.minHeight),this.backdropClass&&(be.backdropClass=this.backdropClass),this.panelClass&&(be.panelClass=this.panelClass),be}_updatePositionStrategy(re){const be=this.positions.map(Ke=>({originX:Ke.originX,originY:Ke.originY,overlayX:Ke.overlayX,overlayY:Ke.overlayY,offsetX:Ke.offsetX||this.offsetX,offsetY:Ke.offsetY||this.offsetY,panelClass:Ke.panelClass||void 0}));return re.setOrigin(this._getOrigin()).withPositions(be).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){const re=this._overlay.position().flexibleConnectedTo(this._getOrigin());return this._updatePositionStrategy(re),re}_getOrigin(){return this.origin instanceof jt?this.origin.elementRef:this.origin}_getOriginElement(){return this.origin instanceof jt?this.origin.elementRef.nativeElement:this.origin instanceof O.aKT?this.origin.nativeElement:typeof Element<"u"&&this.origin instanceof Element?this.origin:null}_attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(re=>{this.backdropClick.emit(re)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(function g(ce,ee=!1){return(0,D.N)((re,be)=>{let Ke=0;re.subscribe((0,p._)(be,ft=>{const le=ce(ft,Ke++);(le||ee)&&be.next(ft),!le&&be.complete()}))})}(()=>this.positionChange.observers.length>0)).subscribe(re=>{this._ngZone.run(()=>this.positionChange.emit(re)),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()}))}_detachOverlay(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe()}static \u0275fac=function(be){return new(be||ce)};static \u0275dir=O.FsC({type:ce,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:[0,"cdkConnectedOverlayOrigin","origin"],positions:[0,"cdkConnectedOverlayPositions","positions"],positionStrategy:[0,"cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:[0,"cdkConnectedOverlayOffsetX","offsetX"],offsetY:[0,"cdkConnectedOverlayOffsetY","offsetY"],width:[0,"cdkConnectedOverlayWidth","width"],height:[0,"cdkConnectedOverlayHeight","height"],minWidth:[0,"cdkConnectedOverlayMinWidth","minWidth"],minHeight:[0,"cdkConnectedOverlayMinHeight","minHeight"],backdropClass:[0,"cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:[0,"cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:[0,"cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:[0,"cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:[0,"cdkConnectedOverlayOpen","open"],disableClose:[0,"cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:[0,"cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:[2,"cdkConnectedOverlayHasBackdrop","hasBackdrop",O.L39],lockPosition:[2,"cdkConnectedOverlayLockPosition","lockPosition",O.L39],flexibleDimensions:[2,"cdkConnectedOverlayFlexibleDimensions","flexibleDimensions",O.L39],growAfterOpen:[2,"cdkConnectedOverlayGrowAfterOpen","growAfterOpen",O.L39],push:[2,"cdkConnectedOverlayPush","push",O.L39],disposeOnNavigation:[2,"cdkConnectedOverlayDisposeOnNavigation","disposeOnNavigation",O.L39]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],features:[O.GFd,O.OA$]})}return ce})();const ln={provide:ht,deps:[De],useFactory:function on(ce){return()=>ce.scrollStrategies.reposition()}};let Ot=(()=>{class ce{static \u0275fac=function(be){return new(be||ce)};static \u0275mod=O.$C({type:ce});static \u0275inj=O.G2t({providers:[De,ln],imports:[y.jI,h.jc,o.E9,o.E9]})}return ce})()},6860:(ut,Ie,a)=>{"use strict";a.d(Ie,{BD:()=>E,BQ:()=>y,CZ:()=>T,Fb:()=>Z,KT:()=>de,MU:()=>D,OD:()=>d,r5:()=>h,v8:()=>ae,vc:()=>ie});var o=a(4438),c=a(177);let O;try{O=typeof Intl<"u"&&Intl.v8BreakIterator}catch{O=!1}let C,d=(()=>{class _e{_platformId=(0,o.WQX)(o.Agw);isBrowser=this._platformId?(0,c.UE)(this._platformId):"object"==typeof document&&!!document;EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent);TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent);BLINK=this.isBrowser&&!(!window.chrome&&!O)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT;WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT;IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window);FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent);ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT;SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT;constructor(){}static \u0275fac=function(ke){return new(ke||_e)};static \u0275prov=o.jDH({token:_e,factory:_e.\u0275fac,providedIn:"root"})}return _e})();const x=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function D(){if(C)return C;if("object"!=typeof document||!document)return C=new Set(x),C;let _e=document.createElement("input");return C=new Set(x.filter(Ce=>(_e.setAttribute("type",Ce),_e.type===Ce))),C}let p;function y(_e){return function g(){if(null==p&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>p=!0}))}finally{p=p||!1}return p}()?_e:!!_e.capture}var h=function(_e){return _e[_e.NORMAL=0]="NORMAL",_e[_e.NEGATED=1]="NEGATED",_e[_e.INVERTED=2]="INVERTED",_e}(h||{});let u,P,W;function T(){if(null==P){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return P=!1,P;if("scrollBehavior"in document.documentElement.style)P=!0;else{const _e=Element.prototype.scrollTo;P=!!_e&&!/\{\s*\[native code\]\s*\}/.test(_e.toString())}}return P}function E(){if("object"!=typeof document||!document)return h.NORMAL;if(null==u){const _e=document.createElement("div"),Ce=_e.style;_e.dir="rtl",Ce.width="1px",Ce.overflow="auto",Ce.visibility="hidden",Ce.pointerEvents="none",Ce.position="absolute";const Ae=document.createElement("div"),ke=Ae.style;ke.width="2px",ke.height="1px",_e.appendChild(Ae),document.body.appendChild(_e),u=h.NORMAL,0===_e.scrollLeft&&(_e.scrollLeft=1,u=0===_e.scrollLeft?h.NEGATED:h.INVERTED),_e.remove()}return u}function de(_e){if(function ne(){if(null==W){const _e=typeof document<"u"?document.head:null;W=!(!_e||!_e.createShadowRoot&&!_e.attachShadow)}return W}()){const Ce=_e.getRootNode?_e.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&Ce instanceof ShadowRoot)return Ce}return null}function ie(){let _e=typeof document<"u"&&document?document.activeElement:null;for(;_e&&_e.shadowRoot;){const Ce=_e.shadowRoot.activeElement;if(Ce===_e)break;_e=Ce}return _e}function Z(_e){return _e.composedPath?_e.composedPath()[0]:_e.target}function ae(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}},6939:(ut,Ie,a)=>{"use strict";a.d(Ie,{A8:()=>g,I3:()=>de,VA:()=>y,aI:()=>T,jc:()=>Z,lb:()=>u});var o=a(4438),c=a(177);class p{_attachedHost;attach(_e){return this._attachedHost=_e,_e.attach(this)}detach(){let _e=this._attachedHost;null!=_e&&(this._attachedHost=null,_e.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost(_e){this._attachedHost=_e}}class g extends p{component;viewContainerRef;injector;componentFactoryResolver;projectableNodes;constructor(_e,Ce,Ae,ke,Ue){super(),this.component=_e,this.viewContainerRef=Ce,this.injector=Ae,this.projectableNodes=Ue}}class y extends p{templateRef;viewContainerRef;context;injector;constructor(_e,Ce,Ae,ke){super(),this.templateRef=_e,this.viewContainerRef=Ce,this.context=Ae,this.injector=ke}get origin(){return this.templateRef.elementRef}attach(_e,Ce=this.context){return this.context=Ce,super.attach(_e)}detach(){return this.context=void 0,super.detach()}}class h extends p{element;constructor(_e){super(),this.element=_e instanceof o.aKT?_e.nativeElement:_e}}class u{_attachedPortal;_disposeFn;_isDisposed=!1;hasAttached(){return!!this._attachedPortal}attach(_e){return _e instanceof g?(this._attachedPortal=_e,this.attachComponentPortal(_e)):_e instanceof y?(this._attachedPortal=_e,this.attachTemplatePortal(_e)):this.attachDomPortal&&_e instanceof h?(this._attachedPortal=_e,this.attachDomPortal(_e)):void 0}attachDomPortal=null;detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(_e){this._disposeFn=_e}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class T extends u{outletElement;_appRef;_defaultInjector;_document;constructor(_e,Ce,Ae,ke,Ue){super(),this.outletElement=_e,this._appRef=Ae,this._defaultInjector=ke,this._document=Ue}attachComponentPortal(_e){let Ce;if(_e.viewContainerRef){const Ae=_e.injector||_e.viewContainerRef.injector,ke=Ae.get(o.Vns,null,{optional:!0})||void 0;Ce=_e.viewContainerRef.createComponent(_e.component,{index:_e.viewContainerRef.length,injector:Ae,ngModuleRef:ke,projectableNodes:_e.projectableNodes||void 0}),this.setDisposeFn(()=>Ce.destroy())}else Ce=(0,o.a0P)(_e.component,{elementInjector:_e.injector||this._defaultInjector||o.zZn.NULL,environmentInjector:this._appRef.injector,projectableNodes:_e.projectableNodes||void 0}),this._appRef.attachView(Ce.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(Ce.hostView),Ce.destroy()});return this.outletElement.appendChild(this._getComponentRootNode(Ce)),this._attachedPortal=_e,Ce}attachTemplatePortal(_e){let Ce=_e.viewContainerRef,Ae=Ce.createEmbeddedView(_e.templateRef,_e.context,{injector:_e.injector});return Ae.rootNodes.forEach(ke=>this.outletElement.appendChild(ke)),Ae.detectChanges(),this.setDisposeFn(()=>{let ke=Ce.indexOf(Ae);-1!==ke&&Ce.remove(ke)}),this._attachedPortal=_e,Ae}attachDomPortal=_e=>{const Ce=_e.element,Ae=this._document.createComment("dom-portal");Ce.parentNode.insertBefore(Ae,Ce),this.outletElement.appendChild(Ce),this._attachedPortal=_e,super.setDisposeFn(()=>{Ae.parentNode&&Ae.parentNode.replaceChild(Ce,Ae)})};dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(_e){return _e.hostView.rootNodes[0]}}let de=(()=>{class Le extends u{_moduleRef=(0,o.WQX)(o.Vns,{optional:!0});_document=(0,o.WQX)(c.qQ);_viewContainerRef=(0,o.WQX)(o.c1b);_isInitialized=!1;_attachedRef;constructor(){super()}get portal(){return this._attachedPortal}set portal(Ce){this.hasAttached()&&!Ce&&!this._isInitialized||(this.hasAttached()&&super.detach(),Ce&&super.attach(Ce),this._attachedPortal=Ce||null)}attached=new o.bkB;get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(Ce){Ce.setAttachedHost(this);const Ae=null!=Ce.viewContainerRef?Ce.viewContainerRef:this._viewContainerRef,ke=Ae.createComponent(Ce.component,{index:Ae.length,injector:Ce.injector||Ae.injector,projectableNodes:Ce.projectableNodes||void 0,ngModuleRef:this._moduleRef||void 0});return Ae!==this._viewContainerRef&&this._getRootNode().appendChild(ke.hostView.rootNodes[0]),super.setDisposeFn(()=>ke.destroy()),this._attachedPortal=Ce,this._attachedRef=ke,this.attached.emit(ke),ke}attachTemplatePortal(Ce){Ce.setAttachedHost(this);const Ae=this._viewContainerRef.createEmbeddedView(Ce.templateRef,Ce.context,{injector:Ce.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=Ce,this._attachedRef=Ae,this.attached.emit(Ae),Ae}attachDomPortal=Ce=>{const Ae=Ce.element,ke=this._document.createComment("dom-portal");Ce.setAttachedHost(this),Ae.parentNode.insertBefore(ke,Ae),this._getRootNode().appendChild(Ae),this._attachedPortal=Ce,super.setDisposeFn(()=>{ke.parentNode&&ke.parentNode.replaceChild(Ae,ke)})};_getRootNode(){const Ce=this._viewContainerRef.element.nativeElement;return Ce.nodeType===Ce.ELEMENT_NODE?Ce:Ce.parentNode}static \u0275fac=function(Ae){return new(Ae||Le)};static \u0275dir=o.FsC({type:Le,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:[0,"cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],features:[o.Vt3]})}return Le})(),Z=(()=>{class Le{static \u0275fac=function(Ae){return new(Ae||Le)};static \u0275mod=o.$C({type:Le});static \u0275inj=o.G2t({})}return Le})()},9046:(ut,Ie,a)=>{"use strict";a.d(Ie,{Y:()=>d,l:()=>O});var o=a(4438);const c=new WeakMap;let O=(()=>{class w{_appRef;_injector=(0,o.WQX)(o.zZn);_environmentInjector=(0,o.WQX)(o.uvJ);load(x){const D=this._appRef=this._appRef||this._injector.get(o.o8S);let p=c.get(D);p||(p={loaders:new Set,refs:[]},c.set(D,p),D.onDestroy(()=>{c.get(D)?.refs.forEach(g=>g.destroy()),c.delete(D)})),p.loaders.has(x)||(p.loaders.add(x),p.refs.push((0,o.a0P)(x,{environmentInjector:this._environmentInjector})))}static \u0275fac=function(D){return new(D||w)};static \u0275prov=o.jDH({token:w,factory:w.\u0275fac,providedIn:"root"})}return w})(),d=(()=>{class w{static \u0275fac=function(D){return new(D||w)};static \u0275cmp=o.VBU({type:w,selectors:[["ng-component"]],exportAs:["cdkVisuallyHidden"],decls:0,vars:0,template:function(D,p){},styles:[".cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}"],encapsulation:2,changeDetection:0})}return w})()},3980:(ut,Ie,a)=>{"use strict";a.d(Ie,{uv:()=>oe,Gj:()=>on,R:()=>Me,E9:()=>ln,Xj:()=>se});var o=a(4085),c=a(4438),O=a(1413),d=a(7673),w=a(1985),C=a(6780),x=a(8359);const D={schedule(Ot){let rt=requestAnimationFrame,ce=cancelAnimationFrame;const{delegate:ee}=D;ee&&(rt=ee.requestAnimationFrame,ce=ee.cancelAnimationFrame);const re=rt(be=>{ce=void 0,Ot(be)});return new x.yU(()=>ce?.(re))},requestAnimationFrame(...Ot){const{delegate:rt}=D;return(rt?.requestAnimationFrame||requestAnimationFrame)(...Ot)},cancelAnimationFrame(...Ot){const{delegate:rt}=D;return(rt?.cancelAnimationFrame||cancelAnimationFrame)(...Ot)},delegate:void 0};var g=a(9687);new class y extends g.q{flush(rt){this._active=!0;const ce=this._scheduled;this._scheduled=void 0;const{actions:ee}=this;let re;rt=rt||ee.shift();do{if(re=rt.execute(rt.state,rt.delay))break}while((rt=ee[0])&&rt.id===ce&&ee.shift());if(this._active=!1,re){for(;(rt=ee[0])&&rt.id===ce&&ee.shift();)rt.unsubscribe();throw re}}}(class p extends C.R{constructor(rt,ce){super(rt,ce),this.scheduler=rt,this.work=ce}requestAsyncId(rt,ce,ee=0){return null!==ee&&ee>0?super.requestAsyncId(rt,ce,ee):(rt.actions.push(this),rt._scheduled||(rt._scheduled=D.requestAnimationFrame(()=>rt.flush(void 0))))}recycleAsyncId(rt,ce,ee=0){var re;if(null!=ee?ee>0:this.delay>0)return super.recycleAsyncId(rt,ce,ee);const{actions:be}=rt;null!=ce&&(null===(re=be[be.length-1])||void 0===re?void 0:re.id)!==ce&&(D.cancelAnimationFrame(ce),rt._scheduled=void 0)}});let T,P=1;const E={};function W(Ot){return Ot in E&&(delete E[Ot],!0)}const ne={setImmediate(Ot){const rt=P++;return E[rt]=!0,T||(T=Promise.resolve()),T.then(()=>W(rt)&&Ot()),rt},clearImmediate(Ot){W(Ot)}},{setImmediate:ie,clearImmediate:Z}=ne,ae={setImmediate(...Ot){const{delegate:rt}=ae;return(rt?.setImmediate||ie)(...Ot)},clearImmediate(Ot){const{delegate:rt}=ae;return(rt?.clearImmediate||Z)(Ot)},delegate:void 0};new class _e extends g.q{flush(rt){this._active=!0;const ce=this._scheduled;this._scheduled=void 0;const{actions:ee}=this;let re;rt=rt||ee.shift();do{if(re=rt.execute(rt.state,rt.delay))break}while((rt=ee[0])&&rt.id===ce&&ee.shift());if(this._active=!1,re){for(;(rt=ee[0])&&rt.id===ce&&ee.shift();)rt.unsubscribe();throw re}}}(class Le extends C.R{constructor(rt,ce){super(rt,ce),this.scheduler=rt,this.work=ce}requestAsyncId(rt,ce,ee=0){return null!==ee&&ee>0?super.requestAsyncId(rt,ce,ee):(rt.actions.push(this),rt._scheduled||(rt._scheduled=ae.setImmediate(rt.flush.bind(rt,void 0))))}recycleAsyncId(rt,ce,ee=0){var re;if(null!=ee?ee>0:this.delay>0)return super.recycleAsyncId(rt,ce,ee);const{actions:be}=rt;null!=ce&&(null===(re=be[be.length-1])||void 0===re?void 0:re.id)!==ce&&(ae.clearImmediate(ce),rt._scheduled===ce&&(rt._scheduled=void 0))}});var ke=a(3236),Ue=a(9974),ve=a(8750),ye=a(4360),z=a(1584);function te(Ot,rt=ke.E){return function Se(Ot){return(0,Ue.N)((rt,ce)=>{let ee=!1,re=null,be=null,Ke=!1;const ft=()=>{if(be?.unsubscribe(),be=null,ee){ee=!1;const Q=re;re=null,ce.next(Q)}Ke&&ce.complete()},le=()=>{be=null,Ke&&ce.complete()};rt.subscribe((0,ye._)(ce,Q=>{ee=!0,re=Q,be||(0,ve.Tg)(Ot(Q)).subscribe(be=(0,ye._)(ce,ft,le))},()=>{Ke=!0,(!ee||!be||be.closed)&&ce.complete()}))})}(()=>(0,z.O)(Ot,rt))}var L=a(5964),q=a(6860),J=a(8203),X=a(177);let Me=(()=>{class Ot{_ngZone=(0,c.WQX)(c.SKi);_platform=(0,c.WQX)(q.OD);_renderer=(0,c.WQX)(c._9s).createRenderer(null,null);_cleanupGlobalListener;constructor(){}_scrolled=new O.B;_scrolledCount=0;scrollContainers=new Map;register(ce){this.scrollContainers.has(ce)||this.scrollContainers.set(ce,ce.elementScrolled().subscribe(()=>this._scrolled.next(ce)))}deregister(ce){const ee=this.scrollContainers.get(ce);ee&&(ee.unsubscribe(),this.scrollContainers.delete(ce))}scrolled(ce=20){return this._platform.isBrowser?new w.c(ee=>{this._cleanupGlobalListener||(this._cleanupGlobalListener=this._ngZone.runOutsideAngular(()=>this._renderer.listen("document","scroll",()=>this._scrolled.next())));const re=ce>0?this._scrolled.pipe(te(ce)).subscribe(ee):this._scrolled.subscribe(ee);return this._scrolledCount++,()=>{re.unsubscribe(),this._scrolledCount--,this._scrolledCount||(this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0)}}):(0,d.of)()}ngOnDestroy(){this._cleanupGlobalListener?.(),this._cleanupGlobalListener=void 0,this.scrollContainers.forEach((ce,ee)=>this.deregister(ee)),this._scrolled.complete()}ancestorScrolled(ce,ee){const re=this.getAncestorScrollContainers(ce);return this.scrolled(ee).pipe((0,L.p)(be=>!be||re.indexOf(be)>-1))}getAncestorScrollContainers(ce){const ee=[];return this.scrollContainers.forEach((re,be)=>{this._scrollableContainsElement(be,ce)&&ee.push(be)}),ee}_scrollableContainsElement(ce,ee){let re=(0,o.i8)(ee),be=ce.getElementRef().nativeElement;do{if(re==be)return!0}while(re=re.parentElement);return!1}static \u0275fac=function(ee){return new(ee||Ot)};static \u0275prov=c.jDH({token:Ot,factory:Ot.\u0275fac,providedIn:"root"})}return Ot})(),oe=(()=>{class Ot{elementRef=(0,c.WQX)(c.aKT);scrollDispatcher=(0,c.WQX)(Me);ngZone=(0,c.WQX)(c.SKi);dir=(0,c.WQX)(J.dS,{optional:!0});_scrollElement=this.elementRef.nativeElement;_destroyed=new O.B;_renderer=(0,c.WQX)(c.sFG);_cleanupScroll;_elementScrolled=new O.B;constructor(){}ngOnInit(){this._cleanupScroll=this.ngZone.runOutsideAngular(()=>this._renderer.listen(this._scrollElement,"scroll",ce=>this._elementScrolled.next(ce))),this.scrollDispatcher.register(this)}ngOnDestroy(){this._cleanupScroll?.(),this._elementScrolled.complete(),this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(ce){const ee=this.elementRef.nativeElement,re=this.dir&&"rtl"==this.dir.value;null==ce.left&&(ce.left=re?ce.end:ce.start),null==ce.right&&(ce.right=re?ce.start:ce.end),null!=ce.bottom&&(ce.top=ee.scrollHeight-ee.clientHeight-ce.bottom),re&&(0,q.BD)()!=q.r5.NORMAL?(null!=ce.left&&(ce.right=ee.scrollWidth-ee.clientWidth-ce.left),(0,q.BD)()==q.r5.INVERTED?ce.left=ce.right:(0,q.BD)()==q.r5.NEGATED&&(ce.left=ce.right?-ce.right:ce.right)):null!=ce.right&&(ce.left=ee.scrollWidth-ee.clientWidth-ce.right),this._applyScrollToOptions(ce)}_applyScrollToOptions(ce){const ee=this.elementRef.nativeElement;(0,q.CZ)()?ee.scrollTo(ce):(null!=ce.top&&(ee.scrollTop=ce.top),null!=ce.left&&(ee.scrollLeft=ce.left))}measureScrollOffset(ce){const ee="left",be=this.elementRef.nativeElement;if("top"==ce)return be.scrollTop;if("bottom"==ce)return be.scrollHeight-be.clientHeight-be.scrollTop;const Ke=this.dir&&"rtl"==this.dir.value;return"start"==ce?ce=Ke?"right":ee:"end"==ce&&(ce=Ke?ee:"right"),Ke&&(0,q.BD)()==q.r5.INVERTED?ce==ee?be.scrollWidth-be.clientWidth-be.scrollLeft:be.scrollLeft:Ke&&(0,q.BD)()==q.r5.NEGATED?ce==ee?be.scrollLeft+be.scrollWidth-be.clientWidth:-be.scrollLeft:ce==ee?be.scrollLeft:be.scrollWidth-be.clientWidth-be.scrollLeft}static \u0275fac=function(ee){return new(ee||Ot)};static \u0275dir=c.FsC({type:Ot,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]]})}return Ot})(),se=(()=>{class Ot{_platform=(0,c.WQX)(q.OD);_listeners;_viewportSize;_change=new O.B;_document=(0,c.WQX)(X.qQ,{optional:!0});constructor(){const ce=(0,c.WQX)(c.SKi),ee=(0,c.WQX)(c._9s).createRenderer(null,null);ce.runOutsideAngular(()=>{if(this._platform.isBrowser){const re=be=>this._change.next(be);this._listeners=[ee.listen("window","resize",re),ee.listen("window","orientationchange",re)]}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){this._listeners?.forEach(ce=>ce()),this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const ce={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),ce}getViewportRect(){const ce=this.getViewportScrollPosition(),{width:ee,height:re}=this.getViewportSize();return{top:ce.top,left:ce.left,bottom:ce.top+re,right:ce.left+ee,height:re,width:ee}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const ce=this._document,ee=this._getWindow(),re=ce.documentElement,be=re.getBoundingClientRect();return{top:-be.top||ce.body.scrollTop||ee.scrollY||re.scrollTop||0,left:-be.left||ce.body.scrollLeft||ee.scrollX||re.scrollLeft||0}}change(ce=20){return ce>0?this._change.pipe(te(ce)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const ce=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:ce.innerWidth,height:ce.innerHeight}:{width:0,height:0}}static \u0275fac=function(ee){return new(ee||Ot)};static \u0275prov=c.jDH({token:Ot,factory:Ot.\u0275fac,providedIn:"root"})}return Ot})(),on=(()=>{class Ot{static \u0275fac=function(ee){return new(ee||Ot)};static \u0275mod=c.$C({type:Ot});static \u0275inj=c.G2t({})}return Ot})(),ln=(()=>{class Ot{static \u0275fac=function(ee){return new(ee||Ot)};static \u0275mod=c.$C({type:Ot});static \u0275inj=c.G2t({imports:[J.jI,on,J.jI,on]})}return Ot})()},177:(ut,Ie,a)=>{"use strict";a.d(Ie,{AJ:()=>Nr,B3:()=>Wt,Jj:()=>hi,MD:()=>ro,N0:()=>mr,P9:()=>wi,QT:()=>d,QX:()=>tr,Sm:()=>W,Sq:()=>tn,T3:()=>Ht,UE:()=>Wi,VF:()=>C,Vy:()=>Er,Xr:()=>kr,YU:()=>Jt,ZD:()=>w,_b:()=>Tt,aZ:()=>de,bT:()=>_n,fw:()=>ne,hb:()=>T,hj:()=>g,kB:()=>E,m1:()=>Pr,qQ:()=>D,vh:()=>hr});var o=a(4438),c=a(1413);let O=null;function d(){return O}function w(S){O??=S}class C{}const D=new o.nKC("");let p=(()=>{class S{historyGo($){throw new Error("")}static \u0275fac=function(ue){return new(ue||S)};static \u0275prov=o.jDH({token:S,factory:()=>(0,o.WQX)(y),providedIn:"platform"})}return S})();const g=new o.nKC("");let y=(()=>{class S extends p{_location;_history;_doc=(0,o.WQX)(D);constructor(){super(),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return d().getBaseHref(this._doc)}onPopState($){const ue=d().getGlobalEventTarget(this._doc,"window");return ue.addEventListener("popstate",$,!1),()=>ue.removeEventListener("popstate",$)}onHashChange($){const ue=d().getGlobalEventTarget(this._doc,"window");return ue.addEventListener("hashchange",$,!1),()=>ue.removeEventListener("hashchange",$)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname($){this._location.pathname=$}pushState($,ue,Xe){this._history.pushState($,ue,Xe)}replaceState($,ue,Xe){this._history.replaceState($,ue,Xe)}forward(){this._history.forward()}back(){this._history.back()}historyGo($=0){this._history.go($)}getState(){return this._history.state}static \u0275fac=function(ue){return new(ue||S)};static \u0275prov=o.jDH({token:S,factory:()=>new S,providedIn:"platform"})}return S})();function h(S,we){return S?we?S.endsWith("/")?we.startsWith("/")?S+we.slice(1):S+we:we.startsWith("/")?S+we:`${S}/${we}`:S:we}function u(S){const we=S.match(/#|\?|$/),$=we&&we.index||S.length;return S.slice(0,$-("/"===S[$-1]?1:0))+S.slice($)}function P(S){return S&&"?"!==S[0]?"?"+S:S}let T=(()=>{class S{historyGo($){throw new Error("")}static \u0275fac=function(ue){return new(ue||S)};static \u0275prov=o.jDH({token:S,factory:()=>(0,o.WQX)(W),providedIn:"root"})}return S})();const E=new o.nKC("");let W=(()=>{class S extends T{_platformLocation;_baseHref;_removeListenerFns=[];constructor($,ue){super(),this._platformLocation=$,this._baseHref=ue??this._platformLocation.getBaseHrefFromDOM()??(0,o.WQX)(D).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState($){this._removeListenerFns.push(this._platformLocation.onPopState($),this._platformLocation.onHashChange($))}getBaseHref(){return this._baseHref}prepareExternalUrl($){return h(this._baseHref,$)}path($=!1){const ue=this._platformLocation.pathname+P(this._platformLocation.search),Xe=this._platformLocation.hash;return Xe&&$?`${ue}${Xe}`:ue}pushState($,ue,Xe,Dt){const Rt=this.prepareExternalUrl(Xe+P(Dt));this._platformLocation.pushState($,ue,Rt)}replaceState($,ue,Xe,Dt){const Rt=this.prepareExternalUrl(Xe+P(Dt));this._platformLocation.replaceState($,ue,Rt)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo($=0){this._platformLocation.historyGo?.($)}static \u0275fac=function(ue){return new(ue||S)(o.KVO(p),o.KVO(E,8))};static \u0275prov=o.jDH({token:S,factory:S.\u0275fac,providedIn:"root"})}return S})(),ne=(()=>{class S extends T{_platformLocation;_baseHref="";_removeListenerFns=[];constructor($,ue){super(),this._platformLocation=$,null!=ue&&(this._baseHref=ue)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState($){this._removeListenerFns.push(this._platformLocation.onPopState($),this._platformLocation.onHashChange($))}getBaseHref(){return this._baseHref}path($=!1){const ue=this._platformLocation.hash??"#";return ue.length>0?ue.substring(1):ue}prepareExternalUrl($){const ue=h(this._baseHref,$);return ue.length>0?"#"+ue:ue}pushState($,ue,Xe,Dt){let Rt=this.prepareExternalUrl(Xe+P(Dt));0==Rt.length&&(Rt=this._platformLocation.pathname),this._platformLocation.pushState($,ue,Rt)}replaceState($,ue,Xe,Dt){let Rt=this.prepareExternalUrl(Xe+P(Dt));0==Rt.length&&(Rt=this._platformLocation.pathname),this._platformLocation.replaceState($,ue,Rt)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo($=0){this._platformLocation.historyGo?.($)}static \u0275fac=function(ue){return new(ue||S)(o.KVO(p),o.KVO(E,8))};static \u0275prov=o.jDH({token:S,factory:S.\u0275fac})}return S})(),de=(()=>{class S{_subject=new c.B;_basePath;_locationStrategy;_urlChangeListeners=[];_urlChangeSubscription=null;constructor($){this._locationStrategy=$;const ue=this._locationStrategy.getBaseHref();this._basePath=function Le(S){if(new RegExp("^(https?:)?//").test(S)){const[,$]=S.split(/\/\/[^\/]+/);return $}return S}(u(ae(ue))),this._locationStrategy.onPopState(Xe=>{this._subject.next({url:this.path(!0),pop:!0,state:Xe.state,type:Xe.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path($=!1){return this.normalize(this._locationStrategy.path($))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo($,ue=""){return this.path()==this.normalize($+P(ue))}normalize($){return S.stripTrailingSlash(function Z(S,we){if(!S||!we.startsWith(S))return we;const $=we.substring(S.length);return""===$||["/",";","?","#"].includes($[0])?$:we}(this._basePath,ae($)))}prepareExternalUrl($){return $&&"/"!==$[0]&&($="/"+$),this._locationStrategy.prepareExternalUrl($)}go($,ue="",Xe=null){this._locationStrategy.pushState(Xe,"",$,ue),this._notifyUrlChangeListeners(this.prepareExternalUrl($+P(ue)),Xe)}replaceState($,ue="",Xe=null){this._locationStrategy.replaceState(Xe,"",$,ue),this._notifyUrlChangeListeners(this.prepareExternalUrl($+P(ue)),Xe)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo($=0){this._locationStrategy.historyGo?.($)}onUrlChange($){return this._urlChangeListeners.push($),this._urlChangeSubscription??=this.subscribe(ue=>{this._notifyUrlChangeListeners(ue.url,ue.state)}),()=>{const ue=this._urlChangeListeners.indexOf($);this._urlChangeListeners.splice(ue,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners($="",ue){this._urlChangeListeners.forEach(Xe=>Xe($,ue))}subscribe($,ue,Xe){return this._subject.subscribe({next:$,error:ue??void 0,complete:Xe??void 0})}static normalizeQueryParams=P;static joinWithSlash=h;static stripTrailingSlash=u;static \u0275fac=function(ue){return new(ue||S)(o.KVO(T))};static \u0275prov=o.jDH({token:S,factory:()=>function ie(){return new de((0,o.KVO)(T))}(),providedIn:"root"})}return S})();function ae(S){return S.replace(/\/index.html$/,"")}var Ce=function(S){return S[S.Decimal=0]="Decimal",S[S.Percent=1]="Percent",S[S.Currency=2]="Currency",S[S.Scientific=3]="Scientific",S}(Ce||{}),ke=function(S){return S[S.Format=0]="Format",S[S.Standalone=1]="Standalone",S}(ke||{}),Ue=function(S){return S[S.Narrow=0]="Narrow",S[S.Abbreviated=1]="Abbreviated",S[S.Wide=2]="Wide",S[S.Short=3]="Short",S}(Ue||{}),ve=function(S){return S[S.Short=0]="Short",S[S.Medium=1]="Medium",S[S.Long=2]="Long",S[S.Full=3]="Full",S}(ve||{});function N(S,we){return De((0,o.H5H)(S)[o.KH2.DateFormat],we)}function V(S,we){return De((0,o.H5H)(S)[o.KH2.TimeFormat],we)}function I(S,we){return De((0,o.H5H)(S)[o.KH2.DateTimeFormat],we)}function M(S,we){const $=(0,o.H5H)(S),ue=$[o.KH2.NumberSymbols][we];if(typeof ue>"u"){if(12===we)return $[o.KH2.NumberSymbols][0];if(13===we)return $[o.KH2.NumberSymbols][1]}return ue}function j(S,we){return(0,o.H5H)(S)[o.KH2.NumberFormats][we]}function Ee(S){if(!S[o.KH2.ExtraData])throw new Error(`Missing extra locale data for the locale "${S[o.KH2.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function De(S,we){for(let $=we;$>-1;$--)if(typeof S[$]<"u")return S[$];throw new Error("Locale data API: locale data undefined")}function nt(S){const[we,$]=S.split(":");return{hours:+we,minutes:+$}}const on=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,ln={},Ot=/((?:[^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]*)/;function rt(S,we,$,ue){let Xe=function He(S){if(Lt(S))return S;if("number"==typeof S&&!isNaN(S))return new Date(S);if("string"==typeof S){if(S=S.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(S)){const[Xe,Dt=1,Rt=1]=S.split("-").map(cn=>+cn);return ce(Xe,Dt-1,Rt)}const $=parseFloat(S);if(!isNaN(S-$))return new Date($);let ue;if(ue=S.match(on))return function at(S){const we=new Date(0);let $=0,ue=0;const Xe=S[8]?we.setUTCFullYear:we.setFullYear,Dt=S[8]?we.setUTCHours:we.setHours;S[9]&&($=Number(S[9]+S[10]),ue=Number(S[9]+S[11])),Xe.call(we,Number(S[1]),Number(S[2])-1,Number(S[3]));const Rt=Number(S[4]||0)-$,cn=Number(S[5]||0)-ue,$n=Number(S[6]||0),Gn=Math.floor(1e3*parseFloat("0."+(S[7]||0)));return Dt.call(we,Rt,cn,$n,Gn),we}(ue)}const we=new Date(S);if(!Lt(we))throw new Error(`Unable to convert "${S}" into a date`);return we}(S);we=ee($,we)||we;let cn,Rt=[];for(;we;){if(cn=Ot.exec(we),!cn){Rt.push(we);break}{Rt=Rt.concat(cn.slice(1));const Yn=Rt.pop();if(!Yn)break;we=Yn}}let $n=Xe.getTimezoneOffset();ue&&($n=$e(ue,$n),Xe=function Te(S,we,$){const ue=$?-1:1,Xe=S.getTimezoneOffset();return function lt(S,we){return(S=new Date(S.getTime())).setMinutes(S.getMinutes()+we),S}(S,ue*($e(we,Xe)-Xe))}(Xe,ue,!0));let Gn="";return Rt.forEach(Yn=>{const Pn=function nn(S){if(rn[S])return rn[S];let we;switch(S){case"G":case"GG":case"GGG":we=Q(3,Ue.Abbreviated);break;case"GGGG":we=Q(3,Ue.Wide);break;case"GGGGG":we=Q(3,Ue.Narrow);break;case"y":we=ft(0,1,0,!1,!0);break;case"yy":we=ft(0,2,0,!0,!0);break;case"yyy":we=ft(0,3,0,!1,!0);break;case"yyyy":we=ft(0,4,0,!1,!0);break;case"Y":we=Qt(1);break;case"YY":we=Qt(2,!0);break;case"YYY":we=Qt(3);break;case"YYYY":we=Qt(4);break;case"M":case"L":we=ft(1,1,1);break;case"MM":case"LL":we=ft(1,2,1);break;case"MMM":we=Q(2,Ue.Abbreviated);break;case"MMMM":we=Q(2,Ue.Wide);break;case"MMMMM":we=Q(2,Ue.Narrow);break;case"LLL":we=Q(2,Ue.Abbreviated,ke.Standalone);break;case"LLLL":we=Q(2,Ue.Wide,ke.Standalone);break;case"LLLLL":we=Q(2,Ue.Narrow,ke.Standalone);break;case"w":we=kt(1);break;case"ww":we=kt(2);break;case"W":we=kt(1,!0);break;case"d":we=ft(2,1);break;case"dd":we=ft(2,2);break;case"c":case"cc":we=ft(7,1);break;case"ccc":we=Q(1,Ue.Abbreviated,ke.Standalone);break;case"cccc":we=Q(1,Ue.Wide,ke.Standalone);break;case"ccccc":we=Q(1,Ue.Narrow,ke.Standalone);break;case"cccccc":we=Q(1,Ue.Short,ke.Standalone);break;case"E":case"EE":case"EEE":we=Q(1,Ue.Abbreviated);break;case"EEEE":we=Q(1,Ue.Wide);break;case"EEEEE":we=Q(1,Ue.Narrow);break;case"EEEEEE":we=Q(1,Ue.Short);break;case"a":case"aa":case"aaa":we=Q(0,Ue.Abbreviated);break;case"aaaa":we=Q(0,Ue.Wide);break;case"aaaaa":we=Q(0,Ue.Narrow);break;case"b":case"bb":case"bbb":we=Q(0,Ue.Abbreviated,ke.Standalone,!0);break;case"bbbb":we=Q(0,Ue.Wide,ke.Standalone,!0);break;case"bbbbb":we=Q(0,Ue.Narrow,ke.Standalone,!0);break;case"B":case"BB":case"BBB":we=Q(0,Ue.Abbreviated,ke.Format,!0);break;case"BBBB":we=Q(0,Ue.Wide,ke.Format,!0);break;case"BBBBB":we=Q(0,Ue.Narrow,ke.Format,!0);break;case"h":we=ft(3,1,-12);break;case"hh":we=ft(3,2,-12);break;case"H":we=ft(3,1);break;case"HH":we=ft(3,2);break;case"m":we=ft(4,1);break;case"mm":we=ft(4,2);break;case"s":we=ft(5,1);break;case"ss":we=ft(5,2);break;case"S":we=ft(6,1);break;case"SS":we=ft(6,2);break;case"SSS":we=ft(6,3);break;case"Z":case"ZZ":case"ZZZ":we=Je(0);break;case"ZZZZZ":we=Je(3);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":we=Je(1);break;case"OOOO":case"ZZZZ":case"zzzz":we=Je(2);break;default:return null}return rn[S]=we,we}(Yn);Gn+=Pn?Pn(Xe,$,$n):"''"===Yn?"'":Yn.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),Gn}function ce(S,we,$){const ue=new Date(0);return ue.setFullYear(S,we,$),ue.setHours(0,0,0),ue}function ee(S,we){const $=function z(S){return(0,o.H5H)(S)[o.KH2.LocaleId]}(S);if(ln[$]??={},ln[$][we])return ln[$][we];let ue="";switch(we){case"shortDate":ue=N(S,ve.Short);break;case"mediumDate":ue=N(S,ve.Medium);break;case"longDate":ue=N(S,ve.Long);break;case"fullDate":ue=N(S,ve.Full);break;case"shortTime":ue=V(S,ve.Short);break;case"mediumTime":ue=V(S,ve.Medium);break;case"longTime":ue=V(S,ve.Long);break;case"fullTime":ue=V(S,ve.Full);break;case"short":const Xe=ee(S,"shortTime"),Dt=ee(S,"shortDate");ue=re(I(S,ve.Short),[Xe,Dt]);break;case"medium":const Rt=ee(S,"mediumTime"),cn=ee(S,"mediumDate");ue=re(I(S,ve.Medium),[Rt,cn]);break;case"long":const $n=ee(S,"longTime"),Gn=ee(S,"longDate");ue=re(I(S,ve.Long),[$n,Gn]);break;case"full":const Yn=ee(S,"fullTime"),Pn=ee(S,"fullDate");ue=re(I(S,ve.Full),[Yn,Pn])}return ue&&(ln[$][we]=ue),ue}function re(S,we){return we&&(S=S.replace(/\{([^}]+)}/g,function($,ue){return null!=we&&ue in we?we[ue]:$})),S}function be(S,we,$="-",ue,Xe){let Dt="";(S<0||Xe&&S<=0)&&(Xe?S=1-S:(S=-S,Dt=$));let Rt=String(S);for(;Rt.length0||cn>-$)&&(cn+=$),3===S)0===cn&&-12===$&&(cn=12);else if(6===S)return function Ke(S,we){return be(S,3).substring(0,we)}(cn,we);const $n=M(Rt,5);return be(cn,we,$n,ue,Xe)}}function Q(S,we,$=ke.Format,ue=!1){return function(Xe,Dt){return function Be(S,we,$,ue,Xe,Dt){switch($){case 2:return function q(S,we,$){const ue=(0,o.H5H)(S),Dt=De([ue[o.KH2.MonthsFormat],ue[o.KH2.MonthsStandalone]],we);return De(Dt,$)}(we,Xe,ue)[S.getMonth()];case 1:return function L(S,we,$){const ue=(0,o.H5H)(S),Dt=De([ue[o.KH2.DaysFormat],ue[o.KH2.DaysStandalone]],we);return De(Dt,$)}(we,Xe,ue)[S.getDay()];case 0:const Rt=S.getHours(),cn=S.getMinutes();if(Dt){const Gn=function tt(S){const we=(0,o.H5H)(S);return Ee(we),(we[o.KH2.ExtraData][2]||[]).map(ue=>"string"==typeof ue?nt(ue):[nt(ue[0]),nt(ue[1])])}(we),Yn=function Y(S,we,$){const ue=(0,o.H5H)(S);Ee(ue);const Dt=De([ue[o.KH2.ExtraData][0],ue[o.KH2.ExtraData][1]],we)||[];return De(Dt,$)||[]}(we,Xe,ue),Pn=Gn.findIndex(Vn=>{if(Array.isArray(Vn)){const[Vt,pi]=Vn,Ui=Rt>=Vt.hours&&cn>=Vt.minutes,mi=Rt0?Math.floor(Xe/60):Math.ceil(Xe/60);switch(S){case 0:return(Xe>=0?"+":"")+be(Rt,2,Dt)+be(Math.abs(Xe%60),2,Dt);case 1:return"GMT"+(Xe>=0?"+":"")+be(Rt,1,Dt);case 2:return"GMT"+(Xe>=0?"+":"")+be(Rt,2,Dt)+":"+be(Math.abs(Xe%60),2,Dt);case 3:return 0===ue?"Z":(Xe>=0?"+":"")+be(Rt,2,Dt)+":"+be(Math.abs(Xe%60),2,Dt);default:throw new Error(`Unknown zone width "${S}"`)}}}const qe=0,ot=4;function Ft(S){const we=S.getDay(),$=0===we?-3:ot-we;return ce(S.getFullYear(),S.getMonth(),S.getDate()+$)}function kt(S,we=!1){return function($,ue){let Xe;if(we){const Dt=new Date($.getFullYear(),$.getMonth(),1).getDay()-1,Rt=$.getDate();Xe=1+Math.floor((Rt+Dt)/7)}else{const Dt=Ft($),Rt=function It(S){const we=ce(S,qe,1).getDay();return ce(S,0,1+(we<=ot?ot:ot+7)-we)}(Dt.getFullYear()),cn=Dt.getTime()-Rt.getTime();Xe=1+Math.round(cn/6048e5)}return be(Xe,S,M(ue,5))}}function Qt(S,we=!1){return function($,ue){return be(Ft($).getFullYear(),S,M(ue,5),we)}}const rn={};function $e(S,we){S=S.replace(/:/g,"");const $=Date.parse("Jan 01, 1970 00:00:00 "+S)/6e4;return isNaN($)?we:$}function Lt(S){return S instanceof Date&&!isNaN(S.valueOf())}const Ut=/^(\d+)?\.((\d+)(-(\d+))?)?$/;function k(S,we,$,ue,Xe,Dt,Rt=!1){let cn="",$n=!1;if(isFinite(S)){let Gn=function Ze(S){let ue,Xe,Dt,Rt,cn,we=Math.abs(S)+"",$=0;for((Xe=we.indexOf("."))>-1&&(we=we.replace(".","")),(Dt=we.search(/e/i))>0?(Xe<0&&(Xe=Dt),Xe+=+we.slice(Dt+1),we=we.substring(0,Dt)):Xe<0&&(Xe=we.length),Dt=0;"0"===we.charAt(Dt);Dt++);if(Dt===(cn=we.length))ue=[0],Xe=1;else{for(cn--;"0"===we.charAt(cn);)cn--;for(Xe-=Dt,ue=[],Rt=0;Dt<=cn;Dt++,Rt++)ue[Rt]=Number(we.charAt(Dt))}return Xe>22&&(ue=ue.splice(0,21),$=Xe-1,Xe=1),{digits:ue,exponent:$,integerLen:Xe}}(S);Rt&&(Gn=function je(S){if(0===S.digits[0])return S;const we=S.digits.length-S.integerLen;return S.exponent?S.exponent+=2:(0===we?S.digits.push(0,0):1===we&&S.digits.push(0),S.integerLen+=2),S}(Gn));let Yn=we.minInt,Pn=we.minFrac,Vn=we.maxFrac;if(Dt){const rr=Dt.match(Ut);if(null===rr)throw new Error(`${Dt} is not a valid digit info`);const ei=rr[1],Jn=rr[3],si=rr[5];null!=ei&&(Yn=_t(ei)),null!=Jn&&(Pn=_t(Jn)),null!=si?Vn=_t(si):null!=Jn&&Pn>Vn&&(Vn=Pn)}!function dt(S,we,$){if(we>$)throw new Error(`The minimum number of digits after fraction (${we}) is higher than the maximum (${$}).`);let ue=S.digits,Xe=ue.length-S.integerLen;const Dt=Math.min(Math.max(we,Xe),$);let Rt=Dt+S.integerLen,cn=ue[Rt];if(Rt>0){ue.splice(Math.max(S.integerLen,Rt));for(let Pn=Rt;Pn=5)if(Rt-1<0){for(let Pn=0;Pn>Rt;Pn--)ue.unshift(0),S.integerLen++;ue.unshift(1),S.integerLen++}else ue[Rt-1]++;for(;Xe=Gn?pi.pop():$n=!1),Vn>=10?1:0},0);Yn&&(ue.unshift(Yn),S.integerLen++)}(Gn,Pn,Vn);let Vt=Gn.digits,pi=Gn.integerLen;const Ui=Gn.exponent;let mi=[];for($n=Vt.every(rr=>!rr);pi0?mi=Vt.splice(pi,Vt.length):(mi=Vt,Vt=[0]);const Ir=[];for(Vt.length>=we.lgSize&&Ir.unshift(Vt.splice(-we.lgSize,Vt.length).join(""));Vt.length>we.gSize;)Ir.unshift(Vt.splice(-we.gSize,Vt.length).join(""));Vt.length&&Ir.unshift(Vt.join("")),cn=Ir.join(M($,ue)),mi.length&&(cn+=M($,Xe)+mi.join("")),Ui&&(cn+=M($,6)+"+"+Ui)}else cn=M($,9);return cn=S<0&&!$n?we.negPre+cn+we.negSuf:we.posPre+cn+we.posSuf,cn}function Oe(S,we="-"){const $={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},ue=S.split(";"),Xe=ue[0],Dt=ue[1],Rt=-1!==Xe.indexOf(".")?Xe.split("."):[Xe.substring(0,Xe.lastIndexOf("0")+1),Xe.substring(Xe.lastIndexOf("0")+1)],cn=Rt[0],$n=Rt[1]||"";$.posPre=cn.substring(0,cn.indexOf("#"));for(let Yn=0;Yn<$n.length;Yn++){const Pn=$n.charAt(Yn);"0"===Pn?$.minFrac=$.maxFrac=Yn+1:"#"===Pn?$.maxFrac=Yn+1:$.posSuf+=Pn}const Gn=cn.split(",");if($.gSize=Gn[1]?Gn[1].length:0,$.lgSize=Gn[2]||Gn[1]?(Gn[2]||Gn[1]).length:0,Dt){const Yn=Xe.length-$.posPre.length-$.posSuf.length,Pn=Dt.indexOf("#");$.negPre=Dt.substring(0,Pn).replace(/'/g,""),$.negSuf=Dt.slice(Pn+Yn).replace(/'/g,"")}else $.negPre=we+$.posPre,$.negSuf=$.posSuf;return $}function _t(S){const we=parseInt(S);if(isNaN(we))throw new Error("Invalid integer literal when parsing "+S);return we}function Tt(S,we){we=encodeURIComponent(we);for(const $ of S.split(";")){const ue=$.indexOf("="),[Xe,Dt]=-1==ue?[$,""]:[$.slice(0,ue),$.slice(ue+1)];if(Xe.trim()===we)return decodeURIComponent(Dt)}return null}const Gt=/\s+/,zt=[];let Jt=(()=>{class S{_ngEl;_renderer;initialClasses=zt;rawClass;stateMap=new Map;constructor($,ue){this._ngEl=$,this._renderer=ue}set klass($){this.initialClasses=null!=$?$.trim().split(Gt):zt}set ngClass($){this.rawClass="string"==typeof $?$.trim().split(Gt):$}ngDoCheck(){for(const ue of this.initialClasses)this._updateState(ue,!0);const $=this.rawClass;if(Array.isArray($)||$ instanceof Set)for(const ue of $)this._updateState(ue,!0);else if(null!=$)for(const ue of Object.keys($))this._updateState(ue,!!$[ue]);this._applyStateDiff()}_updateState($,ue){const Xe=this.stateMap.get($);void 0!==Xe?(Xe.enabled!==ue&&(Xe.changed=!0,Xe.enabled=ue),Xe.touched=!0):this.stateMap.set($,{enabled:ue,changed:!0,touched:!0})}_applyStateDiff(){for(const $ of this.stateMap){const ue=$[0],Xe=$[1];Xe.changed?(this._toggleClass(ue,Xe.enabled),Xe.changed=!1):Xe.touched||(Xe.enabled&&this._toggleClass(ue,!1),this.stateMap.delete(ue)),Xe.touched=!1}}_toggleClass($,ue){($=$.trim()).length>0&&$.split(Gt).forEach(Xe=>{ue?this._renderer.addClass(this._ngEl.nativeElement,Xe):this._renderer.removeClass(this._ngEl.nativeElement,Xe)})}static \u0275fac=function(ue){return new(ue||S)(o.rXU(o.aKT),o.rXU(o.sFG))};static \u0275dir=o.FsC({type:S,selectors:[["","ngClass",""]],inputs:{klass:[0,"class","klass"],ngClass:"ngClass"}})}return S})();class un{$implicit;ngForOf;index;count;constructor(we,$,ue,Xe){this.$implicit=we,this.ngForOf=$,this.index=ue,this.count=Xe}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let tn=(()=>{class S{_viewContainer;_template;_differs;set ngForOf($){this._ngForOf=$,this._ngForOfDirty=!0}set ngForTrackBy($){this._trackByFn=$}get ngForTrackBy(){return this._trackByFn}_ngForOf=null;_ngForOfDirty=!0;_differ=null;_trackByFn;constructor($,ue,Xe){this._viewContainer=$,this._template=ue,this._differs=Xe}set ngForTemplate($){$&&(this._template=$)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const $=this._ngForOf;!this._differ&&$&&(this._differ=this._differs.find($).create(this.ngForTrackBy))}if(this._differ){const $=this._differ.diff(this._ngForOf);$&&this._applyChanges($)}}_applyChanges($){const ue=this._viewContainer;$.forEachOperation((Xe,Dt,Rt)=>{if(null==Xe.previousIndex)ue.createEmbeddedView(this._template,new un(Xe.item,this._ngForOf,-1,-1),null===Rt?void 0:Rt);else if(null==Rt)ue.remove(null===Dt?void 0:Dt);else if(null!==Dt){const cn=ue.get(Dt);ue.move(cn,Rt),mn(cn,Xe)}});for(let Xe=0,Dt=ue.length;Xe{mn(ue.get(Xe.currentIndex),Xe)})}static ngTemplateContextGuard($,ue){return!0}static \u0275fac=function(ue){return new(ue||S)(o.rXU(o.c1b),o.rXU(o.C4Q),o.rXU(o._q3))};static \u0275dir=o.FsC({type:S,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"}})}return S})();function mn(S,we){S.context.$implicit=we.item}let _n=(()=>{class S{_viewContainer;_context=new Mn;_thenTemplateRef=null;_elseTemplateRef=null;_thenViewRef=null;_elseViewRef=null;constructor($,ue){this._viewContainer=$,this._thenTemplateRef=ue}set ngIf($){this._context.$implicit=this._context.ngIf=$,this._updateView()}set ngIfThen($){qt("ngIfThen",$),this._thenTemplateRef=$,this._thenViewRef=null,this._updateView()}set ngIfElse($){qt("ngIfElse",$),this._elseTemplateRef=$,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngIfUseIfTypeGuard;static ngTemplateGuard_ngIf;static ngTemplateContextGuard($,ue){return!0}static \u0275fac=function(ue){return new(ue||S)(o.rXU(o.c1b),o.rXU(o.C4Q))};static \u0275dir=o.FsC({type:S,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"}})}return S})();class Mn{$implicit=null;ngIf=null}function qt(S,we){if(we&&!we.createEmbeddedView)throw new Error(`${S} must be a TemplateRef, but received '${(0,o.Tbb)(we)}'.`)}let Wt=(()=>{class S{_ngEl;_differs;_renderer;_ngStyle=null;_differ=null;constructor($,ue,Xe){this._ngEl=$,this._differs=ue,this._renderer=Xe}set ngStyle($){this._ngStyle=$,!this._differ&&$&&(this._differ=this._differs.find($).create())}ngDoCheck(){if(this._differ){const $=this._differ.diff(this._ngStyle);$&&this._applyChanges($)}}_setStyle($,ue){const[Xe,Dt]=$.split("."),Rt=-1===Xe.indexOf("-")?void 0:o.czy.DashCase;null!=ue?this._renderer.setStyle(this._ngEl.nativeElement,Xe,Dt?`${ue}${Dt}`:ue,Rt):this._renderer.removeStyle(this._ngEl.nativeElement,Xe,Rt)}_applyChanges($){$.forEachRemovedItem(ue=>this._setStyle(ue.key,null)),$.forEachAddedItem(ue=>this._setStyle(ue.key,ue.currentValue)),$.forEachChangedItem(ue=>this._setStyle(ue.key,ue.currentValue))}static \u0275fac=function(ue){return new(ue||S)(o.rXU(o.aKT),o.rXU(o.MKu),o.rXU(o.sFG))};static \u0275dir=o.FsC({type:S,selectors:[["","ngStyle",""]],inputs:{ngStyle:"ngStyle"}})}return S})(),Ht=(()=>{class S{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;constructor($){this._viewContainerRef=$}ngOnChanges($){if(this._shouldRecreateView($)){const ue=this._viewContainerRef;if(this._viewRef&&ue.remove(ue.indexOf(this._viewRef)),!this.ngTemplateOutlet)return void(this._viewRef=null);const Xe=this._createContextForwardProxy();this._viewRef=ue.createEmbeddedView(this.ngTemplateOutlet,Xe,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView($){return!!$.ngTemplateOutlet||!!$.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:($,ue,Xe)=>!!this.ngTemplateOutletContext&&Reflect.set(this.ngTemplateOutletContext,ue,Xe),get:($,ue,Xe)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,ue,Xe)}})}static \u0275fac=function(ue){return new(ue||S)(o.rXU(o.c1b))};static \u0275dir=o.FsC({type:S,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},features:[o.OA$]})}return S})();function sn(S,we){return new o.wOt(2100,!1)}class Ln{createSubscription(we,$){return(0,o.O8t)(()=>we.subscribe({next:$,error:ue=>{throw ue}}))}dispose(we){(0,o.O8t)(()=>we.unsubscribe())}}class $t{createSubscription(we,$){return we.then($,ue=>{throw ue})}dispose(we){}}const qn=new $t,Qn=new Ln;let hi=(()=>{class S{_ref;_latestValue=null;markForCheckOnValueUpdate=!0;_subscription=null;_obj=null;_strategy=null;constructor($){this._ref=$}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform($){if(!this._obj){if($)try{this.markForCheckOnValueUpdate=!1,this._subscribe($)}finally{this.markForCheckOnValueUpdate=!0}return this._latestValue}return $!==this._obj?(this._dispose(),this.transform($)):this._latestValue}_subscribe($){this._obj=$,this._strategy=this._selectStrategy($),this._subscription=this._strategy.createSubscription($,ue=>this._updateLatestValue($,ue))}_selectStrategy($){if((0,o.jNT)($))return qn;if((0,o.zjR)($))return Qn;throw sn()}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue($,ue){$===this._obj&&(this._latestValue=ue,this.markForCheckOnValueUpdate&&this._ref?.markForCheck())}static \u0275fac=function(ue){return new(ue||S)(o.rXU(o.gRc,16))};static \u0275pipe=o.EJ8({name:"async",type:S,pure:!1})}return S})();const ti=new o.nKC(""),sr=new o.nKC("");let hr=(()=>{class S{locale;defaultTimezone;defaultOptions;constructor($,ue,Xe){this.locale=$,this.defaultTimezone=ue,this.defaultOptions=Xe}transform($,ue,Xe,Dt){if(null==$||""===$||$!=$)return null;try{return rt($,ue??this.defaultOptions?.dateFormat??"mediumDate",Dt||this.locale,Xe??this.defaultOptions?.timezone??this.defaultTimezone??void 0)}catch(Rt){throw sn()}}static \u0275fac=function(ue){return new(ue||S)(o.rXU(o.xe9,16),o.rXU(ti,24),o.rXU(sr,24))};static \u0275pipe=o.EJ8({name:"date",type:S,pure:!0})}return S})(),tr=(()=>{class S{_locale;constructor($){this._locale=$}transform($,ue,Xe){if(!ji($))return null;Xe||=this._locale;try{return function xe(S,we,$){return k(S,Oe(j(we,Ce.Decimal),M(we,5)),we,1,0,$)}(oi($),Xe,ue)}catch(Dt){throw sn()}}static \u0275fac=function(ue){return new(ue||S)(o.rXU(o.xe9,16))};static \u0275pipe=o.EJ8({name:"number",type:S,pure:!0})}return S})(),Pr=(()=>{class S{_locale;constructor($){this._locale=$}transform($,ue,Xe){if(!ji($))return null;Xe||=this._locale;try{return function H(S,we,$){return k(S,Oe(j(we,Ce.Percent),M(we,5)),we,1,0,$,!0).replace(new RegExp("%","g"),M(we,3))}(oi($),Xe,ue)}catch(Dt){throw sn()}}static \u0275fac=function(ue){return new(ue||S)(o.rXU(o.xe9,16))};static \u0275pipe=o.EJ8({name:"percent",type:S,pure:!0})}return S})();function ji(S){return!(null==S||""===S||S!=S)}function oi(S){if("string"==typeof S&&!isNaN(Number(S)-parseFloat(S)))return Number(S);if("number"!=typeof S)throw new Error(`${S} is not a number`);return S}let wi=(()=>{class S{transform($,ue,Xe){if(null==$)return null;if(!this.supports($))throw sn();return $.slice(ue,Xe)}supports($){return"string"==typeof $||Array.isArray($)}static \u0275fac=function(ue){return new(ue||S)};static \u0275pipe=o.EJ8({name:"slice",type:S,pure:!1})}return S})(),ro=(()=>{class S{static \u0275fac=function(ue){return new(ue||S)};static \u0275mod=o.$C({type:S});static \u0275inj=o.G2t({})}return S})();const Nr="browser",Yi="server";function Wi(S){return S===Nr}function Er(S){return S===Yi}let kr=(()=>{class S{static \u0275prov=(0,o.jDH)({token:S,providedIn:"root",factory:()=>new fi((0,o.WQX)(D),window)})}return S})();class fi{document;window;offset=()=>[0,0];constructor(we,$){this.document=we,this.window=$}setOffset(we){this.offset=Array.isArray(we)?()=>we:we}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(we){this.window.scrollTo(we[0],we[1])}scrollToAnchor(we){const $=function cr(S,we){const $=S.getElementById(we)||S.getElementsByName(we)[0];if($)return $;if("function"==typeof S.createTreeWalker&&S.body&&"function"==typeof S.body.attachShadow){const ue=S.createTreeWalker(S.body,NodeFilter.SHOW_ELEMENT);let Xe=ue.currentNode;for(;Xe;){const Dt=Xe.shadowRoot;if(Dt){const Rt=Dt.getElementById(we)||Dt.querySelector(`[name="${we}"]`);if(Rt)return Rt}Xe=ue.nextNode()}}return null}(this.document,we);$&&(this.scrollToElement($),$.focus())}setHistoryScrollRestoration(we){this.window.history.scrollRestoration=we}scrollToElement(we){const $=we.getBoundingClientRect(),ue=$.left+this.window.pageXOffset,Xe=$.top+this.window.pageYOffset,Dt=this.offset();this.window.scrollTo(ue-Dt[0],Xe-Dt[1])}}class mr{}},1626:(ut,Ie,a)=>{"use strict";a.d(Ie,{$R:()=>bt,$m:()=>Mn,Lr:()=>T,Qq:()=>R,ZZ:()=>je,kG:()=>Me,yz:()=>M});var o=a(467),c=a(4438),O=a(7673),d=a(1985),w=a(6648),C=a(274),x=a(5964),D=a(6354),p=a(980),g=a(5558),y=a(8141),h=a(177);class u{}class P{}class T{headers;normalizedNames=new Map;lazyInit;lazyUpdate=null;constructor(ze){ze?"string"==typeof ze?this.lazyInit=()=>{this.headers=new Map,ze.split("\n").forEach(Ge=>{const gt=Ge.indexOf(":");if(gt>0){const wt=Ge.slice(0,gt),Wt=Ge.slice(gt+1).trim();this.addHeaderEntry(wt,Wt)}})}:typeof Headers<"u"&&ze instanceof Headers?(this.headers=new Map,ze.forEach((Ge,gt)=>{this.addHeaderEntry(gt,Ge)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(ze).forEach(([Ge,gt])=>{this.setHeaderEntries(Ge,gt)})}:this.headers=new Map}has(ze){return this.init(),this.headers.has(ze.toLowerCase())}get(ze){this.init();const Ge=this.headers.get(ze.toLowerCase());return Ge&&Ge.length>0?Ge[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(ze){return this.init(),this.headers.get(ze.toLowerCase())||null}append(ze,Ge){return this.clone({name:ze,value:Ge,op:"a"})}set(ze,Ge){return this.clone({name:ze,value:Ge,op:"s"})}delete(ze,Ge){return this.clone({name:ze,value:Ge,op:"d"})}maybeSetNormalizedName(ze,Ge){this.normalizedNames.has(Ge)||this.normalizedNames.set(Ge,ze)}init(){this.lazyInit&&(this.lazyInit instanceof T?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(ze=>this.applyUpdate(ze)),this.lazyUpdate=null))}copyFrom(ze){ze.init(),Array.from(ze.headers.keys()).forEach(Ge=>{this.headers.set(Ge,ze.headers.get(Ge)),this.normalizedNames.set(Ge,ze.normalizedNames.get(Ge))})}clone(ze){const Ge=new T;return Ge.lazyInit=this.lazyInit&&this.lazyInit instanceof T?this.lazyInit:this,Ge.lazyUpdate=(this.lazyUpdate||[]).concat([ze]),Ge}applyUpdate(ze){const Ge=ze.name.toLowerCase();switch(ze.op){case"a":case"s":let gt=ze.value;if("string"==typeof gt&&(gt=[gt]),0===gt.length)return;this.maybeSetNormalizedName(ze.name,Ge);const wt=("a"===ze.op?this.headers.get(Ge):void 0)||[];wt.push(...gt),this.headers.set(Ge,wt);break;case"d":const Wt=ze.value;if(Wt){let Ht=this.headers.get(Ge);if(!Ht)return;Ht=Ht.filter(hn=>-1===Wt.indexOf(hn)),0===Ht.length?(this.headers.delete(Ge),this.normalizedNames.delete(Ge)):this.headers.set(Ge,Ht)}else this.headers.delete(Ge),this.normalizedNames.delete(Ge)}}addHeaderEntry(ze,Ge){const gt=ze.toLowerCase();this.maybeSetNormalizedName(ze,gt),this.headers.has(gt)?this.headers.get(gt).push(Ge):this.headers.set(gt,[Ge])}setHeaderEntries(ze,Ge){const gt=(Array.isArray(Ge)?Ge:[Ge]).map(Wt=>Wt.toString()),wt=ze.toLowerCase();this.headers.set(wt,gt),this.maybeSetNormalizedName(ze,wt)}forEach(ze){this.init(),Array.from(this.normalizedNames.keys()).forEach(Ge=>ze(this.normalizedNames.get(Ge),this.headers.get(Ge)))}}class W{encodeKey(ze){return Z(ze)}encodeValue(ze){return Z(ze)}decodeKey(ze){return decodeURIComponent(ze)}decodeValue(ze){return decodeURIComponent(ze)}}const de=/%(\d[a-f0-9])/gi,ie={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function Z(Ve){return encodeURIComponent(Ve).replace(de,(ze,Ge)=>ie[Ge]??ze)}function ae(Ve){return`${Ve}`}class Le{map;encoder;updates=null;cloneFrom=null;constructor(ze={}){if(this.encoder=ze.encoder||new W,ze.fromString){if(ze.fromObject)throw new c.wOt(2805,!1);this.map=function ne(Ve,ze){const Ge=new Map;return Ve.length>0&&Ve.replace(/^\?/,"").split("&").forEach(wt=>{const Wt=wt.indexOf("="),[Ht,hn]=-1==Wt?[ze.decodeKey(wt),""]:[ze.decodeKey(wt.slice(0,Wt)),ze.decodeValue(wt.slice(Wt+1))],sn=Ge.get(Ht)||[];sn.push(hn),Ge.set(Ht,sn)}),Ge}(ze.fromString,this.encoder)}else ze.fromObject?(this.map=new Map,Object.keys(ze.fromObject).forEach(Ge=>{const gt=ze.fromObject[Ge],wt=Array.isArray(gt)?gt.map(ae):[ae(gt)];this.map.set(Ge,wt)})):this.map=null}has(ze){return this.init(),this.map.has(ze)}get(ze){this.init();const Ge=this.map.get(ze);return Ge?Ge[0]:null}getAll(ze){return this.init(),this.map.get(ze)||null}keys(){return this.init(),Array.from(this.map.keys())}append(ze,Ge){return this.clone({param:ze,value:Ge,op:"a"})}appendAll(ze){const Ge=[];return Object.keys(ze).forEach(gt=>{const wt=ze[gt];Array.isArray(wt)?wt.forEach(Wt=>{Ge.push({param:gt,value:Wt,op:"a"})}):Ge.push({param:gt,value:wt,op:"a"})}),this.clone(Ge)}set(ze,Ge){return this.clone({param:ze,value:Ge,op:"s"})}delete(ze,Ge){return this.clone({param:ze,value:Ge,op:"d"})}toString(){return this.init(),this.keys().map(ze=>{const Ge=this.encoder.encodeKey(ze);return this.map.get(ze).map(gt=>Ge+"="+this.encoder.encodeValue(gt)).join("&")}).filter(ze=>""!==ze).join("&")}clone(ze){const Ge=new Le({encoder:this.encoder});return Ge.cloneFrom=this.cloneFrom||this,Ge.updates=(this.updates||[]).concat(ze),Ge}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(ze=>this.map.set(ze,this.cloneFrom.map.get(ze))),this.updates.forEach(ze=>{switch(ze.op){case"a":case"s":const Ge=("a"===ze.op?this.map.get(ze.param):void 0)||[];Ge.push(ae(ze.value)),this.map.set(ze.param,Ge);break;case"d":if(void 0===ze.value){this.map.delete(ze.param);break}{let gt=this.map.get(ze.param)||[];const wt=gt.indexOf(ae(ze.value));-1!==wt&>.splice(wt,1),gt.length>0?this.map.set(ze.param,gt):this.map.delete(ze.param)}}}),this.cloneFrom=this.updates=null)}}class Ce{map=new Map;set(ze,Ge){return this.map.set(ze,Ge),this}get(ze){return this.map.has(ze)||this.map.set(ze,ze.defaultValue()),this.map.get(ze)}delete(ze){return this.map.delete(ze),this}has(ze){return this.map.has(ze)}keys(){return this.map.keys()}}function ke(Ve){return typeof ArrayBuffer<"u"&&Ve instanceof ArrayBuffer}function Ue(Ve){return typeof Blob<"u"&&Ve instanceof Blob}function ve(Ve){return typeof FormData<"u"&&Ve instanceof FormData}const Se="Content-Type",z="Accept",te="X-Request-URL",L="text/plain",q="application/json",J=`${q}, ${L}, */*`;class X{url;body=null;headers;context;reportProgress=!1;withCredentials=!1;responseType="json";method;params;urlWithParams;transferCache;constructor(ze,Ge,gt,wt){let Wt;if(this.url=Ge,this.method=ze.toUpperCase(),function Ae(Ve){switch(Ve){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||wt?(this.body=void 0!==gt?gt:null,Wt=wt):Wt=gt,Wt&&(this.reportProgress=!!Wt.reportProgress,this.withCredentials=!!Wt.withCredentials,Wt.responseType&&(this.responseType=Wt.responseType),Wt.headers&&(this.headers=Wt.headers),Wt.context&&(this.context=Wt.context),Wt.params&&(this.params=Wt.params),this.transferCache=Wt.transferCache),this.headers??=new T,this.context??=new Ce,this.params){const Ht=this.params.toString();if(0===Ht.length)this.urlWithParams=Ge;else{const hn=Ge.indexOf("?");this.urlWithParams=Ge+(-1===hn?"?":hnQn.set(hi,ze.setHeaders[hi]),Ln)),ze.setParams&&($t=Object.keys(ze.setParams).reduce((Qn,hi)=>Qn.set(hi,ze.setParams[hi]),$t)),new X(Ge,gt,Ht,{params:$t,headers:Ln,context:qn,reportProgress:sn,responseType:wt,withCredentials:hn,transferCache:Wt})}}var K=function(Ve){return Ve[Ve.Sent=0]="Sent",Ve[Ve.UploadProgress=1]="UploadProgress",Ve[Ve.ResponseHeader=2]="ResponseHeader",Ve[Ve.DownloadProgress=3]="DownloadProgress",Ve[Ve.Response=4]="Response",Ve[Ve.User=5]="User",Ve}(K||{});class N{headers;status;statusText;url;ok;type;constructor(ze,Ge=200,gt="OK"){this.headers=ze.headers||new T,this.status=void 0!==ze.status?ze.status:Ge,this.statusText=ze.statusText||gt,this.url=ze.url||null,this.ok=this.status>=200&&this.status<300}}class V extends N{constructor(ze={}){super(ze)}type=K.ResponseHeader;clone(ze={}){return new V({headers:ze.headers||this.headers,status:void 0!==ze.status?ze.status:this.status,statusText:ze.statusText||this.statusText,url:ze.url||this.url||void 0})}}class I extends N{body;constructor(ze={}){super(ze),this.body=void 0!==ze.body?ze.body:null}type=K.Response;clone(ze={}){return new I({body:void 0!==ze.body?ze.body:this.body,headers:ze.headers||this.headers,status:void 0!==ze.status?ze.status:this.status,statusText:ze.statusText||this.statusText,url:ze.url||this.url||void 0})}}class M extends N{name="HttpErrorResponse";message;error;ok=!1;constructor(ze){super(ze,0,"Unknown Error"),this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${ze.url||"(unknown url)"}`:`Http failure response for ${ze.url||"(unknown url)"}: ${ze.status} ${ze.statusText}`,this.error=ze.error||null}}var Me=function(Ve){return Ve[Ve.Continue=100]="Continue",Ve[Ve.SwitchingProtocols=101]="SwitchingProtocols",Ve[Ve.Processing=102]="Processing",Ve[Ve.EarlyHints=103]="EarlyHints",Ve[Ve.Ok=200]="Ok",Ve[Ve.Created=201]="Created",Ve[Ve.Accepted=202]="Accepted",Ve[Ve.NonAuthoritativeInformation=203]="NonAuthoritativeInformation",Ve[Ve.NoContent=204]="NoContent",Ve[Ve.ResetContent=205]="ResetContent",Ve[Ve.PartialContent=206]="PartialContent",Ve[Ve.MultiStatus=207]="MultiStatus",Ve[Ve.AlreadyReported=208]="AlreadyReported",Ve[Ve.ImUsed=226]="ImUsed",Ve[Ve.MultipleChoices=300]="MultipleChoices",Ve[Ve.MovedPermanently=301]="MovedPermanently",Ve[Ve.Found=302]="Found",Ve[Ve.SeeOther=303]="SeeOther",Ve[Ve.NotModified=304]="NotModified",Ve[Ve.UseProxy=305]="UseProxy",Ve[Ve.Unused=306]="Unused",Ve[Ve.TemporaryRedirect=307]="TemporaryRedirect",Ve[Ve.PermanentRedirect=308]="PermanentRedirect",Ve[Ve.BadRequest=400]="BadRequest",Ve[Ve.Unauthorized=401]="Unauthorized",Ve[Ve.PaymentRequired=402]="PaymentRequired",Ve[Ve.Forbidden=403]="Forbidden",Ve[Ve.NotFound=404]="NotFound",Ve[Ve.MethodNotAllowed=405]="MethodNotAllowed",Ve[Ve.NotAcceptable=406]="NotAcceptable",Ve[Ve.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",Ve[Ve.RequestTimeout=408]="RequestTimeout",Ve[Ve.Conflict=409]="Conflict",Ve[Ve.Gone=410]="Gone",Ve[Ve.LengthRequired=411]="LengthRequired",Ve[Ve.PreconditionFailed=412]="PreconditionFailed",Ve[Ve.PayloadTooLarge=413]="PayloadTooLarge",Ve[Ve.UriTooLong=414]="UriTooLong",Ve[Ve.UnsupportedMediaType=415]="UnsupportedMediaType",Ve[Ve.RangeNotSatisfiable=416]="RangeNotSatisfiable",Ve[Ve.ExpectationFailed=417]="ExpectationFailed",Ve[Ve.ImATeapot=418]="ImATeapot",Ve[Ve.MisdirectedRequest=421]="MisdirectedRequest",Ve[Ve.UnprocessableEntity=422]="UnprocessableEntity",Ve[Ve.Locked=423]="Locked",Ve[Ve.FailedDependency=424]="FailedDependency",Ve[Ve.TooEarly=425]="TooEarly",Ve[Ve.UpgradeRequired=426]="UpgradeRequired",Ve[Ve.PreconditionRequired=428]="PreconditionRequired",Ve[Ve.TooManyRequests=429]="TooManyRequests",Ve[Ve.RequestHeaderFieldsTooLarge=431]="RequestHeaderFieldsTooLarge",Ve[Ve.UnavailableForLegalReasons=451]="UnavailableForLegalReasons",Ve[Ve.InternalServerError=500]="InternalServerError",Ve[Ve.NotImplemented=501]="NotImplemented",Ve[Ve.BadGateway=502]="BadGateway",Ve[Ve.ServiceUnavailable=503]="ServiceUnavailable",Ve[Ve.GatewayTimeout=504]="GatewayTimeout",Ve[Ve.HttpVersionNotSupported=505]="HttpVersionNotSupported",Ve[Ve.VariantAlsoNegotiates=506]="VariantAlsoNegotiates",Ve[Ve.InsufficientStorage=507]="InsufficientStorage",Ve[Ve.LoopDetected=508]="LoopDetected",Ve[Ve.NotExtended=510]="NotExtended",Ve[Ve.NetworkAuthenticationRequired=511]="NetworkAuthenticationRequired",Ve}(Me||{});function oe(Ve,ze){return{body:ze,headers:Ve.headers,context:Ve.context,observe:Ve.observe,params:Ve.params,reportProgress:Ve.reportProgress,responseType:Ve.responseType,withCredentials:Ve.withCredentials,transferCache:Ve.transferCache}}let R=(()=>{class Ve{handler;constructor(Ge){this.handler=Ge}request(Ge,gt,wt={}){let Wt;if(Ge instanceof X)Wt=Ge;else{let sn,Ln;sn=wt.headers instanceof T?wt.headers:new T(wt.headers),wt.params&&(Ln=wt.params instanceof Le?wt.params:new Le({fromObject:wt.params})),Wt=new X(Ge,gt,void 0!==wt.body?wt.body:null,{headers:sn,context:wt.context,params:Ln,reportProgress:wt.reportProgress,responseType:wt.responseType||"json",withCredentials:wt.withCredentials,transferCache:wt.transferCache})}const Ht=(0,O.of)(Wt).pipe((0,C.H)(sn=>this.handler.handle(sn)));if(Ge instanceof X||"events"===wt.observe)return Ht;const hn=Ht.pipe((0,x.p)(sn=>sn instanceof I));switch(wt.observe||"body"){case"body":switch(Wt.responseType){case"arraybuffer":return hn.pipe((0,D.T)(sn=>{if(null!==sn.body&&!(sn.body instanceof ArrayBuffer))throw new c.wOt(2806,!1);return sn.body}));case"blob":return hn.pipe((0,D.T)(sn=>{if(null!==sn.body&&!(sn.body instanceof Blob))throw new c.wOt(2807,!1);return sn.body}));case"text":return hn.pipe((0,D.T)(sn=>{if(null!==sn.body&&"string"!=typeof sn.body)throw new c.wOt(2808,!1);return sn.body}));default:return hn.pipe((0,D.T)(sn=>sn.body))}case"response":return hn;default:throw new c.wOt(2809,!1)}}delete(Ge,gt={}){return this.request("DELETE",Ge,gt)}get(Ge,gt={}){return this.request("GET",Ge,gt)}head(Ge,gt={}){return this.request("HEAD",Ge,gt)}jsonp(Ge,gt){return this.request("JSONP",Ge,{params:(new Le).append(gt,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(Ge,gt={}){return this.request("OPTIONS",Ge,gt)}patch(Ge,gt,wt={}){return this.request("PATCH",Ge,oe(wt,gt))}post(Ge,gt,wt={}){return this.request("POST",Ge,oe(wt,gt))}put(Ge,gt,wt={}){return this.request("PUT",Ge,oe(wt,gt))}static \u0275fac=function(gt){return new(gt||Ve)(c.KVO(u))};static \u0275prov=c.jDH({token:Ve,factory:Ve.\u0275fac})}return Ve})();const se=/^\)\]\}',?\n/;function Ee(Ve){if(Ve.url)return Ve.url;const ze=te.toLocaleLowerCase();return Ve.headers.get(ze)}const tt=new c.nKC("");let Y=(()=>{class Ve{fetchImpl=(0,c.WQX)(Re,{optional:!0})?.fetch??((...Ge)=>globalThis.fetch(...Ge));ngZone=(0,c.WQX)(c.SKi);handle(Ge){return new d.c(gt=>{const wt=new AbortController;return this.doRequest(Ge,wt.signal,gt).then(De,Wt=>gt.error(new M({error:Wt}))),()=>wt.abort()})}doRequest(Ge,gt,wt){var Wt=this;return(0,o.A)(function*(){const Ht=Wt.createRequestInit(Ge);let hn;try{const Kn=Wt.ngZone.runOutsideAngular(()=>Wt.fetchImpl(Ge.urlWithParams,{signal:gt,...Ht}));(function nt(Ve){Ve.then(De,De)})(Kn),wt.next({type:K.Sent}),hn=yield Kn}catch(Kn){return void wt.error(new M({error:Kn,status:Kn.status??0,statusText:Kn.statusText,url:Ge.urlWithParams,headers:Kn.headers}))}const sn=new T(hn.headers),Ln=hn.statusText,$t=Ee(hn)??Ge.urlWithParams;let qn=hn.status,Qn=null;if(Ge.reportProgress&&wt.next(new V({headers:sn,status:qn,statusText:Ln,url:$t})),hn.body){const Kn=hn.headers.get("content-length"),Bn=[],Wn=hn.body.getReader();let wn,ti,pn=0;const sr=typeof Zone<"u"&&Zone.current;yield Wt.ngZone.runOutsideAngular((0,o.A)(function*(){for(;;){const{done:Li,value:fr}=yield Wn.read();if(Li)break;if(Bn.push(fr),pn+=fr.length,Ge.reportProgress){ti="text"===Ge.responseType?(ti??"")+(wn??=new TextDecoder).decode(fr,{stream:!0}):void 0;const Rr=()=>wt.next({type:K.DownloadProgress,total:Kn?+Kn:void 0,loaded:pn,partialText:ti});sr?sr.run(Rr):Rr()}}}));const hr=Wt.concatChunks(Bn,pn);try{const Li=hn.headers.get(Se)??"";Qn=Wt.parseBody(Ge,hr,Li)}catch(Li){return void wt.error(new M({error:Li,headers:new T(hn.headers),status:hn.status,statusText:hn.statusText,url:Ee(hn)??Ge.urlWithParams}))}}0===qn&&(qn=Qn?200:0),qn>=200&&qn<300?(wt.next(new I({body:Qn,headers:sn,status:qn,statusText:Ln,url:$t})),wt.complete()):wt.error(new M({error:Qn,headers:sn,status:qn,statusText:Ln,url:$t}))})()}parseBody(Ge,gt,wt){switch(Ge.responseType){case"json":const Wt=(new TextDecoder).decode(gt).replace(se,"");return""===Wt?null:JSON.parse(Wt);case"text":return(new TextDecoder).decode(gt);case"blob":return new Blob([gt],{type:wt});case"arraybuffer":return gt.buffer}}createRequestInit(Ge){const gt={},wt=Ge.withCredentials?"include":void 0;if(Ge.headers.forEach((Wt,Ht)=>gt[Wt]=Ht.join(",")),Ge.headers.has(z)||(gt[z]=J),!Ge.headers.has(Se)){const Wt=Ge.detectContentTypeHeader();null!==Wt&&(gt[Se]=Wt)}return{body:Ge.serializeBody(),method:Ge.method,headers:gt,credentials:wt}}concatChunks(Ge,gt){const wt=new Uint8Array(gt);let Wt=0;for(const Ht of Ge)wt.set(Ht,Wt),Wt+=Ht.length;return wt}static \u0275fac=function(gt){return new(gt||Ve)};static \u0275prov=c.jDH({token:Ve,factory:Ve.\u0275fac})}return Ve})();class Re{}function De(){}function ht(Ve,ze){return ze(Ve)}const ln=new c.nKC(""),Ot=new c.nKC(""),rt=new c.nKC("",{providedIn:"root",factory:()=>!0});let be=(()=>{class Ve extends u{backend;injector;chain=null;pendingTasks=(0,c.WQX)(c.Ua0);contributeToStability=(0,c.WQX)(rt);constructor(Ge,gt){super(),this.backend=Ge,this.injector=gt}handle(Ge){if(null===this.chain){const gt=Array.from(new Set([...this.injector.get(ln),...this.injector.get(Ot,[])]));this.chain=gt.reduceRight((wt,Wt)=>function Nt(Ve,ze,Ge){return(gt,wt)=>(0,c.N4e)(Ge,()=>ze(gt,Wt=>Ve(Wt,wt)))}(wt,Wt,this.injector),ht)}if(this.contributeToStability){const gt=this.pendingTasks.add();return this.chain(Ge,wt=>this.backend.handle(wt)).pipe((0,p.j)(()=>this.pendingTasks.remove(gt)))}return this.chain(Ge,gt=>this.backend.handle(gt))}static \u0275fac=function(gt){return new(gt||Ve)(c.KVO(P),c.KVO(c.uvJ))};static \u0275prov=c.jDH({token:Ve,factory:Ve.\u0275fac})}return Ve})();const Qt=/^\)\]\}',?\n/,rn=RegExp(`^${te}:`,"m");let $e=(()=>{class Ve{xhrFactory;constructor(Ge){this.xhrFactory=Ge}handle(Ge){if("JSONP"===Ge.method)throw new c.wOt(-2800,!1);const gt=this.xhrFactory;return(gt.\u0275loadImpl?(0,w.H)(gt.\u0275loadImpl()):(0,O.of)(null)).pipe((0,g.n)(()=>new d.c(Wt=>{const Ht=gt.build();if(Ht.open(Ge.method,Ge.urlWithParams),Ge.withCredentials&&(Ht.withCredentials=!0),Ge.headers.forEach((Bn,Wn)=>Ht.setRequestHeader(Bn,Wn.join(","))),Ge.headers.has(z)||Ht.setRequestHeader(z,J),!Ge.headers.has(Se)){const Bn=Ge.detectContentTypeHeader();null!==Bn&&Ht.setRequestHeader(Se,Bn)}if(Ge.responseType){const Bn=Ge.responseType.toLowerCase();Ht.responseType="json"!==Bn?Bn:"text"}const hn=Ge.serializeBody();let sn=null;const Ln=()=>{if(null!==sn)return sn;const Bn=Ht.statusText||"OK",Wn=new T(Ht.getAllResponseHeaders()),pn=function nn(Ve){return"responseURL"in Ve&&Ve.responseURL?Ve.responseURL:rn.test(Ve.getAllResponseHeaders())?Ve.getResponseHeader(te):null}(Ht)||Ge.url;return sn=new V({headers:Wn,status:Ht.status,statusText:Bn,url:pn}),sn},$t=()=>{let{headers:Bn,status:Wn,statusText:pn,url:wn}=Ln(),ti=null;204!==Wn&&(ti=typeof Ht.response>"u"?Ht.responseText:Ht.response),0===Wn&&(Wn=ti?200:0);let sr=Wn>=200&&Wn<300;if("json"===Ge.responseType&&"string"==typeof ti){const hr=ti;ti=ti.replace(Qt,"");try{ti=""!==ti?JSON.parse(ti):null}catch(Li){ti=hr,sr&&(sr=!1,ti={error:Li,text:ti})}}sr?(Wt.next(new I({body:ti,headers:Bn,status:Wn,statusText:pn,url:wn||void 0})),Wt.complete()):Wt.error(new M({error:ti,headers:Bn,status:Wn,statusText:pn,url:wn||void 0}))},qn=Bn=>{const{url:Wn}=Ln(),pn=new M({error:Bn,status:Ht.status||0,statusText:Ht.statusText||"Unknown Error",url:Wn||void 0});Wt.error(pn)};let Qn=!1;const hi=Bn=>{Qn||(Wt.next(Ln()),Qn=!0);let Wn={type:K.DownloadProgress,loaded:Bn.loaded};Bn.lengthComputable&&(Wn.total=Bn.total),"text"===Ge.responseType&&Ht.responseText&&(Wn.partialText=Ht.responseText),Wt.next(Wn)},Kn=Bn=>{let Wn={type:K.UploadProgress,loaded:Bn.loaded};Bn.lengthComputable&&(Wn.total=Bn.total),Wt.next(Wn)};return Ht.addEventListener("load",$t),Ht.addEventListener("error",qn),Ht.addEventListener("timeout",qn),Ht.addEventListener("abort",qn),Ge.reportProgress&&(Ht.addEventListener("progress",hi),null!==hn&&Ht.upload&&Ht.upload.addEventListener("progress",Kn)),Ht.send(hn),Wt.next({type:K.Sent}),()=>{Ht.removeEventListener("error",qn),Ht.removeEventListener("abort",qn),Ht.removeEventListener("load",$t),Ht.removeEventListener("timeout",qn),Ge.reportProgress&&(Ht.removeEventListener("progress",hi),null!==hn&&Ht.upload&&Ht.upload.removeEventListener("progress",Kn)),Ht.readyState!==Ht.DONE&&Ht.abort()}})))}static \u0275fac=function(gt){return new(gt||Ve)(c.KVO(h.N0))};static \u0275prov=c.jDH({token:Ve,factory:Ve.\u0275fac})}return Ve})();const lt=new c.nKC(""),He=new c.nKC("",{providedIn:"root",factory:()=>"XSRF-TOKEN"}),Lt=new c.nKC("",{providedIn:"root",factory:()=>"X-XSRF-TOKEN"});class Ut{}let Un=(()=>{class Ve{doc;platform;cookieName;lastCookieString="";lastToken=null;parseCount=0;constructor(Ge,gt,wt){this.doc=Ge,this.platform=gt,this.cookieName=wt}getToken(){if("server"===this.platform)return null;const Ge=this.doc.cookie||"";return Ge!==this.lastCookieString&&(this.parseCount++,this.lastToken=(0,h._b)(Ge,this.cookieName),this.lastCookieString=Ge),this.lastToken}static \u0275fac=function(gt){return new(gt||Ve)(c.KVO(h.qQ),c.KVO(c.Agw),c.KVO(He))};static \u0275prov=c.jDH({token:Ve,factory:Ve.\u0275fac})}return Ve})();function pt(Ve,ze){const Ge=Ve.url.toLowerCase();if(!(0,c.WQX)(lt)||"GET"===Ve.method||"HEAD"===Ve.method||Ge.startsWith("http://")||Ge.startsWith("https://"))return ze(Ve);const gt=(0,c.WQX)(Ut).getToken(),wt=(0,c.WQX)(Lt);return null!=gt&&!Ve.headers.has(wt)&&(Ve=Ve.clone({headers:Ve.headers.set(wt,gt)})),ze(Ve)}var We=function(Ve){return Ve[Ve.Interceptors=0]="Interceptors",Ve[Ve.LegacyInterceptors=1]="LegacyInterceptors",Ve[Ve.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",Ve[Ve.NoXsrfProtection=3]="NoXsrfProtection",Ve[Ve.JsonpSupport=4]="JsonpSupport",Ve[Ve.RequestsMadeViaParent=5]="RequestsMadeViaParent",Ve[Ve.Fetch=6]="Fetch",Ve}(We||{});function bt(...Ve){const ze=[R,$e,be,{provide:u,useExisting:be},{provide:P,useFactory:()=>(0,c.WQX)(tt,{optional:!0})??(0,c.WQX)($e)},{provide:ln,useValue:pt,multi:!0},{provide:lt,useValue:!0},{provide:Ut,useClass:Un}];for(const Ge of Ve)ze.push(...Ge.\u0275providers);return(0,c.EmA)(ze)}function je(){return function it(Ve,ze){return{\u0275kind:Ve,\u0275providers:ze}}(We.Fetch,[Y,{provide:tt,useExisting:Y},{provide:P,useExisting:Y}])}const Ct=new c.nKC(""),At="b",St="h",Bt="s",Tt="st",Gt="u",zt="rt",Jt=new c.nKC(""),en=["GET","HEAD"];function dn(Ve,ze){const{isCacheActive:Ge,...gt}=(0,c.WQX)(Jt),{transferCache:wt,method:Wt}=Ve;if(!Ge||!1===wt||"POST"===Wt&&!gt.includePostRequests&&!wt||"POST"!==Wt&&!en.includes(Wt)||!gt.includeRequestsWithAuthHeaders&&function un(Ve){return Ve.headers.has("authorization")||Ve.headers.has("proxy-authorization")}(Ve)||!1===gt.filter?.(Ve))return ze(Ve);const Ht=(0,c.WQX)(c.pJN);if((0,c.WQX)(Ct,{optional:!0}))throw new c.wOt(2803,!1);const Ln=function yn(Ve,ze){const{params:Ge,method:gt,responseType:wt}=Ve,Wt=mn(Ge);let Ht=Ve.serializeBody();Ht instanceof URLSearchParams?Ht=mn(Ht):"string"!=typeof Ht&&(Ht="");const sn=function _n(Ve){let ze=0;for(const Ge of Ve)ze=Math.imul(31,ze)+Ge.charCodeAt(0)|0;return ze+=2147483648,ze.toString()}([gt,wt,ze,Ht,Wt].join("|"));return(0,c.zw6)(sn)}(Ve,Ve.url),$t=Ht.get(Ln,null);let qn=gt.includeHeaders;if("object"==typeof wt&&wt.includeHeaders&&(qn=wt.includeHeaders),$t){const{[At]:Qn,[zt]:hi,[St]:Kn,[Bt]:Bn,[Tt]:Wn,[Gt]:pn}=$t;let wn=Qn;switch(hi){case"arraybuffer":wn=(new TextEncoder).encode(Qn).buffer;break;case"blob":wn=new Blob([Qn])}let ti=new T(Kn);return(0,O.of)(new I({body:wn,headers:ti,status:Bn,statusText:Wn,url:pn}))}return ze(Ve).pipe((0,y.M)(Qn=>{}))}function mn(Ve){return[...Ve.keys()].sort().map(ze=>`${ze}=${Ve.getAll(ze)}`).join("&")}function Mn(Ve){return[{provide:Jt,useFactory:()=>((0,c.ngT)("NgHttpTransferCache"),{isCacheActive:!0,...Ve})},{provide:Ot,useValue:dn,multi:!0,deps:[c.pJN,Jt]},{provide:c.iLQ,multi:!0,useFactory:()=>{const ze=(0,c.WQX)(c.o8S),Ge=(0,c.WQX)(Jt);return()=>{ze.whenStable().then(()=>{Ge.isCacheActive=!1})}}}]}},4438:(ut,Ie,a)=>{"use strict";function c(e,t){return Object.is(e,t)}a.d(Ie,{bc$:()=>AD,iLQ:()=>Ol,sZ2:()=>Xs,hnV:()=>Df,o8S:()=>jr,BIS:()=>OD,gRc:()=>gE,Ql9:()=>P1,Ocv:()=>V1,abz:()=>Po,Z63:()=>Zi,aKT:()=>Ka,uvJ:()=>ir,zcH:()=>Fo,bkB:()=>ko,ES_:()=>zC,$GK:()=>bn,nKC:()=>qt,zZn:()=>zi,_q3:()=>bp,MKu:()=>Ep,xe9:()=>pp,Co$:()=>Yv,Vns:()=>ws,SKi:()=>_i,Xx1:()=>yi,Agw:()=>Ru,PLl:()=>Ou,rOR:()=>Vm,sFG:()=>ew,_9s:()=>zh,czy:()=>zc,WPN:()=>Cs,kdw:()=>Ei,C4Q:()=>ml,NYb:()=>lT,giA:()=>S0,pJN:()=>$o,RxE:()=>oE,c1b:()=>id,gXe:()=>Lo,mal:()=>qa,Tzd:()=>mg,L39:()=>GR,EWP:()=>Pa,sbv:()=>kw,a0P:()=>gP,Ol2:()=>df,w6W:()=>$w,QZP:()=>Ip,Rfq:()=>Lt,WQX:()=>an,hFB:()=>oD,naY:()=>Z1,Hps:()=>xu,QuC:()=>Ji,EmA:()=>Lr,zw6:()=>ND,Udg:()=>KR,HJs:()=>_P,N4e:()=>Us,vPA:()=>Iu,O8t:()=>is,An2:()=>mo,H3F:()=>y0,H8p:()=>ur,KH2:()=>Aa,Ua0:()=>No,wOt:()=>rt,WHO:()=>M0,e01:()=>w0,Lf2:()=>Qs,lNU:()=>Ot,PpM:()=>zs,h9k:()=>Zg,$MX:()=>Lc,ZF7:()=>sa,Kcf:()=>Ix,e5t:()=>Tx,UyX:()=>wx,cWb:()=>Mx,osQ:()=>Sx,H5H:()=>$f,Zy3:()=>ce,mq5:()=>vy,JZv:()=>kt,TL3:()=>CR,LfX:()=>en,plB:()=>Qo,jNT:()=>Cf,zjR:()=>T0,ngT:()=>Gi,hVU:()=>aT,TL$:()=>SD,Tbb:()=>lt,zUL:()=>He,rcV:()=>Bo,M8M:()=>$R,nM4:()=>o0,Vt3:()=>hf,GFd:()=>d0,OA$:()=>nc,Jv_:()=>Sb,R7$:()=>b_,BMQ:()=>Sf,HbH:()=>ty,ZvI:()=>ly,AVh:()=>kf,vxM:()=>hy,wni:()=>qy,C6U:()=>ib,VBU:()=>Zv,FsC:()=>qv,jDH:()=>Tt,G2t:()=>zt,$C:()=>uf,EJ8:()=>e0,rXU:()=>ma,nrm:()=>Vf,eu8:()=>jf,bVm:()=>yd,qex:()=>vd,k0s:()=>_d,j41:()=>gd,RV6:()=>_y,xGo:()=>ym,Mr5:()=>Wf,KVO:()=>fi,kS0:()=>mc,QTQ:()=>vv,bIt:()=>Kf,lsd:()=>nb,joV:()=>nm,qSk:()=>tm,XpG:()=>Wy,nI1:()=>Ub,bMT:()=>Vb,i5U:()=>jb,brH:()=>Wb,SdG:()=>$y,NAR:()=>Hy,Y8G:()=>Rf,FS9:()=>Qf,lJ4:()=>Ab,eq3:()=>Ob,l_i:()=>Rb,sMw:()=>Pb,NyB:()=>rb,mGM:()=>tb,sdS:()=>ob,Dyx:()=>py,Z7z:()=>fy,Njj:()=>Hp,EBC:()=>a_,tSv:()=>s_,eBV:()=>Wp,npT:()=>Jg,n$t:()=>t_,xc7:()=>Nf,Kam:()=>Xf,zvX:()=>Hf,DNE:()=>mf,C5r:()=>Hb,EFF:()=>mb,JRh:()=>qf,SpI:()=>xd,Lme:()=>ep,DH7:()=>xb,mxI:()=>np,R50:()=>tp,GBs:()=>eb}),a(467);let O=null,d=!1,w=1;const C=Symbol("SIGNAL");function x(e){const t=O;return O=e,t}const y={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:"unknown",producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function h(e){if(d)throw new Error("");if(null===O)return;O.consumerOnSignalRead(e);const t=O.nextProducerIndex++;Ae(O),te.nextProducerIndex;)e.producerNode.pop(),e.producerLastReadVersion.pop(),e.producerIndexOfThis.pop()}}function Z(e){Ae(e);for(let t=0;t0}function Ae(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producerLastReadVersion??=[]}function ke(e){e.liveConsumerNode??=[],e.liveConsumerIndexOfThis??=[]}function Ue(e){return void 0!==e.producerNode}function ve(e){const t=Object.create(te);t.computation=e;const n=()=>{if(P(t),h(t),t.value===z)throw t.error;return t.value};return n[C]=t,n}const ye=Symbol("UNSET"),Se=Symbol("COMPUTING"),z=Symbol("ERRORED"),te={...y,value:ye,dirty:!0,error:null,equal:c,kind:"computed",producerMustRecompute:e=>e.value===ye||e.value===Se,producerRecomputeValue(e){if(e.value===Se)throw new Error("Detected cycle in computations.");const t=e.value;e.value=Se;const n=de(e);let i,r=!1;try{i=e.computation(),x(null),r=t!==ye&&t!==z&&i!==z&&e.equal(t,i)}catch(s){i=z,e.error=s}finally{ie(e,n)}r?e.value=t:(e.value=i,e.version++)}};let q=function L(){throw new Error};function J(){q()}let K=null;function M(e,t){E()||J(),e.equal(e.value,t)||(e.value=t,function oe(e){e.version++,function u(){w++}(),T(e),K?.()}(e))}const Me={...y,equal:c,value:void 0,kind:"signal"};const Re=()=>{},De={...y,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!1,consumerMarkedDirty:e=>{null!==e.schedule&&e.schedule(e.ref)},hasRun:!1,cleanupFn:Re};var ht=a(4412),jt=a(1413),Nt=a(8359),on=a(6354);const Ot="https://g.co/ng/security#xss";class rt extends Error{code;constructor(t,n){super(ce(t,n)),this.code=t}}function ce(e,t){return`NG0${Math.abs(e)}${t?": "+t:""}`}const ee=Symbol("InputSignalNode#UNSET"),re={...Me,transformFn:void 0,applyValueToInputSignal(e,t){M(e,t)}};function ft(e,t){const n=Object.create(re);function i(){if(h(n),n.value===ee)throw new rt(-950,!1);return n.value}return n.value=e,n.transformFn=t?.transform,i[C]=n,i}function le(e){return{toString:e}.toString()}const Be="__parameters__";function It(e,t,n){return le(()=>{const i=function ot(e){return function(...n){if(e){const i=e(...n);for(const r in i)this[r]=i[r]}}}(t);function r(...s){if(this instanceof r)return i.apply(this,s),this;const l=new r(...s);return f.annotation=l,f;function f(v,G,me){const Pe=v.hasOwnProperty(Be)?v[Be]:Object.defineProperty(v,Be,{value:[]})[Be];for(;Pe.length<=me;)Pe.push(null);return(Pe[me]=Pe[me]||[]).push(l),v}}return n&&(r.prototype=Object.create(n.prototype)),r.prototype.ngMetadataName=e,r.annotationCls=r,r})}const kt=globalThis;function nn(e){for(let t in e)if(e[t]===nn)return t;throw Error("Could not find renamed property on target object.")}function $e(e,t){for(const n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n])}function lt(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(lt).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const t=e.toString();if(null==t)return""+t;const n=t.indexOf("\n");return-1===n?t:t.substring(0,n)}function Te(e,t){return null==e||""===e?null===t?"":t:null==t||""===t?e:e+" "+t}function He(e,t=100){if(!e||t<1||e.length<=t)return e;if(1==t)return e.substring(0,1)+"...";const n=Math.round(t/2);return e.substring(0,n)+"..."+e.substring(e.length-n)}const at=nn({__forward_ref__:nn});function Lt(e){return e.__forward_ref__=Lt,e.toString=function(){return lt(this())},e}function Ut(e){return Un(e)?e():e}function Un(e){return"function"==typeof e&&e.hasOwnProperty(at)&&e.__forward_ref__===Lt}function Tt(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function zt(e){return{providers:e.providers||[],imports:e.imports||[]}}function Jt(e){return dn(e,mn)||dn(e,_n)}function en(e){return null!==Jt(e)}function dn(e,t){return e.hasOwnProperty(t)?e[t]:null}function tn(e){return e&&(e.hasOwnProperty(yn)||e.hasOwnProperty(Mn))?e[yn]:null}const mn=nn({\u0275prov:nn}),yn=nn({\u0275inj:nn}),_n=nn({ngInjectableDef:nn}),Mn=nn({ngInjectorDef:nn});class qt{_desc;ngMetadataName="InjectionToken";\u0275prov;constructor(t,n){this._desc=t,this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=Tt({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function Ln(e){return e&&!!e.\u0275providers}const $t=nn({\u0275cmp:nn}),qn=nn({\u0275dir:nn}),Qn=nn({\u0275pipe:nn}),hi=nn({\u0275mod:nn}),Kn=nn({\u0275fac:nn}),Bn=nn({__NG_ELEMENT_ID__:nn}),Wn=nn({__NG_ENV_ID__:nn});function pn(e){return"string"==typeof e?e:null==e?"":String(e)}function Rr(e,t){throw new rt(-201,!1)}var bn=function(e){return e[e.Default=0]="Default",e[e.Host=1]="Host",e[e.Self=2]="Self",e[e.SkipSelf=4]="SkipSelf",e[e.Optional=8]="Optional",e}(bn||{});let Wr;function pr(){return Wr}function li(e){const t=Wr;return Wr=e,t}function tr(e,t,n){const i=Jt(e);return i&&"root"==i.providedIn?void 0===i.value?i.value=i.factory():i.value:n&bn.Optional?null:void 0!==t?t:void Rr()}const ji={},oi="__NG_DI_FLAG__",wi="ngTempTokenPath",ro=/\n/gm,Yi="__source";let Wi;function lr(e){const t=Wi;return Wi=e,t}function kr(e,t=bn.Default){if(void 0===Wi)throw new rt(-203,!1);return null===Wi?tr(e,void 0,t):Wi.get(e,t&bn.Optional?null:void 0,t)}function fi(e,t=bn.Default){return(pr()||kr)(Ut(e),t)}function an(e,t=bn.Default){return fi(e,mr(t))}function mr(e){return typeof e>"u"||"number"==typeof e?e:(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Hi(e){const t=[];for(let n=0;nArray.isArray(n)?ci(n,t):t(n))}function Ai(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function $r(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function Bi(e,t,n){let i=dr(e,t);return i>=0?e[1|i]=n:(i=~i,function zr(e,t,n,i){let r=e.length;if(r==t)e.push(n,i);else if(1===r)e.push(i,e[0]),e[0]=n;else{for(r--,e.push(e[r-1],e[r]);r>t;)e[r]=e[r-2],r--;e[t]=n,e[t+1]=i}}(e,i,t,n)),i}function Fr(e,t){const n=dr(e,t);if(n>=0)return e[1|n]}function dr(e,t){return function rs(e,t,n){let i=0,r=e.length>>n;for(;r!==i;){const s=i+(r-i>>1),l=e[s<t?r=s:i=s+1}return~(r<{n.push(l)};return ci(t,l=>{const f=l;st(f,s,[],i)&&(r||=[],r.push(f))}),void 0!==r&&Ne(r,s),n}function Ne(e,t){for(let n=0;n{t(s,i)})}}function st(e,t,n,i){if(!(e=Ut(e)))return!1;let r=null,s=tn(e);const l=!s&&An(e);if(s||l){if(l&&!l.standalone)return!1;r=e}else{const v=e.ngModule;if(s=tn(v),!s)return!1;r=v}const f=i.has(r);if(l){if(f)return!1;if(i.add(r),l.dependencies){const v="function"==typeof l.dependencies?l.dependencies():l.dependencies;for(const G of v)st(G,t,n,i)}}else{if(!s)return!1;{if(null!=s.imports&&!f){let G;i.add(r);try{ci(s.imports,me=>{st(me,t,n,i)&&(G||=[],G.push(me))})}finally{}void 0!==G&&Ne(G,t)}if(!f){const G=vi(r)||(()=>new r);t({provide:r,useFactory:G,deps:Fn},r),t({provide:jo,useValue:r,multi:!0},r),t({provide:Zi,useValue:()=>fi(r),multi:!0},r)}const v=s.providers;if(null!=v&&!f){const G=e;On(v,me=>{t(me,G)})}}}return r!==e&&void 0!==e.providers}function On(e,t){for(let n of e)Ln(n)&&(n=n.\u0275providers),Array.isArray(n)?On(n,t):t(n)}const Dr=nn({provide:String,useValue:nn});function Jr(e){return null!==e&&"object"==typeof e&&Dr in e}function Br(e){return"function"==typeof e}const ur=new qt(""),Ls={},Yl={};let Wo;function Do(){return void 0===Wo&&(Wo=new Zr),Wo}class ir{}class ao extends ir{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(t,n,i,r){super(),this.parent=n,this.source=i,this.scopes=r,Bs(t,l=>this.processProvider(l)),this.records.set(os,qr(void 0,this)),r.has("environment")&&this.records.set(ir,qr(void 0,this));const s=this.records.get(ur);null!=s&&"string"==typeof s.value&&this.scopes.add(s.value),this.injectorDefTypes=new Set(this.get(jo,Fn,bn.Self))}destroy(){xo(this),this._destroyed=!0;const t=x(null);try{for(const i of this._ngOnDestroyHooks)i.ngOnDestroy();const n=this._onDestroyHooks;this._onDestroyHooks=[];for(const i of n)i()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),x(t)}}onDestroy(t){return xo(this),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){xo(this);const n=lr(this),i=li(void 0);try{return t()}finally{lr(n),li(i)}}get(t,n=ji,i=bn.Default){if(xo(this),t.hasOwnProperty(Wn))return t[Wn](this);i=mr(i);const s=lr(this),l=li(void 0);try{if(!(i&bn.SkipSelf)){let v=this.records.get(t);if(void 0===v){const G=function Ql(e){return"function"==typeof e||"object"==typeof e&&e instanceof qt}(t)&&Jt(t);v=G&&this.injectableDefInScope(G)?qr(ss(t),Ls):null,this.records.set(t,v)}if(null!=v)return this.hydrate(t,v)}return(i&bn.Self?Do():this.parent).get(t,n=i&bn.Optional&&n===ji?null:n)}catch(f){if("NullInjectorError"===f.name){if((f[wi]=f[wi]||[]).unshift(lt(t)),s)throw f;return function Cr(e,t,n,i){const r=e[wi];throw t[Yi]&&r.unshift(t[Yi]),e.message=function Hr(e,t,n,i=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let r=lt(t);if(Array.isArray(t))r=t.map(lt).join(" -> ");else if("object"==typeof t){let s=[];for(let l in t)if(t.hasOwnProperty(l)){let f=t[l];s.push(l+":"+("string"==typeof f?JSON.stringify(f):lt(f)))}r=`{${s.join(", ")}}`}return`${n}${i?"("+i+")":""}[${r}]: ${e.replace(ro,"\n ")}`}("\n"+e.message,r,n,i),e.ngTokenPath=r,e[wi]=null,e}(f,t,"R3InjectorError",this.source)}throw f}finally{li(l),lr(s)}}resolveInjectorInitializers(){const t=x(null),n=lr(this),i=li(void 0);try{const s=this.get(Zi,Fn,bn.Self);for(const l of s)l()}finally{lr(n),li(i),x(t)}}toString(){const t=[],n=this.records;for(const i of n.keys())t.push(lt(i));return`R3Injector[${t.join(", ")}]`}processProvider(t){let n=Br(t=Ut(t))?t:Ut(t&&t.provide);const i=function ls(e){return Jr(e)?qr(void 0,e.useValue):qr(cs(e),Ls)}(t);if(!Br(t)&&!0===t.multi){let r=this.records.get(n);r||(r=qr(void 0,Ls,!0),r.factory=()=>Hi(r.multi),this.records.set(n,r)),n=t,r.multi.push(t)}this.records.set(n,i)}hydrate(t,n){const i=x(null);try{return n.value===Ls&&(n.value=Yl,n.value=n.factory()),"object"==typeof n.value&&n.value&&function ds(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{x(i)}}injectableDefInScope(t){if(!t.providedIn)return!1;const n=Ut(t.providedIn);return"string"==typeof n?"any"===n||this.scopes.has(n):this.injectorDefTypes.has(n)}removeOnDestroy(t){const n=this._onDestroyHooks.indexOf(t);-1!==n&&this._onDestroyHooks.splice(n,1)}}function ss(e){const t=Jt(e),n=null!==t?t.factory:vi(e);if(null!==n)return n;if(e instanceof qt)throw new rt(204,!1);if(e instanceof Function)return function as(e){if(e.length>0)throw new rt(204,!1);const n=function un(e){return e&&(e[mn]||e[_n])||null}(e);return null!==n?()=>n.factory(e):()=>new e}(e);throw new rt(204,!1)}function cs(e,t,n){let i;if(Br(e)){const r=Ut(e);return vi(r)||ss(r)}if(Jr(e))i=()=>Ut(e.useValue);else if(function Fs(e){return!(!e||!e.useFactory)}(e))i=()=>e.useFactory(...Hi(e.deps||[]));else if(function Gr(e){return!(!e||!e.useExisting)}(e))i=()=>fi(Ut(e.useExisting));else{const r=Ut(e&&(e.useClass||e.provide));if(!function lo(e){return!!e.deps}(e))return vi(r)||ss(r);i=()=>new r(...Hi(e.deps))}return i}function xo(e){if(e.destroyed)throw new rt(205,!1)}function qr(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Bs(e,t){for(const n of e)Array.isArray(n)?Bs(n,t):n&&Ln(n)?Bs(n.\u0275providers,t):t(n)}function Us(e,t){e instanceof ao&&xo(e);const i=lr(e),r=li(void 0);try{return t()}finally{lr(i),li(r)}}function ka(){return void 0!==pr()||null!=function Er(){return Wi}()}function Io(e){if(!ka())throw new rt(-203,!1)}const Hn=0,Kt=1,vn=2,ii=3,Ri=4,Pi=5,Ni=6,co=7,Xn=8,ri=9,xr=10,En=11,S=12,we=13,$=14,ue=15,Xe=16,Dt=17,Rt=18,cn=19,$n=20,Gn=21,Yn=22,Pn=23,Vn=24,Vt=25,pi=1,Ui=6,mi=7,rr=9,ei=10;function Jn(e){return Array.isArray(e)&&"object"==typeof e[pi]}function si(e){return Array.isArray(e)&&!0===e[pi]}function So(e){return!!(4&e.flags)}function Vi(e){return e.componentOffset>-1}function ps(e){return!(1&~e.flags)}function Mr(e){return!!e.template}function Kr(e){return!!(512&e[vn])}function To(e){return!(256&~e[vn])}class Kd{previousValue;currentValue;firstChange;constructor(t,n,i){this.previousValue=t,this.currentValue=n,this.firstChange=i}isFirstChange(){return this.firstChange}}function Xd(e,t,n,i){null!==t?t.applyValueToInputSignal(t,i):e[n]=i}const nc=(()=>{const e=()=>Ba;return e.ngInherit=!0,e})();function Ba(e){return e.type.prototype.ngOnChanges&&(e.setInput=Lp),Yd}function Yd(){const e=Zd(this),t=e?.current;if(t){const n=e.previous;if(n===$i)e.previous=t;else for(let i in t)n[i]=t[i];e.current=null,this.ngOnChanges(t)}}function Lp(e,t,n,i,r){const s=this.declaredInputs[i],l=Zd(e)||function Bp(e,t){return e[Qd]=t}(e,{previous:$i,current:null}),f=l.current||(l.current={}),v=l.previous,G=v[s];f[s]=new Kd(G&&G.currentValue,n,v===$i),Xd(e,t,r,n)}const Qd="__ngSimpleChanges__";function Zd(e){return e[Qd]||null}const wr=function(e,t,n){},m="svg";function _(e){for(;Array.isArray(e);)e=e[Hn];return e}function fe(e,t){return _(t[e])}function Fe(e,t){return _(t[e.index])}function Et(e,t){return e.data[t]}function yt(e,t){return e[t]}function Yt(e,t){const n=t[e];return Jn(n)?n:n[Hn]}function Rn(e){return!(128&~e[vn])}function bi(e,t){return null==t?null:e[t]}function qi(e){e[Dt]=0}function Xr(e){1024&e[vn]||(e[vn]|=1024,Rn(e)&&ho(e))}function uo(e){return!!(9216&e[vn]||e[Vn]?.dirty)}function Ua(e){e[xr].changeDetectionScheduler?.notify(9),64&e[vn]&&(e[vn]|=1024),uo(e)&&ho(e)}function ho(e){e[xr].changeDetectionScheduler?.notify(0);let t=Ao(e);for(;null!==t&&!(8192&t[vn])&&(t[vn]|=8192,Rn(t));)t=Ao(t)}function rc(e,t){if(To(e))throw new rt(911,!1);null===e[Gn]&&(e[Gn]=[]),e[Gn].push(t)}function Ao(e){const t=e[ii];return si(t)?t[ii]:t}function Vp(e){return e[co]??=[]}function jp(e){return e.cleanup??=[]}const Tn={lFrame:Jp(null),bindingsEnabled:!0,skipHydrationRootTNode:null};let eu=!1;function sc(){return Tn.bindingsEnabled}function gs(){return null!==Tn.skipHydrationRootTNode}function xt(){return Tn.lFrame.lView}function Sn(){return Tn.lFrame.tView}function Wp(e){return Tn.lFrame.contextLView=e,e[Xn]}function Hp(e){return Tn.lFrame.contextLView=null,e}function jn(){let e=$p();for(;null!==e&&64===e.type;)e=e.parent;return e}function $p(){return Tn.lFrame.currentTNode}function eo(e,t){const n=Tn.lFrame;n.currentTNode=e,n.isParent=t}function tu(){return Tn.lFrame.isParent}function nu(){Tn.lFrame.isParent=!1}function Kp(){return eu}function ac(e){const t=eu;return eu=e,t}function gr(){const e=Tn.lFrame;let t=e.bindingRootIndex;return-1===t&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function Yr(){return Tn.lFrame.bindingIndex++}function Ro(e){const t=Tn.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}function gC(e,t){const n=Tn.lFrame;n.bindingIndex=n.bindingRootIndex=e,iu(t)}function iu(e){Tn.lFrame.currentDirectiveIndex=e}function ru(e){const t=Tn.lFrame.currentDirectiveIndex;return-1===t?null:e[t]}function ou(){return Tn.lFrame.currentQueryIndex}function lc(e){Tn.lFrame.currentQueryIndex=e}function vC(e){const t=e[Kt];return 2===t.type?t.declTNode:1===t.type?e[Pi]:null}function Qp(e,t,n){if(n&bn.SkipSelf){let r=t,s=e;for(;!(r=r.parent,null!==r||n&bn.Host||(r=vC(s),null===r||(s=s[$],10&r.type))););if(null===r)return!1;t=r,e=s}const i=Tn.lFrame=Zp();return i.currentTNode=t,i.lView=e,!0}function su(e){const t=Zp(),n=e[Kt];Tn.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function Zp(){const e=Tn.lFrame,t=null===e?null:e.child;return null===t?Jp(e):t}function Jp(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}function qp(){const e=Tn.lFrame;return Tn.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const em=qp;function au(){const e=qp();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function or(){return Tn.lFrame.selectedIndex}function _s(e){Tn.lFrame.selectedIndex=e}function ai(){const e=Tn.lFrame;return Et(e.tView,e.selectedIndex)}function tm(){Tn.lFrame.currentNamespace=m}function nm(){!function EC(){Tn.lFrame.currentNamespace=null}()}function im(){return Tn.lFrame.currentNamespace}let rm=!0;function ja(){return rm}function fo(e){rm=e}function lu(e,t){for(let n=t.directiveStart,i=t.directiveEnd;n=i)break}else t[v]<0&&(e[Dt]+=65536),(f>14>16&&(3&e[vn])===t&&(e[vn]+=16384,sm(f,s)):sm(f,s)}const Hs=-1;class Wa{factory;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(t,n,i){this.factory=t,this.canSeeViewProviders=n,this.injectImpl=i}}function am(e){return 3===e||4===e||6===e}function lm(e){return 64===e.charCodeAt(0)}function $s(e,t){if(null!==t&&0!==t.length)if(null===e||0===e.length)e=t.slice();else{let n=-1;for(let i=0;it){l=s-1;break}}}for(;s>16}(e),i=t;for(;n>0;)i=i[$],n--;return i}let pu=!0;function uc(e){const t=pu;return pu=e,t}const dm=255,um=5;let OC=0;const po={};function hc(e,t){const n=hm(e,t);if(-1!==n)return n;const i=t[Kt];i.firstCreatePass&&(e.injectorIndex=t.length,mu(i.data,e),mu(t,null),mu(i.blueprint,null));const r=fc(e,t),s=e.injectorIndex;if(fu(r)){const l=Ha(r),f=$a(r,t),v=f[Kt].data;for(let G=0;G<8;G++)t[s+G]=f[l+G]|v[l+G]}return t[s+8]=r,s}function mu(e,t){e.push(0,0,0,0,0,0,0,0,t)}function hm(e,t){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===t[e.injectorIndex+8]?-1:e.injectorIndex}function fc(e,t){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let n=0,i=null,r=t;for(;null!==r;){if(i=bm(r),null===i)return Hs;if(n++,r=r[$],-1!==i.injectorIndex)return i.injectorIndex|n<<16}return Hs}function gu(e,t,n){!function RC(e,t,n){let i;"string"==typeof n?i=n.charCodeAt(0)||0:n.hasOwnProperty(Bn)&&(i=n[Bn]),null==i&&(i=n[Bn]=OC++);const r=i&dm;t.data[e+(r>>um)]|=1<=0?t&dm:FC:t}(n);if("function"==typeof s){if(!Qp(t,e,i))return i&bn.Host?fm(r,0,i):pm(t,n,i,r);try{let l;if(l=s(i),null!=l||i&bn.Optional)return l;Rr()}finally{em()}}else if("number"==typeof s){let l=null,f=hm(e,t),v=Hs,G=i&bn.Host?t[ue][Pi]:null;for((-1===f||i&bn.SkipSelf)&&(v=-1===f?fc(e,t):t[f+8],v!==Hs&&vm(i,!1)?(l=t[Kt],f=Ha(v),t=$a(v,t)):f=-1);-1!==f;){const me=t[Kt];if(_m(s,f,me.data)){const Pe=NC(f,t,n,l,i,G);if(Pe!==po)return Pe}v=t[f+8],v!==Hs&&vm(i,t[Kt].data[f+8]===G)&&_m(s,f,t)?(l=me,f=Ha(v),t=$a(v,t)):f=-1}}return r}function NC(e,t,n,i,r,s){const l=t[Kt],f=l.data[e+8],me=pc(f,l,n,null==i?Vi(f)&&pu:i!=l&&!!(3&f.type),r&bn.Host&&s===f);return null!==me?za(t,l,me,f):po}function pc(e,t,n,i,r){const s=e.providerIndexes,l=t.data,f=1048575&s,v=e.directiveStart,me=s>>20,Qe=r?f+me:e.directiveEnd;for(let et=i?f:f+me;et=v&&vt.type===n)return et}if(r){const et=l[v];if(et&&Mr(et)&&et.type===n)return v}return null}function za(e,t,n,i){let r=e[n];const s=t.data;if(function xC(e){return e instanceof Wa}(r)){const l=r;l.resolving&&function hr(e,t){throw t&&t.join(" > "),new rt(-200,e)}(function wn(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():pn(e)}(s[n]));const f=uc(l.canSeeViewProviders);l.resolving=!0;const G=l.injectImpl?li(l.injectImpl):null;Qp(e,i,bn.Default);try{r=e[n]=l.factory(void 0,s,e,i),t.firstCreatePass&&n>=i.directiveStart&&function CC(e,t,n){const{ngOnChanges:i,ngOnInit:r,ngDoCheck:s}=t.type.prototype;if(i){const l=Ba(t);(n.preOrderHooks??=[]).push(e,l),(n.preOrderCheckHooks??=[]).push(e,l)}r&&(n.preOrderHooks??=[]).push(0-e,r),s&&((n.preOrderHooks??=[]).push(e,s),(n.preOrderCheckHooks??=[]).push(e,s))}(n,s[n],t)}finally{null!==G&&li(G),uc(f),l.resolving=!1,em()}}return r}function _m(e,t,n){return!!(n[t+(e>>um)]&1<{const t=e.prototype.constructor,n=t[Kn]||_u(t),i=Object.prototype;let r=Object.getPrototypeOf(e.prototype).constructor;for(;r&&r!==i;){const s=r[Kn]||_u(r);if(s&&s!==n)return s;r=Object.getPrototypeOf(r)}return s=>new s})}function _u(e){return Un(e)?()=>{const t=_u(Ut(e));return t&&t()}:vi(e)}function bm(e){const t=e[Kt],n=t.type;return 2===n?t.declTNode:1===n?e[Pi]:null}function mc(e){return function PC(e,t){if("class"===t)return e.classes;if("style"===t)return e.styles;const n=e.attrs;if(n){const i=n.length;let r=0;for(;rfi(os)});static __NG_ELEMENT_ID__=-1}class zC{attributeName;constructor(t){this.attributeName=t}__NG_ELEMENT_ID__=()=>mc(this.attributeName);toString(){return`HostAttributeToken ${this.attributeName}`}}new qt("").__NG_ELEMENT_ID__=e=>{const t=jn();if(null===t)throw new rt(204,!1);if(2&t.type)return t.value;if(e&bn.Optional)return null;throw new rt(204,!1)};const wm=!1;let Po=(()=>class e{static __NG_ELEMENT_ID__=KC;static __NG_ENV_ID__=n=>n})();class Sm extends Po{_lView;constructor(t){super(),this._lView=t}onDestroy(t){return rc(this._lView,t),()=>function Jd(e,t){if(null===e[Gn])return;const n=e[Gn].indexOf(t);-1!==n&&e[Gn].splice(n,1)}(this._lView,t)}}function KC(){return new Sm(xt())}class mo{}const zs=new qt("",{providedIn:"root",factory:()=>!1}),Tm=new qt(""),yu=new qt("");let No=(()=>{class e{taskId=0;pendingTasks=new Set;get _hasPendingTasks(){return this.hasPendingTasks.value}hasPendingTasks=new ht.t(!1);add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);const n=this.taskId++;return this.pendingTasks.add(n),n}has(n){return this.pendingTasks.has(n)}remove(n){this.pendingTasks.delete(n),0===this.pendingTasks.size&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static \u0275prov=Tt({token:e,providedIn:"root",factory:()=>new e})}return e})();const ko=class YC extends jt.B{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(t=!1){super(),this.__isAsync=t,ka()&&(this.destroyRef=an(Po,{optional:!0})??void 0,this.pendingTasks=an(No,{optional:!0})??void 0)}emit(t){const n=x(null);try{super.next(t)}finally{x(n)}}subscribe(t,n,i){let r=t,s=n||(()=>null),l=i;if(t&&"object"==typeof t){const v=t;r=v.next?.bind(v),s=v.error?.bind(v),l=v.complete?.bind(v)}this.__isAsync&&(s=this.wrapInTimeout(s),r&&(r=this.wrapInTimeout(r)),l&&(l=this.wrapInTimeout(l)));const f=super.subscribe({next:r,error:s,complete:l});return t instanceof Nt.yU&&t.add(f),f}wrapInTimeout(t){return n=>{const i=this.pendingTasks?.add();setTimeout(()=>{t(n),void 0!==i&&this.pendingTasks?.remove(i)})}}};function Ga(...e){}function Am(e){let t,n;function i(){e=Ga;try{void 0!==n&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(n),void 0!==t&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),i()}),"function"==typeof requestAnimationFrame&&(n=requestAnimationFrame(()=>{e(),i()})),()=>i()}function Om(e){return queueMicrotask(()=>e()),()=>{e=Ga}}const bu="isAngularZone",_c=bu+"_ID";let QC=0;class _i{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new ko(!1);onMicrotaskEmpty=new ko(!1);onStable=new ko(!1);onError=new ko(!1);constructor(t){const{enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:i=!1,shouldCoalesceRunChangeDetection:r=!1,scheduleInRootZone:s=wm}=t;if(typeof Zone>"u")throw new rt(908,!1);Zone.assertZonePatched();const l=this;l._nesting=0,l._outer=l._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(l._inner=l._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(l._inner=l._inner.fork(Zone.longStackTraceZoneSpec)),l.shouldCoalesceEventChangeDetection=!r&&i,l.shouldCoalesceRunChangeDetection=r,l.callbackScheduled=!1,l.scheduleInRootZone=s,function qC(e){const t=()=>{!function JC(e){function t(){Am(()=>{e.callbackScheduled=!1,Cu(e),e.isCheckStableRunning=!0,Eu(e),e.isCheckStableRunning=!1})}e.isCheckStableRunning||e.callbackScheduled||(e.callbackScheduled=!0,e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Cu(e))}(e)},n=QC++;e._inner=e._inner.fork({name:"angular",properties:{[bu]:!0,[_c]:n,[_c+n]:!0},onInvokeTask:(i,r,s,l,f,v)=>{if(function eD(e){return Nm(e,"__ignore_ng_zone__")}(v))return i.invokeTask(s,l,f,v);try{return Rm(e),i.invokeTask(s,l,f,v)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===l.type||e.shouldCoalesceRunChangeDetection)&&t(),Pm(e)}},onInvoke:(i,r,s,l,f,v,G)=>{try{return Rm(e),i.invoke(s,l,f,v,G)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!function tD(e){return Nm(e,"__scheduler_tick__")}(v)&&t(),Pm(e)}},onHasTask:(i,r,s,l)=>{i.hasTask(s,l),r===s&&("microTask"==l.change?(e._hasPendingMicrotasks=l.microTask,Cu(e),Eu(e)):"macroTask"==l.change&&(e.hasPendingMacrotasks=l.macroTask))},onHandleError:(i,r,s,l)=>(i.handleError(s,l),e.runOutsideAngular(()=>e.onError.emit(l)),!1)})}(l)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get(bu)}static assertInAngularZone(){if(!_i.isInAngularZone())throw new rt(909,!1)}static assertNotInAngularZone(){if(_i.isInAngularZone())throw new rt(909,!1)}run(t,n,i){return this._inner.run(t,n,i)}runTask(t,n,i,r){const s=this._inner,l=s.scheduleEventTask("NgZoneEvent: "+r,t,ZC,Ga,Ga);try{return s.runTask(l,n,i)}finally{s.cancelTask(l)}}runGuarded(t,n,i){return this._inner.runGuarded(t,n,i)}runOutsideAngular(t){return this._outer.run(t)}}const ZC={};function Eu(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Cu(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&!0===e.callbackScheduled)}function Rm(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Pm(e){e._nesting--,Eu(e)}class Du{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new ko;onMicrotaskEmpty=new ko;onStable=new ko;onError=new ko;run(t,n,i){return t.apply(n,i)}runGuarded(t,n,i){return t.apply(n,i)}runOutsideAngular(t){return t()}runTask(t,n,i,r){return t.apply(n,i)}}function Nm(e,t){return!(!Array.isArray(e)||1!==e.length)&&!0===e[0]?.data?.[t]}class Fo{_console=console;handleError(t){this._console.error("ERROR",t)}}const iD=new qt("",{providedIn:"root",factory:()=>{const e=an(_i),t=an(Fo);return n=>e.runOutsideAngular(()=>t.handleError(n))}});function Fm(e,t){return ft(e,t)}const oD=(Fm.required=function rD(e){return ft(ee,e)},Fm);function sD(){return Gs(jn(),xt())}function Gs(e,t){return new Ka(Fe(e,t))}let Ka=(()=>class e{nativeElement;constructor(n){this.nativeElement=n}static __NG_ELEMENT_ID__=sD})();function Lm(e){return e instanceof Ka?e.nativeElement:e}const Bm=new Set;function Gi(e){Bm.has(e)||(Bm.add(e),performance?.mark?.("mark_feature_usage",{detail:{feature:e}}))}function xu(e){return"function"==typeof e&&void 0!==e[C]}function Iu(e,t){Gi("NgSignals");const n=function N(e){const t=Object.create(Me);t.value=e;const n=()=>(h(t),t.value);return n[C]=t,n}(e),i=n[C];return t?.equal&&(i.equal=t.equal),n.set=r=>M(i,r),n.update=r=>function j(e,t){E()||J(),M(e,t(e.value))}(i,r),n.asReadonly=vc.bind(n),n}function vc(){const e=this[C];if(void 0===e.readonlyFn){const t=()=>this();t[C]=e,e.readonlyFn=t}return e.readonlyFn}function Um(e){return xu(e)&&"function"==typeof e.set}function aD(){return this._results[Symbol.iterator]()}class Vm{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new jt.B}constructor(t=!1){this._emitDistinctChangesOnly=t}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){this.dirty=!1;const i=function kn(e){return e.flat(Number.POSITIVE_INFINITY)}(t);(this._changesDetected=!function Ti(e,t,n){if(e.length!==t.length)return!1;for(let i=0;iTD}),TD="ng",Ou=new qt(""),Ru=new qt("",{providedIn:"platform",factory:()=>"unknown"}),AD=new qt(""),OD=new qt("",{providedIn:"root",factory:()=>go().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});function ND(e){return e}function kD(){const e=new $o;return"browser"===an(Ru)&&(e.store=function FD(e,t){const n=e.getElementById(t+"-state");if(n?.textContent)try{return JSON.parse(n.textContent)}catch(i){console.warn("Exception while restoring TransferState for app "+t,i)}return{}}(go(),an(Xs))),e}let $o=(()=>{class e{static \u0275prov=Tt({token:e,providedIn:"root",factory:kD});store={};onSerializeCallbacks={};get(n,i){return void 0!==this.store[n]?this.store[n]:i}set(n,i){this.store[n]=i}remove(n){delete this.store[n]}hasKey(n){return this.store.hasOwnProperty(n)}get isEmpty(){return 0===Object.keys(this.store).length}onSerialize(n,i){this.onSerializeCallbacks[n]=i}toJson(){for(const n in this.onSerializeCallbacks)if(this.onSerializeCallbacks.hasOwnProperty(n))try{this.store[n]=this.onSerializeCallbacks[n]()}catch(i){console.warn("Exception in onSerialize callback: ",i)}return JSON.stringify(this.store).replace(/!1});var Hu=function(e){return e[e.CHANGE_DETECTION=0]="CHANGE_DETECTION",e[e.AFTER_NEXT_RENDER=1]="AFTER_NEXT_RENDER",e}(Hu||{});const Qs=new qt("");var Zs=function(e){return e[e.EarlyRead=0]="EarlyRead",e[e.Write=1]="Write",e[e.MixedReadWrite=2]="MixedReadWrite",e[e.Read=3]="Read",e}(Zs||{});let $u=(()=>{class e{impl=null;execute(){this.impl?.execute()}static \u0275prov=Tt({token:e,providedIn:"root",factory:()=>new e})}return e})();const hg=[Zs.EarlyRead,Zs.Write,Zs.MixedReadWrite,Zs.Read];let fg=(()=>{class e{ngZone=an(_i);scheduler=an(mo);errorHandler=an(Fo,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){an(Qs,{optional:!0})}execute(){this.executing=!0;for(const n of hg)for(const i of this.sequences)if(!i.erroredOrDestroyed&&i.hooks[n])try{i.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>i.hooks[n](i.pipelinedValue),i.snapshot))}catch(r){i.erroredOrDestroyed=!0,this.errorHandler?.handleError(r)}this.executing=!1;for(const n of this.sequences)n.afterRun(),n.once&&(this.sequences.delete(n),n.destroy());for(const n of this.deferredRegistrations)this.sequences.add(n);this.deferredRegistrations.size>0&&this.scheduler.notify(8),this.deferredRegistrations.clear()}register(n){this.executing?this.deferredRegistrations.add(n):(this.sequences.add(n),this.scheduler.notify(7))}unregister(n){this.executing&&this.sequences.has(n)?(n.erroredOrDestroyed=!0,n.pipelinedValue=void 0,n.once=!0):(this.sequences.delete(n),this.deferredRegistrations.delete(n))}maybeTrace(n,i){return i?i.run(Hu.AFTER_NEXT_RENDER,n):n()}static \u0275prov=Tt({token:e,providedIn:"root",factory:()=>new e})}return e})();class pg{impl;hooks;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(t,n,i,r,s=null){this.impl=t,this.hooks=n,this.once=i,this.snapshot=s,this.unregisterOnDestroy=r?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.()}}function mg(e,t){!t?.injector&&Io();const n=t?.injector??an(zi);return Gi("NgAfterRender"),gg(e,n,t,!1)}function qa(e,t){!t?.injector&&Io();const n=t?.injector??an(zi);return Gi("NgAfterNextRender"),gg(e,n,t,!0)}function gg(e,t,n,i){const r=t.get($u);r.impl??=t.get(fg);const s=t.get(Qs,null,{optional:!0}),l=n?.phase??Zs.MixedReadWrite,f=!0!==n?.manualCleanup?t.get(Po):null,v=new pg(r.impl,function LD(e,t){if(e instanceof Function){const n=[void 0,void 0,void 0,void 0];return n[t]=e,n}return[e.earlyRead,e.write,e.mixedReadWrite,e.read]}(e,l),i,f,s?.snapshot(null));return r.impl.register(v),v}const Zu="__nghData__",rl="ngh",JD="nghm";let Ag=()=>null;function qD(e,t,n=!1){let i=e.getAttribute(rl);if(null==i)return null;const[r,s]=i.split("|");if(i=n?s:r,!i)return null;const f=n?r:s?`|${s}`:"";let v={};if(""!==i){const me=t.get($o,null,{optional:!0});null!==me&&(v=me.get(Zu,[])[Number(i)])}const G={data:v,firstChild:e.firstChild??null};return n&&(G.firstChild=e,Nc(G,0,e.nextSibling)),f?e.setAttribute(rl,f):e.removeAttribute(rl),G}function Og(e,t,n=!1){return Ag(e,t,n)}function Rg(e){let t=e._lView;return 2===t[Kt].type?null:(Kr(t)&&(t=t[Vt]),t)}function Nc(e,t,n){e.segmentHeads??={},e.segmentHeads[t]=n}function qu(e,t){return e.segmentHeads?.[t]??null}function kg(e,t){return e.data[Za]?.[t]??null}function eh(e,t){const n=kg(e,t)??[];let i=0;for(let r of n)i+=r[zo]*(r[xc]??1);return i}function bs(e,t){if(typeof e.disconnectedNodes>"u"){const n=e.data[Ja];e.disconnectedNodes=n?new Set(n):null}return!!function Fg(e){if(typeof e.disconnectedNodes>"u"){const t=e.data[Ja];e.disconnectedNodes=t?new Set(t):null}return e.disconnectedNodes}(e)?.has(t)}function Ug(e,t){const n=e.contentQueries;if(null!==n){const i=x(null);try{for(let r=0;re,createScript:e=>e,createScriptURL:e=>e})}catch{}return kc}()?.createHTML(e)||e}function oh(){if(void 0===Fc&&(Fc=null,kt.trustedTypes))try{Fc=kt.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return Fc}function Vg(e){return oh()?.createHTML(e)||e}function Wg(e){return oh()?.createScriptURL(e)||e}class Es{changingThisBreaksApplicationSecurity;constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${Ot})`}}class yx extends Es{getTypeName(){return"HTML"}}class bx extends Es{getTypeName(){return"Style"}}class Ex extends Es{getTypeName(){return"Script"}}class Cx extends Es{getTypeName(){return"URL"}}class Dx extends Es{getTypeName(){return"ResourceURL"}}function Bo(e){return e instanceof Es?e.changingThisBreaksApplicationSecurity:e}function sa(e,t){const n=function xx(e){return e instanceof Es&&e.getTypeName()||null}(e);if(null!=n&&n!==t){if("ResourceURL"===n&&"URL"===t)return!0;throw new Error(`Required a safe ${t}, got a ${n} (see ${Ot})`)}return n===t}function Ix(e){return new yx(e)}function Mx(e){return new bx(e)}function wx(e){return new Ex(e)}function Sx(e){return new Cx(e)}function Tx(e){return new Dx(e)}class Ax{inertDocumentHelper;constructor(t){this.inertDocumentHelper=t}getInertBodyElement(t){t=""+t;try{const n=(new window.DOMParser).parseFromString(oa(t),"text/html").body;return null===n?this.inertDocumentHelper.getInertBodyElement(t):(n.firstChild?.remove(),n)}catch{return null}}}class Ox{defaultDoc;inertDocument;constructor(t){this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(t){const n=this.inertDocument.createElement("template");return n.innerHTML=oa(t),n}}const Px=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Lc(e){return(e=String(e)).match(Px)?e:"unsafe:"+e}function Uo(e){const t={};for(const n of e.split(","))t[n]=!0;return t}function ll(...e){const t={};for(const n of e)for(const i in n)n.hasOwnProperty(i)&&(t[i]=!0);return t}const $g=Uo("area,br,col,hr,img,wbr"),zg=Uo("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),Gg=Uo("rp,rt"),sh=ll($g,ll(zg,Uo("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),ll(Gg,Uo("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),ll(Gg,zg)),ah=Uo("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),Kg=ll(ah,Uo("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),Uo("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),Nx=Uo("script,style,template");class kx{sanitizedSomething=!1;buf=[];sanitizeChildren(t){let n=t.firstChild,i=!0,r=[];for(;n;)if(n.nodeType===Node.ELEMENT_NODE?i=this.startElement(n):n.nodeType===Node.TEXT_NODE?this.chars(n.nodeValue):this.sanitizedSomething=!0,i&&n.firstChild)r.push(n),n=Bx(n);else for(;n;){n.nodeType===Node.ELEMENT_NODE&&this.endElement(n);let s=Lx(n);if(s){n=s;break}n=r.pop()}return this.buf.join("")}startElement(t){const n=Xg(t).toLowerCase();if(!sh.hasOwnProperty(n))return this.sanitizedSomething=!0,!Nx.hasOwnProperty(n);this.buf.push("<"),this.buf.push(n);const i=t.attributes;for(let r=0;r"),!0}endElement(t){const n=Xg(t).toLowerCase();sh.hasOwnProperty(n)&&!$g.hasOwnProperty(n)&&(this.buf.push(""))}chars(t){this.buf.push(Qg(t))}}function Lx(e){const t=e.nextSibling;if(t&&e!==t.previousSibling)throw Yg(t);return t}function Bx(e){const t=e.firstChild;if(t&&function Fx(e,t){return(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}(e,t))throw Yg(t);return t}function Xg(e){const t=e.nodeName;return"string"==typeof t?t:"FORM"}function Yg(e){return new Error(`Failed to sanitize html because the element is clobbered: ${e.outerHTML}`)}const Ux=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Vx=/([^\#-~ |!])/g;function Qg(e){return e.replace(/&/g,"&").replace(Ux,function(t){return"&#"+(1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536)+";"}).replace(Vx,function(t){return"&#"+t.charCodeAt(0)+";"}).replace(//g,">")}let Bc;function Zg(e,t){let n=null;try{Bc=Bc||function Hg(e){const t=new Ox(e);return function Rx(){try{return!!(new window.DOMParser).parseFromString(oa(""),"text/html")}catch{return!1}}()?new Ax(t):t}(e);let i=t?String(t):"";n=Bc.getInertBodyElement(i);let r=5,s=i;do{if(0===r)throw new Error("Failed to sanitize html because the input is unstable");r--,i=s,s=n.innerHTML,n=Bc.getInertBodyElement(i)}while(i!==s);return oa((new kx).sanitizeChildren(lh(n)||n))}finally{if(n){const i=lh(n)||n;for(;i.firstChild;)i.firstChild.remove()}}}function lh(e){return"content"in e&&function jx(e){return e.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===e.nodeName}(e)?e.content:null}var Cs=function(e){return e[e.NONE=0]="NONE",e[e.HTML=1]="HTML",e[e.STYLE=2]="STYLE",e[e.SCRIPT=3]="SCRIPT",e[e.URL=4]="URL",e[e.RESOURCE_URL=5]="RESOURCE_URL",e}(Cs||{});function Jg(e){const t=cl();return t?Vg(t.sanitize(Cs.HTML,e)||""):sa(e,"HTML")?Vg(Bo(e)):Zg(go(),pn(e))}function qg(e){const t=cl();return t?t.sanitize(Cs.URL,e)||"":sa(e,"URL")?Bo(e):Lc(pn(e))}function e_(e){const t=cl();if(t)return Wg(t.sanitize(Cs.RESOURCE_URL,e)||"");if(sa(e,"ResourceURL"))return Wg(Bo(e));throw new rt(904,!1)}function t_(e,t,n){return function Gx(e,t){return"src"===t&&("embed"===e||"frame"===e||"iframe"===e||"media"===e||"script"===e)||"href"===t&&("base"===e||"link"===e)?e_:qg}(t,n)(e)}function cl(){const e=xt();return e&&e[xr].sanitizer}const Kx=/^>|^->||--!>|)/g,Yx="\u200b$1\u200b";function s_(e){return e.ownerDocument.defaultView}function a_(e){return e.ownerDocument}function Vr(e){return e instanceof Function?e():e}function rI(e,t,n){let i=e.length;for(;;){const r=e.indexOf(t,n);if(-1===r)return r;if(0===r||e.charCodeAt(r-1)<=32){const s=t.length;if(r+s===i||e.charCodeAt(r+s)<=32)return r}n=r+1}}const h_="ng-template";function oI(e,t,n,i){let r=0;if(i){for(;r-1){let s;for(;++rs?"":r[me+1].toLowerCase(),2&i&&G!==Pe){if(to(i))return!1;l=!0}}}}else{if(!l&&!to(i)&&!to(v))return!1;if(l&&to(v))continue;l=!1,i=v|1&i}}return to(i)||l}function to(e){return!(1&e)}function lI(e,t,n,i){if(null===t)return-1;let r=0;if(i||!n){let s=!1;for(;r-1)for(n++;n0?'="'+f+'"':"")+"]"}else 8&i?r+="."+l:4&i&&(r+=" "+l);else""!==r&&!to(l)&&(t+=p_(s,r),r=""),i=l,s=s||!to(i);n++}return""!==r&&(t+=p_(s,r)),t}const Nn={};function hh(e,t){return e.createText(t)}function fh(e,t){return e.createComment(function n_(e){return e.replace(Kx,t=>t.replace(Xx,Yx))}(t))}function jc(e,t,n){return e.createElement(t,n)}function Ds(e,t,n,i,r){e.insertBefore(t,n,i,r)}function g_(e,t,n){e.appendChild(t,n)}function __(e,t,n,i,r){null!==i?Ds(e,t,n,i,r):g_(e,t,n)}function dl(e,t,n){e.removeChild(null,t,n)}function v_(e){e.textContent=""}function y_(e,t,n){const{mergedAttrs:i,classes:r,styles:s}=n;null!==i&&function SC(e,t,n){let i=0;for(;iVt&&E_(e,t,Vt,!1),wr(l?2:0,r),n(i,r)}finally{_s(s),wr(l?3:1,r)}}function ph(e,t,n){sc()&&(vr(Fe(n,t),t),x_(e,t,n))}function x_(e,t,n){(function MI(e,t,n){const i=n.directiveStart,r=n.directiveEnd;Vi(n)&&function TI(e,t,n){const i=Fe(t,e),r=function I_(e){const t=e.tView;return null===t||t.incompleteFirstPass?e.tView=gh(1,null,e.template,e.decls,e.vars,e.directiveDefs,e.pipeDefs,e.viewQuery,e.schemas,e.consts,e.id):t}(n),s=e[xr].rendererFactory,l=bh(e,Wc(e,r,null,vh(n),i,t,null,s.createRenderer(i,n),null,null,null));e[t.index]=l}(t,n,e.data[i+n.componentOffset]),e.firstCreatePass||hc(n,t);const s=n.initialInputs;for(let l=i;lnull;function EI(e){jm(e)?v_(e):function nx(e){const t=go(),n=t.createNodeIterator(e,NodeFilter.SHOW_COMMENT,{acceptNode(s){const l=function tx(e){return e.textContent?.replace(/\s/gm,"")}(s);return"ngetn"===l||"ngtns"===l?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}});let i;const r=[];for(;i=n.nextNode();)r.push(i);for(const s of r)"ngetn"===s.textContent?s.replaceWith(t.createTextNode("")):s.remove()}(e)}function Ar(e,t,n,i,r,s,l,f){const v=Fe(t,n);let me,G=t.inputs;!f&&null!=G&&(me=G[i])?(Eh(e,n,me,i,r),Vi(t)&&function xI(e,t){const n=Yt(t,e);16&n[vn]||(n[vn]|=64)}(n,t.index)):3&t.type&&(i=function DI(e){return"class"===e?"className":"for"===e?"htmlFor":"formaction"===e?"formAction":"innerHtml"===e?"innerHTML":"readonly"===e?"readOnly":"tabindex"===e?"tabIndex":e}(i),r=null!=l?l(r,t.value||"",i):r,s.setProperty(v,i,r))}function SI(e,t){null!==e.hostBindings&&e.hostBindings(1,t)}function _h(e,t){const n=e.directiveRegistry;let i=null;if(n)for(let r=0;r0&&(e[n-1][Ri]=i[Ri]);const s=$r(e,ei+t);!function T_(e,t){A_(e,t),t[Hn]=null,t[Pi]=null}(i[Kt],i);const l=s[Rt];null!==l&&l.detachView(s[Kt]),i[ii]=null,i[Ri]=null,i[vn]&=-129}return i}function hl(e,t){if(To(t))return;const n=t[En];n.destroyNode&&Kc(e,t,n,3,null,null),function FI(e){let t=e[S];if(!t)return Ih(e[Kt],e);for(;t;){let n=null;if(Jn(t))n=t[S];else{const i=t[ei];i&&(n=i)}if(!n){for(;t&&!t[Ri]&&t!==e;)Jn(t)&&Ih(t[Kt],t),t=t[ii];null===t&&(t=e),Jn(t)&&Ih(t[Kt],t),n=t&&t[Ri]}t=n}}(t)}function Ih(e,t){if(To(t))return;const n=x(null);try{t[vn]&=-129,t[vn]|=256,t[Vn]&&ae(t[Vn]),function UI(e,t){let n;if(null!=e&&null!=(n=e.destroyHooks))for(let i=0;i=0?i[f]():i[-f].unsubscribe(),l+=2}else n[l].call(i[n[l+1]]);null!==i&&(t[co]=null);const r=t[Gn];if(null!==r){t[Gn]=null;for(let l=0;l0&&(n[r-1][Ri]=t),i{ho(e.lView)},consumerOnSignalRead(){this.lView[Vn]=this}},XI={...y,consumerIsAlwaysLive:!0,kind:"template",consumerMarkedDirty:e=>{let t=Ao(e.lView);for(;t&&!j_(t[Kt]);)t=Ao(t);t&&Xr(t)},consumerOnSignalRead(){this.lView[Vn]=this}};function j_(e){return 2!==e.type}function W_(e){if(null===e[Pn])return;let t=!0;for(;t;){let n=!1;for(const i of e[Pn])i.dirty&&(n=!0,null===i.zone||Zone.current===i.zone?i.run():i.zone.run(()=>i.run()));t=n&&!!(8192&e[vn])}}function Xc(e,t=!0,n=0){const r=e[xr].rendererFactory;r.begin?.();try{!function QI(e,t){const n=Kp();try{ac(!0),Rh(e,t);let i=0;for(;uo(e);){if(100===i)throw new rt(103,!1);i++,Rh(e,1)}}finally{ac(n)}}(e,n)}catch(l){throw t&&Hc(e,l),l}finally{r.end?.()}}function $_(e,t,n,i){if(To(t))return;const r=t[vn];su(t);let f=!0,v=null,G=null;j_(e)?(G=function HI(e){return e[Vn]??function $I(e){const t=V_.pop()??Object.create(GI);return t.lView=e,t}(e)}(t),v=de(G)):null===function D(){return O}()?(f=!1,G=function KI(e){const t=e[Vn]??Object.create(XI);return t.lView=e,t}(t),v=de(G)):t[Vn]&&(ae(t[Vn]),t[Vn]=null);try{qi(t),function Xp(e){return Tn.lFrame.bindingIndex=e}(e.bindingStartIndex),null!==n&&D_(e,t,n,2,i);const me=!(3&~r);if(me){const et=e.preOrderCheckHooks;null!==et&&cc(t,et,null)}else{const et=e.preOrderHooks;null!==et&&dc(t,et,0,null),cu(t,0)}if(function ZI(e){for(let t=Ym(e);null!==t;t=Qm(t)){if(!(2&t[vn]))continue;const n=t[rr];for(let i=0;i-1&&(ul(t,i),$r(n,i))}this._attachedToViewContainer=!1}hl(this._lView[Kt],this._lView)}onDestroy(t){rc(this._lView,t)}markForCheck(){fl(this._cdRefInjectingView||this._lView,4)}markForRefresh(){Xr(this._cdRefInjectingView||this._lView)}detach(){this._lView[vn]&=-129}reattach(){Ua(this._lView),this._lView[vn]|=128}detectChanges(){this._lView[vn]|=1024,Xc(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new rt(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;const t=Kr(this._lView),n=this._lView[Xe];null!==n&&!t&&xh(n,this._lView),A_(this._lView[Kt],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new rt(902,!1);this._appRef=t;const n=Kr(this._lView),i=this._lView[Xe];null!==i&&!n&&O_(i,this._lView),Ua(this._lView)}}let ml=(()=>class e{static __NG_ELEMENT_ID__=nM})();const eM=ml,tM=class extends eM{_declarationLView;_declarationTContainer;elementRef;constructor(t,n,i){super(),this._declarationLView=t,this._declarationTContainer=n,this.elementRef=i}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(t,n){return this.createEmbeddedViewImpl(t,n)}createEmbeddedViewImpl(t,n,i){const r=ca(this._declarationLView,this._declarationTContainer,t,{embeddedViewInjector:n,dehydratedView:i});return new pl(r)}};function nM(){return Yc(jn(),xt())}function Yc(e,t){return 4&e.type?new tM(t,e,Gs(e,t)):null}function ha(e,t,n,i,r){let s=e.data[t];if(null===s)s=function Fh(e,t,n,i,r){const s=$p(),l=tu(),v=e.data[t]=function hM(e,t,n,i,r,s){let l=t?t.injectorIndex:-1,f=0;return gs()&&(f|=128),{type:n,index:i,insertBeforeIndex:null,injectorIndex:l,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,propertyBindings:null,flags:f,providerIndexes:0,value:r,attrs:s,mergedAttrs:null,localNames:null,initialInputs:void 0,inputs:null,outputs:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}(0,l?s:s&&s.parent,n,t,i,r);return function uM(e,t,n,i){null===e.firstChild&&(e.firstChild=t),null!==n&&(i?null==n.child&&null!==t.parent&&(n.child=t):null===n.next&&(n.next=t,t.prev=n))}(e,v,s,l),v}(e,t,n,i,r),function mC(){return Tn.lFrame.inI18n}()&&(s.flags|=32);else if(64&s.type){s.type=n,s.value=i,s.attrs=r;const l=function Va(){const e=Tn.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}();s.injectorIndex=null===l?-1:l.injectorIndex}return eo(s,!0),s}const CM=new RegExp(`^(\\d+)*(${Nu}|${Pu})*(.*)`);function Bh(e){return e.index-Vt}function El(e,t,n,i){const r=Bh(i);let s=function ov(e,t){const n=e.i18nNodes;if(n)return n.get(t)}(e,r);if(void 0===s){const l=e.data[Ic];if(l?.[r])s=function sv(e,t){const[n,...i]=function xM(e){const t=e.match(CM),[n,i,r,s]=t,l=i?parseInt(i,10):r,f=[];for(const[v,G,me]of s.matchAll(/(f|n)(\d*)/g)){const Pe=parseInt(me,10)||1;f.push(G,Pe)}return[l,...f]}(e);let r;r=n===Pu?t[ue][Hn]:n===Nu?function l_(e){return e.ownerDocument.body}(t[ue][Hn]):_(t[Number(n)+Vt]);return function wM(e,t){let n=e;for(let i=0;inull;function QM(e,t){const n=e[Ui];return t&&null!==n&&0!==n.length?n[0].data[Lu]===t?n.shift():(hv(e),null):null}function pa(e,t){return pv(e,t)}class JM{}class mv{}class qM{resolveComponentFactory(t){throw Error(`No component factory found for ${lt(t)}.`)}}class td{static NULL=new qM}class zh{}let ew=(()=>class e{destroyNode=null;static __NG_ELEMENT_ID__=()=>function tw(){const e=xt(),n=Yt(jn().index,e);return(Jn(n)?n:e)[En]}()})(),nw=(()=>{class e{static \u0275prov=Tt({token:e,providedIn:"root",factory:()=>null})}return e})();function Qo(e){return!!Oi(e)}function Xh(e,t,n){let i=n?e.styles:null,r=n?e.classes:null,s=0;if(null!==t)for(let l=0;l0;){const n=e[--t];if("number"==typeof n&&n<0)return n}return 0})(l)!=f&&l.push(f),l.push(n,i,s)}}(e,t,i,Il(e,n,r.hostVars,Nn),r)}function pw(e,t,n){if(n){if(t.exportAs)for(let i=0;i[this.componentDef],!0,0);Qe&&(y_(Pe,Qe,Mt),vr(Qe,et)),x_(v,et,Mt),ih(v,Mt,et),Cv(v,Mt),void 0!==n&&function bw(e,t,n){const i=e.projection=[];for(let r=0;rclass e{static __NG_ELEMENT_ID__=Ew})();function Ew(){return wv(jn(),xt())}const Cw=id,Iv=class extends Cw{_lContainer;_hostTNode;_hostLView;constructor(t,n,i){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=i}get element(){return Gs(this._hostTNode,this._hostLView)}get injector(){return new xi(this._hostTNode,this._hostLView)}get parentInjector(){const t=fc(this._hostTNode,this._hostLView);if(fu(t)){const n=$a(t,this._hostLView),i=Ha(t);return new xi(n[Kt].data[i+8],n)}return new xi(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){const n=Mv(this._lContainer);return null!==n&&n[t]||null}get length(){return this._lContainer.length-ei}createEmbeddedView(t,n,i){let r,s;"number"==typeof i?r=i:null!=i&&(r=i.index,s=i.injector);const l=pa(this._lContainer,t.ssrId),f=t.createEmbeddedViewImpl(n||{},s,l);return this.insertImpl(f,r,Is(this._hostTNode,l)),f}createComponent(t,n,i,r,s){const l=t&&!function wo(e){return"function"==typeof e}(t);let f;if(l)f=n;else{const vt=n||{};f=vt.index,i=vt.injector,r=vt.projectableNodes,s=vt.environmentInjector||vt.ngModuleRef}const v=l?t:new Ml(An(t)),G=i||this.parentInjector;if(!s&&null==v.ngModule){const Mt=(l?G:this.parentInjector).get(ir,null);Mt&&(s=Mt)}const me=An(v.componentType??{}),Pe=pa(this._lContainer,me?.id??null),et=v.create(G,r,Pe?.firstChild??null,s);return this.insertImpl(et.hostView,f,Is(this._hostTNode,Pe)),et}insert(t,n){return this.insertImpl(t,n,!0)}insertImpl(t,n,i){const r=t._lView;if(function di(e){return si(e[ii])}(r)){const f=this.indexOf(t);if(-1!==f)this.detach(f);else{const v=r[ii],G=new Iv(v,v[Pi],v[ii]);G.detach(G.indexOf(t))}}const s=this._adjustIndex(n),l=this._lContainer;return da(l,r,s,i),t.attachToViewContainerRef(),Ai(Qh(l),s,t),t}move(t,n){return this.insert(t,n)}indexOf(t){const n=Mv(this._lContainer);return null!==n?n.indexOf(t):-1}remove(t){const n=this._adjustIndex(t,-1),i=ul(this._lContainer,n);i&&($r(Qh(this._lContainer),n),hl(i[Kt],i))}detach(t){const n=this._adjustIndex(t,-1),i=ul(this._lContainer,n);return i&&null!=$r(Qh(this._lContainer),n)?new pl(i):null}_adjustIndex(t,n=0){return t??this.length+n}};function Mv(e){return e[8]}function Qh(e){return e[8]||(e[8]=[])}function wv(e,t){let n;const i=t[e.index];return si(i)?n=i:(n=w_(i,t,null,e),t[e.index]=n,bh(t,n)),Sv(n,t,e,i),new Iv(n,e,t)}let Sv=Av,Zh=()=>!1;function Av(e,t,n,i){if(e[mi])return;let r;r=8&n.type?_(i):function Dw(e,t){const n=e[En],i=n.createComment(""),r=Fe(t,e),s=n.parentNode(r);return Ds(n,s,i,n.nextSibling(r),!1),i}(t,n),e[mi]=r}function xw(e,t,n){if(e[mi]&&e[Ui])return!0;const i=n[Ni],r=t.index-Vt;if(!i||function Qa(e){if(Ya(e))return!0;let t=e.parent;for(;t;){if(Ya(e)||Mu(t))return!0;t=t.parent}return!1}(t)||bs(i,r))return!1;const l=qu(i,r),f=i.data[Za]?.[r],[v,G]=function YM(e,t){const n=[];for(const i of t)for(let r=0;r<(i[xc]??1);r++){const s={data:i,firstChild:null};i[zo]>0&&(s.firstChild=e,e=qc(i[zo],e)),n.push(s)}return[e,n]}(l,f);return e[mi]=v,e[Ui]=G,!0}function Iw(e,t,n,i){Zh(e,n,t)||Av(e,t,n,i)}class Jh{queryList;matches=null;constructor(t){this.queryList=t}clone(){return new Jh(this.queryList)}setDirty(){this.queryList.setDirty()}}class qh{queries;constructor(t=[]){this.queries=t}createEmbeddedView(t){const n=t.queries;if(null!==n){const i=null!==t.contentQueries?t.contentQueries[0]:n.length,r=[];for(let s=0;st.trim())}(t):t}}class ef{queries;constructor(t=[]){this.queries=t}elementStart(t,n){for(let i=0;i0)i.push(l[f/2]);else{const G=s[f+1],me=t[-v];for(let Pe=ei;Pe{i._dirtyCounter();const s=function Pw(e,t){const n=e._lView,i=e._queryIndex;if(void 0===n||void 0===i||4&n[vn])return t?void 0:Fn;const r=rf(n,i),s=Lv(n,i);return r.reset(s,Lm),t?r.first:r._changesDetected||void 0===e._flatValue?e._flatValue=r.toArray():e._flatValue}(i,e);if(t&&void 0===s)throw new rt(-951,!1);return s});return i=r[C],i._dirtyCounter=Iu(0),i._flatValue=void 0,r}function Wv(e,t){return function Bv(e){return af(!0,!1)}()}const kw=(Wv.required=function Nw(e,t){return function Uv(e){return af(!0,!0)}()},Wv);class ws{}class Yv{}function $w(e,t){return new lf(e,t??null,[])}class lf extends ws{ngModuleType;_parent;_bootstrapComponents=[];_r3Injector;instance;destroyCbs=[];componentFactoryResolver=new Dv(this);constructor(t,n,i,r=!0){super(),this.ngModuleType=t,this._parent=n;const s=Oi(t);this._bootstrapComponents=Vr(s.bootstrap),this._r3Injector=Mm(t,n,[{provide:ws,useValue:this},{provide:td,useValue:this.componentFactoryResolver},...i],lt(t),new Set(["environment"])),r&&this.resolveInjectorInitializers()}resolveInjectorInitializers(){this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(this.ngModuleType)}get injector(){return this._r3Injector}destroy(){const t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(n=>n()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class cf extends Yv{moduleType;constructor(t){super(),this.moduleType=t}create(t){return new lf(this.moduleType,t,[])}}class Qv extends ws{injector;componentFactoryResolver=new Dv(this);instance=null;constructor(t){super();const n=new ao([...t.providers,{provide:ws,useValue:this},{provide:td,useValue:this.componentFactoryResolver}],t.parent||Do(),t.debugName,new Set(["environment"]));this.injector=n,t.runEnvironmentInitializers&&n.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}}function df(e,t,n=null){return new Qv({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}let Gw=(()=>{class e{_injector;cachedInjectors=new Map;constructor(n){this._injector=n}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){const i=U(0,n.type),r=i.length>0?df([i],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n,r)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(const n of this.cachedInjectors.values())null!==n&&n.destroy()}finally{this.cachedInjectors.clear()}}static \u0275prov=Tt({token:e,providedIn:"environment",factory:()=>new e(fi(ir))})}return e})();function Zv(e){return le(()=>{const t=t0(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===yc.OnPush,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?r=>r.get(Gw).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||Lo.Emulated,styles:e.styles||Fn,_:null,schemas:e.schemas||null,tView:null,id:""};t.standalone&&Gi("NgStandalone"),n0(n);const i=e.dependencies;return n.directiveDefs=od(i,!1),n.pipeDefs=od(i,!0),n.id=function Qw(e){let t=0;const i=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,"function"==typeof e.consts?"":e.consts,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(const s of i.join("|"))t=Math.imul(31,t)+s.charCodeAt(0)|0;return t+=2147483648,"c"+t}(n),n})}function Kw(e){return An(e)||gi(e)}function Xw(e){return null!==e}function uf(e){return le(()=>({type:e.type,bootstrap:e.bootstrap||Fn,declarations:e.declarations||Fn,imports:e.imports||Fn,exports:e.exports||Fn,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function Jv(e,t){if(null==e)return $i;const n={};for(const i in e)if(e.hasOwnProperty(i)){const r=e[i];let s,l,f=Xo.None;Array.isArray(r)?(f=r[0],s=r[1],l=r[2]??s):(s=r,l=r),t?(n[s]=f!==Xo.None?[i,f]:i,t[s]=l):n[s]=i}return n}function qv(e){return le(()=>{const t=t0(e);return n0(t),t})}function e0(e){return{type:e.type,name:e.name,factory:null,pure:!1!==e.pure,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function t0(e){const t={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputTransforms:null,inputConfig:e.inputs||$i,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:!0===e.signals,selectors:e.selectors||Fn,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:Jv(e.inputs,t),outputs:Jv(e.outputs),debugInfo:null}}function n0(e){e.features?.forEach(t=>t(e))}function od(e,t){if(!e)return null;const n=t?Dn:Kw;return()=>("function"==typeof e?e():e).map(i=>n(i)).filter(Xw)}function hf(e){let t=function r0(e){return Object.getPrototypeOf(e.prototype).constructor}(e.type),n=!0;const i=[e];for(;t;){let r;if(Mr(e))r=t.\u0275cmp||t.\u0275dir;else{if(t.\u0275cmp)throw new rt(903,!1);r=t.\u0275dir}if(r){if(n){i.push(r);const l=e;l.inputs=sd(e.inputs),l.inputTransforms=sd(e.inputTransforms),l.declaredInputs=sd(e.declaredInputs),l.outputs=sd(e.outputs);const f=r.hostBindings;f&&tS(e,f);const v=r.viewQuery,G=r.contentQueries;if(v&&qw(e,v),G&&eS(e,G),Zw(e,r),$e(e.outputs,r.outputs),Mr(r)&&r.data.animation){const me=e.data;me.animation=(me.animation||[]).concat(r.data.animation)}}const s=r.features;if(s)for(let l=0;l=0;i--){const r=e[i];r.hostVars=t+=r.hostVars,r.hostAttrs=$s(r.hostAttrs,n=$s(n,r.hostAttrs))}}(i)}function Zw(e,t){for(const n in t.inputs){if(!t.inputs.hasOwnProperty(n)||e.inputs.hasOwnProperty(n))continue;const i=t.inputs[n];if(void 0!==i&&(e.inputs[n]=i,e.declaredInputs[n]=t.declaredInputs[n],null!==t.inputTransforms)){const r=Array.isArray(i)?i[0]:i;if(!t.inputTransforms.hasOwnProperty(r))continue;e.inputTransforms??={},e.inputTransforms[r]=t.inputTransforms[r]}}}function sd(e){return e===$i?{}:e===Fn?[]:e}function qw(e,t){const n=e.viewQuery;e.viewQuery=n?(i,r)=>{t(i,r),n(i,r)}:t}function eS(e,t){const n=e.contentQueries;e.contentQueries=n?(i,r,s)=>{t(i,r,s),n(i,r,s)}:t}function tS(e,t){const n=e.hostBindings;e.hostBindings=n?(i,r)=>{t(i,r),n(i,r)}:t}function o0(e){const t=n=>{const i=Array.isArray(e);null===n.hostDirectives?(n.findHostDirectiveDefs=s0,n.hostDirectives=i?e.map(ff):[e]):i?n.hostDirectives.unshift(...e.map(ff)):n.hostDirectives.unshift(e)};return t.ngInherit=!0,t}function s0(e,t,n){if(null!==e.hostDirectives)for(const i of e.hostDirectives)if("function"==typeof i){const r=i();for(const s of r)a0(ff(s),t,n)}else a0(i,t,n)}function a0(e,t,n){const i=gi(e.directive);(function oS(e,t){for(const n in t)t.hasOwnProperty(n)&&(e[t[n]]=e[n])})(i.declaredInputs,e.inputs),s0(i,t,n),n.set(i,e),t.push(i)}function ff(e){return"function"==typeof e?{directive:Ut(e),inputs:$i,outputs:$i}:{directive:Ut(e.directive),inputs:l0(e.inputs),outputs:l0(e.outputs)}}function l0(e){if(void 0===e||0===e.length)return $i;const t={};for(let n=0;n{class e{log(n){console.log(n)}warn(n){console.warn(n)}static \u0275fac=function(i){return new(i||e)};static \u0275prov=Tt({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();const D0="ng";function aT(e,t){!function I0(e,t){if(typeof COMPILED>"u"||!COMPILED){const n=kt;n[D0]??={},n[D0][e]=t}}(e,t)}const M0=new qt(""),w0=new qt("");let Ef,lT=(()=>{class e{_ngZone;registry;_isZoneStable=!0;_callbacks=[];taskTrackingZone=null;constructor(n,i,r){this._ngZone=n,this.registry=i,Ef||(function cT(e){Ef=e}(r),r.addToWindow(i)),this._watchAngularEvents(),n.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{_i.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}isStable(){return this._isZoneStable&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;0!==this._callbacks.length;){let n=this._callbacks.pop();clearTimeout(n.timeoutId),n.doneCb()}});else{let n=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>!i.updateCb||!i.updateCb(n)||(clearTimeout(i.timeoutId),!1))}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(n=>({source:n.source,creationLocation:n.creationLocation,data:n.data})):[]}addCallback(n,i,r){let s=-1;i&&i>0&&(s=setTimeout(()=>{this._callbacks=this._callbacks.filter(l=>l.timeoutId!==s),n()},i)),this._callbacks.push({doneCb:n,timeoutId:s,updateCb:r})}whenStable(n,i,r){if(r&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(n,i,r),this._runCallbacksIfReady()}registerApplication(n){this.registry.registerApplication(n,this)}unregisterApplication(n){this.registry.unregisterApplication(n)}findProviders(n,i,r){return[]}static \u0275fac=function(i){return new(i||e)(fi(_i),fi(S0),fi(w0))};static \u0275prov=Tt({token:e,factory:e.\u0275fac})}return e})(),S0=(()=>{class e{_applications=new Map;registerApplication(n,i){this._applications.set(n,i)}unregisterApplication(n){this._applications.delete(n)}unregisterAllApplications(){this._applications.clear()}getTestability(n){return this._applications.get(n)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(n,i=!0){return Ef?.findTestabilityInTree(this,n,i)??null}static \u0275fac=function(i){return new(i||e)};static \u0275prov=Tt({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();function Cf(e){return!!e&&"function"==typeof e.then}function T0(e){return!!e&&"function"==typeof e.subscribe}const Df=new qt("");let A0=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((n,i)=>{this.resolve=n,this.reject=i});appInits=an(Df,{optional:!0})??[];injector=an(zi);constructor(){}runInitializers(){if(this.initialized)return;const n=[];for(const r of this.appInits){const s=Us(this.injector,r);if(Cf(s))n.push(s);else if(T0(s)){const l=new Promise((f,v)=>{s.subscribe({complete:f,error:v})});n.push(l)}}const i=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{i()}).catch(r=>{this.reject(r)}),0===n.length&&i(),this.initialized=!0}static \u0275fac=function(i){return new(i||e)};static \u0275prov=Tt({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),xf=(()=>{class e{static \u0275prov=Tt({token:e,providedIn:"root",factory:()=>new O0})}return e})();class O0{queuedEffectCount=0;queues=new Map;schedule(t){this.enqueue(t)}remove(t){const i=this.queues.get(t.zone);i.has(t)&&(i.delete(t),this.queuedEffectCount--)}enqueue(t){const n=t.zone;this.queues.has(n)||this.queues.set(n,new Set);const i=this.queues.get(n);i.has(t)||(this.queuedEffectCount++,i.add(t))}flush(){for(;this.queuedEffectCount>0;)for(const[t,n]of this.queues)null===t?this.flushQueue(n):t.run(()=>this.flushQueue(n))}flushQueue(t){for(const n of t)t.delete(n),this.queuedEffectCount--,n.run()}}const Ol=new qt("");let jr=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=an(iD);afterRenderManager=an($u);zonelessEnabled=an(zs);rootEffectScheduler=an(xf);dirtyFlags=0;deferredDirtyFlags=0;tracingSnapshot=null;externalTestViews=new Set;afterTick=new jt.B;get allViews(){return[...this.externalTestViews.keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];isStable=an(No).hasPendingTasks.pipe((0,on.T)(n=>!n));constructor(){an(Qs,{optional:!0})}whenStable(){let n;return new Promise(i=>{n=this.isStable.subscribe({next:r=>{r&&i()}})}).finally(()=>{n.unsubscribe()})}_injector=an(ir);_rendererFactory=null;get injector(){return this._injector}bootstrap(n,i){const r=n instanceof mv;if(!this._injector.get(A0).done)throw!r&&Ji(n),new rt(405,!1);let l;l=r?n:this._injector.get(td).resolveComponentFactory(n),this.componentTypes.push(l.componentType);const f=function dT(e){return e.isBoundToModule}(l)?void 0:this._injector.get(ws),G=l.create(zi.NULL,[],i||l.selector,f),me=G.location.nativeElement,Pe=G.injector.get(M0,null);return Pe?.registerApplication(me),G.onDestroy(()=>{this.detachView(G.hostView),hd(this.components,G),Pe?.unregisterApplication(me)}),this._loadComponent(G),G}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick=()=>{if(null!==this.tracingSnapshot){const i=this.tracingSnapshot;return this.tracingSnapshot=null,i.run(Hu.CHANGE_DETECTION,this._tick),void i.dispose()}if(this._runningTick)throw new rt(101,!1);const n=x(null);try{this._runningTick=!0,this.synchronize()}catch(i){this.internalErrorHandler(i)}finally{this._runningTick=!1,x(n),this.afterTick.next()}};synchronize(){null===this._rendererFactory&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(zh,null,{optional:!0})),this.dirtyFlags|=this.deferredDirtyFlags,this.deferredDirtyFlags=0;let n=0;for(;0!==this.dirtyFlags&&n++<10;)this.synchronizeOnce()}synchronizeOnce(){if(this.dirtyFlags|=this.deferredDirtyFlags,this.deferredDirtyFlags=0,16&this.dirtyFlags&&(this.dirtyFlags&=-17,this.rootEffectScheduler.flush()),7&this.dirtyFlags){const n=!!(1&this.dirtyFlags);this.dirtyFlags&=-8,this.dirtyFlags|=8;for(let{_lView:i,notifyErrorHandler:r}of this.allViews)hT(i,r,n,this.zonelessEnabled);if(this.dirtyFlags&=-5,this.syncDirtyFlagsWithViews(),23&this.dirtyFlags)return}else this._rendererFactory?.begin?.(),this._rendererFactory?.end?.();8&this.dirtyFlags&&(this.dirtyFlags&=-9,this.afterRenderManager.execute()),this.syncDirtyFlagsWithViews()}syncDirtyFlagsWithViews(){this.allViews.some(({_lView:n})=>uo(n))?this.dirtyFlags|=2:this.dirtyFlags&=-8}attachView(n){const i=n;this._views.push(i),i.attachToAppRef(this)}detachView(n){const i=n;hd(this._views,i),i.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n),this._injector.get(Ol,[]).forEach(r=>r(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>hd(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new rt(406,!1);const n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}static \u0275fac=function(i){return new(i||e)};static \u0275prov=Tt({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function hd(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}function hT(e,t,n,i){(n||uo(e))&&Xc(e,t,n&&!i?0:1)}function Sf(e,t,n,i){const r=xt();return Ii(r,Yr(),t)&&(Sn(),_o(ai(),r,e,t,n,i)),Sf}function ba(e,t,n,i){return Ii(e,Yr(),n)?t+pn(n)+i:Nn}function Ea(e,t,n,i,r,s){const f=Ss(e,function Oo(){return Tn.lFrame.bindingIndex}(),n,r);return Ro(2),f?t+pn(n)+i+pn(r)+s:Nn}function fd(e,t){return e<<17|t<<2}function ts(e){return e>>17&32767}function Tf(e){return 2|e}function As(e){return(131068&e)>>2}function Af(e,t){return-131069&e|t<<2}function Of(e){return 1|e}function X0(e,t,n,i){const r=e[n+1],s=null===t;let l=i?ts(r):As(r),f=!1;for(;0!==l&&(!1===f||s);){const G=e[l+1];QT(e[l],t)&&(f=!0,e[l+1]=i?Of(G):Tf(G)),l=i?ts(G):As(G)}f&&(e[n+1]=i?Tf(r):Of(r))}function QT(e,t){return null===e||null==t||(Array.isArray(e)?e[1]:e)===t||!(!Array.isArray(e)||"string"!=typeof t)&&dr(e,t)>=0}const Ki={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function Y0(e){return e.substring(Ki.key,Ki.keyEnd)}function Q0(e,t){const n=Ki.textEnd;return n===t?-1:(t=Ki.keyEnd=function eA(e,t,n){for(;t32;)t++;return t}(e,Ki.key=t,n),Sa(e,t,n))}function Sa(e,t,n){for(;t=0;n=Q0(t,n))Bi(e,Y0(t),!0)}function no(e,t,n,i){const r=xt(),s=Sn(),l=Ro(2);s.firstUpdatePass&&iy(s,e,l,i),t!==Nn&&Ii(r,l,t)&&oy(s,s.data[or()],r,r[En],e,r[l+1]=function uA(e,t){return null==e||""===e||("string"==typeof t?e+=t:"object"==typeof e&&(e=lt(Bo(e)))),e}(t,n),i,l)}function io(e,t,n,i){const r=Sn(),s=Ro(2);r.firstUpdatePass&&iy(r,null,s,i);const l=xt();if(n!==Nn&&Ii(l,s,n)){const f=r.data[or()];if(ay(f,i)&&!ny(r,s)){let v=i?f.classesWithoutHost:f.stylesWithoutHost;null!==v&&(n=Te(v,n||"")),Pf(r,f,l,n,i)}else!function dA(e,t,n,i,r,s,l,f){r===Nn&&(r=Fn);let v=0,G=0,me=0=e.expandoStartIndex}function iy(e,t,n,i){const r=e.data;if(null===r[n+1]){const s=r[or()],l=ny(e,n);ay(s,i)&&null===t&&!l&&(t=!1),t=function rA(e,t,n,i){const r=ru(e);let s=i?t.residualClasses:t.residualStyles;if(null===r)0===(i?t.classBindings:t.styleBindings)&&(n=Pl(n=Ff(null,e,t,n,i),t.attrs,i),s=null);else{const l=t.directiveStylingLast;if(-1===l||e[l]!==r)if(n=Ff(r,e,t,n,i),null===s){let v=function oA(e,t,n){const i=n?t.classBindings:t.styleBindings;if(0!==As(i))return e[ts(i)]}(e,t,i);void 0!==v&&Array.isArray(v)&&(v=Ff(null,e,t,v[1],i),v=Pl(v,t.attrs,i),function sA(e,t,n,i){e[ts(n?t.classBindings:t.styleBindings)]=i}(e,t,i,v))}else s=function aA(e,t,n){let i;const r=t.directiveEnd;for(let s=1+t.directiveStylingLast;s0)&&(G=!0)):me=n,r)if(0!==v){const Qe=ts(e[f+1]);e[i+1]=fd(Qe,f),0!==Qe&&(e[Qe+1]=Af(e[Qe+1],i)),e[f+1]=function GT(e,t){return 131071&e|t<<17}(e[f+1],i)}else e[i+1]=fd(f,0),0!==f&&(e[f+1]=Af(e[f+1],i)),f=i;else e[i+1]=fd(v,0),0===f?f=i:e[v+1]=Af(e[v+1],i),v=i;G&&(e[i+1]=Tf(e[i+1])),X0(e,me,i,!0),X0(e,me,i,!1),function YT(e,t,n,i,r){const s=r?e.residualClasses:e.residualStyles;null!=s&&"string"==typeof t&&dr(s,t)>=0&&(n[i+1]=Of(n[i+1]))}(t,me,e,i,s),l=fd(f,v),s?t.classBindings=l:t.styleBindings=l}(r,s,t,n,l,i)}}function Ff(e,t,n,i,r){let s=null;const l=n.directiveEnd;let f=n.directiveStylingLast;for(-1===f?f=n.directiveStart:f++;f0;){const v=e[r],G=Array.isArray(v),me=G?v[1]:v,Pe=null===me;let Qe=n[r+1];Qe===Nn&&(Qe=Pe?Fn:void 0);let et=Pe?Fr(Qe,i):me===i?Qe:void 0;if(G&&!pd(et)&&(et=Fr(v,i)),pd(et)&&(f=et,l))return f;const vt=e[r+1];r=l?ts(vt):As(vt)}if(null!==t){let v=s?t.residualClasses:t.residualStyles;null!=v&&(f=Fr(v,i))}return f}function pd(e){return void 0!==e}function ay(e,t){return!!(e.flags&(t?8:16))}function ly(e,t,n){io(Bi,bo,ba(xt(),e,t,n),!0)}class EA{destroy(t){}updateValue(t,n){}swap(t,n){const i=Math.min(t,n),r=Math.max(t,n),s=this.detach(r);if(r-i>1){const l=this.detach(i);this.attach(i,s),this.attach(r,l)}else this.attach(i,s)}move(t,n){this.attach(n,this.detach(t))}}function Lf(e,t,n,i,r){return e===n&&Object.is(t,i)?1:Object.is(r(e,t),r(n,i))?-1:0}function Bf(e,t,n,i){return!(void 0===t||!t.has(i)||(e.attach(n,t.get(i)),t.delete(i),0))}function cy(e,t,n,i,r){if(Bf(e,t,i,n(i,r)))e.updateValue(i,r);else{const s=e.create(i,r);e.attach(i,s)}}function dy(e,t,n,i){const r=new Set;for(let s=t;s<=n;s++)r.add(i(s,e.at(s)));return r}class uy{kvMap=new Map;_vMap=void 0;has(t){return this.kvMap.has(t)}delete(t){if(!this.has(t))return!1;const n=this.kvMap.get(t);return void 0!==this._vMap&&this._vMap.has(n)?(this.kvMap.set(t,this._vMap.get(n)),this._vMap.delete(n)):this.kvMap.delete(t),!0}get(t){return this.kvMap.get(t)}set(t,n){if(this.kvMap.has(t)){let i=this.kvMap.get(t);void 0===this._vMap&&(this._vMap=new Map);const r=this._vMap;for(;r.has(i);)i=r.get(i);r.set(i,n)}else this.kvMap.set(t,n)}forEach(t){for(let[n,i]of this.kvMap)if(t(i,n),void 0!==this._vMap){const r=this._vMap;for(;r.has(i);)i=r.get(i),t(i,n)}}}function hy(e,t){Gi("NgControlFlow");const n=xt(),i=Yr(),r=n[i]!==Nn?n[i]:-1,s=-1!==r?md(n,Vt+r):void 0;if(Ii(n,i,e)){const f=x(null);try{if(void 0!==s&&Ah(s,0),-1!==e){const v=Vt+e,G=md(n,v),me=Uf(n[Kt],v),Pe=pa(G,me.tView.ssrId);da(G,ca(n,me,t,{dehydratedView:Pe}),0,Is(me,Pe))}}finally{x(f)}}else if(void 0!==s){const f=U_(s,0);void 0!==f&&(f[Xn]=t)}}class DA{lContainer;$implicit;$index;constructor(t,n,i){this.lContainer=t,this.$implicit=n,this.$index=i}get $count(){return this.lContainer.length-ei}}class MA{hasEmptyBlock;trackByFn;liveCollection;constructor(t,n,i){this.hasEmptyBlock=t,this.trackByFn=n,this.liveCollection=i}}function fy(e,t,n,i,r,s,l,f,v,G,me,Pe,Qe){Gi("NgControlFlow");const et=xt(),vt=Sn(),Mt=void 0!==v,Xt=xt(),Zt=f?l.bind(Xt[ue][Xn]):l,Pt=new MA(Mt,Zt);Xt[Vt+e]=Pt,Tl(et,vt,e+1,t,n,i,r,bi(vt.consts,s)),Mt&&Tl(et,vt,e+2,v,G,me,Pe,bi(vt.consts,Qe))}class wA extends EA{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(t,n,i){super(),this.lContainer=t,this.hostLView=n,this.templateTNode=i}get length(){return this.lContainer.length-ei}at(t){return this.getLView(t)[Xn].$implicit}attach(t,n){const i=n[Ni];this.needsIndexUpdate||=t!==this.length,da(this.lContainer,n,t,Is(this.templateTNode,i))}detach(t){return this.needsIndexUpdate||=t!==this.length-1,function SA(e,t){return ul(e,t)}(this.lContainer,t)}create(t,n){const i=pa(this.lContainer,this.templateTNode.tView.ssrId),r=ca(this.hostLView,this.templateTNode,new DA(this.lContainer,n,t),{dehydratedView:i});return this.operationsCounter?.recordCreate(),r}destroy(t){hl(t[Kt],t),this.operationsCounter?.recordDestroy()}updateValue(t,n){this.getLView(t)[Xn].$implicit=n}reset(){this.needsIndexUpdate=!1,this.operationsCounter?.reset()}updateIndexes(){if(this.needsIndexUpdate)for(let t=0;t{e.destroy(v)})}(v,e,s.trackByFn),v.updateIndexes(),s.hasEmptyBlock){const G=Yr(),me=0===v.length;if(Ii(i,G,me)){const Pe=n+2,Qe=md(i,Pe);if(me){const et=Uf(r,Pe),vt=pa(Qe,et.tView.ssrId);da(Qe,ca(i,et,void 0,{dehydratedView:vt}),0,Is(et,vt))}else Ah(Qe,0)}}}finally{x(t)}}function md(e,t){return e[t]}function Uf(e,t){return Et(e,t)}function gd(e,t,n,i){const r=xt(),s=Sn(),l=Vt+e,f=r[En],v=s.firstCreatePass?Ev(l,s,r,t,_h,sc(),n,i):s.data[l],G=my(s,r,v,f,t,e);r[l]=G;const me=ps(v);return eo(v,!0),y_(f,G,v),!Yo(v)&&ja()&&Gc(s,r,G,v),0===function aC(){return Tn.lFrame.elementDepthCount}()&&vr(G,r),function lC(){Tn.lFrame.elementDepthCount++}(),me&&(ph(s,r,v),ih(s,v,r)),null!==i&&mh(r,v),gd}function _d(){let e=jn();tu()?nu():(e=e.parent,eo(e,!1));const t=e;(function dC(e){return Tn.skipHydrationRootTNode===e})(t)&&function pC(){Tn.skipHydrationRootTNode=null}(),function cC(){Tn.lFrame.elementDepthCount--}();const n=Sn();return n.firstCreatePass&&Cv(n,t),null!=t.classesWithoutHost&&function MC(e){return!!(8&e.flags)}(t)&&Pf(n,t,xt(),t.classesWithoutHost,!0),null!=t.stylesWithoutHost&&function wC(e){return!!(16&e.flags)}(t)&&Pf(n,t,xt(),t.stylesWithoutHost,!1),_d}function Vf(e,t,n,i){return gd(e,t,n,i),_d(),Vf}let my=(e,t,n,i,r,s)=>(fo(!0),jc(i,r,im()));function AA(e,t,n,i,r,s){const l=t[Ni],f=!l||gs()||Yo(n)||bs(l,s);if(fo(f),f)return jc(i,r,im());const v=El(l,e,t,n);return kg(l,s)&&Nc(l,s,v.nextSibling),l&&(Mu(n)||jm(v))&&Vi(n)&&(function hC(e){Tn.skipHydrationRootTNode=e}(n),v_(v)),v}function vd(e,t,n){const i=xt(),r=Sn(),s=e+Vt,l=r.firstCreatePass?function RA(e,t,n,i,r){const s=t.consts,l=bi(s,i),f=ha(t,e,8,"ng-container",l);null!==l&&Xh(f,l,!0);const v=bi(s,r);return sc()&&Yh(t,n,f,v,_h),f.mergedAttrs=$s(f.mergedAttrs,f.attrs),null!==t.queries&&t.queries.elementStart(t,f),f}(s,r,i,t,n):r.data[s];eo(l,!0);const f=gy(r,i,l,e);return i[s]=f,ja()&&Gc(r,i,f,l),vr(f,i),ps(l)&&(ph(r,i,l),ih(r,l,i)),null!=n&&mh(i,l),vd}function yd(){let e=jn();const t=Sn();return tu()?nu():(e=e.parent,eo(e,!1)),t.firstCreatePass&&(lu(t,e),So(e)&&t.queries.elementEnd(e)),yd}function jf(e,t,n){return vd(e,t,n),yd(),jf}let gy=(e,t,n,i)=>(fo(!0),fh(t[En],""));function PA(e,t,n,i){let r;const s=t[Ni],l=!s||gs()||bs(s,i)||Yo(n);if(fo(l),l)return fh(t[En],"");const f=El(s,e,t,n),v=function Ng(e,t){const n=e.data;let i=n[Dc]?.[t]??null;return null===i&&n[Za]?.[t]&&(i=eh(e,t)),i}(s,i);return Nc(s,i,f),r=qc(v,f),r}function _y(){return xt()}function Wf(e,t,n){const i=xt();return Ii(i,Yr(),t)&&Ar(Sn(),ai(),i,e,t,i[En],n,!0),Wf}function Hf(e,t,n){const i=xt();if(Ii(i,Yr(),t)){const s=Sn(),l=ai();Ar(s,l,i,e,t,S_(ru(s.data),l,i),n,!0)}return Hf}const Os=void 0;var FA=["en",[["a","p"],["AM","PM"],Os],[["AM","PM"],Os,Os],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],Os,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],Os,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",Os,"{1} 'at' {0}",Os],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function kA(e){const n=Math.floor(Math.abs(e)),i=e.toString().replace(/^[^.]*\.?/,"").length;return 1===n&&0===i?1:5}];let Ta={};function $f(e){const t=function LA(e){return e.toLowerCase().replace(/_/g,"-")}(e);let n=yy(t);if(n)return n;const i=t.split("-")[0];if(n=yy(i),n)return n;if("en"===i)return FA;throw new rt(701,!1)}function vy(e){return $f(e)[Aa.PluralCase]}function yy(e){return e in Ta||(Ta[e]=kt.ng&&kt.ng.common&&kt.ng.common.locales&&kt.ng.common.locales[e]),Ta[e]}var Aa=function(e){return e[e.LocaleId=0]="LocaleId",e[e.DayPeriodsFormat=1]="DayPeriodsFormat",e[e.DayPeriodsStandalone=2]="DayPeriodsStandalone",e[e.DaysFormat=3]="DaysFormat",e[e.DaysStandalone=4]="DaysStandalone",e[e.MonthsFormat=5]="MonthsFormat",e[e.MonthsStandalone=6]="MonthsStandalone",e[e.Eras=7]="Eras",e[e.FirstDayOfWeek=8]="FirstDayOfWeek",e[e.WeekendRange=9]="WeekendRange",e[e.DateFormat=10]="DateFormat",e[e.TimeFormat=11]="TimeFormat",e[e.DateTimeFormat=12]="DateTimeFormat",e[e.NumberSymbols=13]="NumberSymbols",e[e.NumberFormats=14]="NumberFormats",e[e.CurrencyCode=15]="CurrencyCode",e[e.CurrencySymbol=16]="CurrencySymbol",e[e.CurrencyName=17]="CurrencyName",e[e.Currencies=18]="Currencies",e[e.Directionality=19]="Directionality",e[e.PluralCase=20]="PluralCase",e[e.ExtraData=21]="ExtraData",e}(Aa||{});const bd="en-US";let by=bd,By=(e,t,n)=>{};function Kf(e,t,n,i){const r=xt(),s=Sn(),l=jn();return Yf(s,r,r[En],l,e,t,i),Kf}function Xf(e,t){const n=jn(),i=xt(),r=Sn();return Yf(r,i,S_(ru(r.data),n,i),n,e,t),Xf}function Yf(e,t,n,i,r,s,l){const f=ps(i),G=e.firstCreatePass&&jp(e),me=t[Xn],Pe=Vp(t);let Qe=!0;if(3&i.type||l){const Mt=Fe(i,t),Xt=l?l(Mt):Mt,Zt=Pe.length,Pt=l?zn=>l(_(zn[i.index])):i.index;let Cn=null;if(!l&&f&&(Cn=function IO(e,t,n,i){const r=e.cleanup;if(null!=r)for(let s=0;sv?f[v]:null}"string"==typeof l&&(s+=2)}return null}(e,t,r,i.index)),null!==Cn)(Cn.__ngLastListenerFn__||Cn).__ngNextListenerFn__=s,Cn.__ngLastListenerFn__=s,Qe=!1;else{s=jy(i,t,me,s),By(Mt,r,s);const zn=n.listen(Xt,r,s);Pe.push(s,zn),G&&G.push(r,Pt,Zt,Zt+1)}}else s=jy(i,t,me,s);const et=i.outputs;let vt;if(Qe&&null!==et&&(vt=et[r])){const Mt=vt.length;if(Mt)for(let Xt=0;Xt0;)t=t[$],e--;return t}(e,Tn.lFrame.contextLView))[Xn]}(e)}function MO(e,t){let n=null;const i=function cI(e){const t=e.attrs;if(null!=t){const n=t.indexOf(5);if(!(1&n))return t[n+1]}return null}(e);for(let r=0;rn._dirtyCounter.update(i=>i+1))}(t,kv(e,n,i,r))}function rb(e=1){lc(ou()+e)}function ob(e){return yt(function zp(){return Tn.lFrame.contextLView}(),Vt+e)}function mb(e,t=""){const n=xt(),i=Sn(),r=e+Vt,s=i.firstCreatePass?ha(i,r,1,t,null):i.data[r],l=gb(i,n,s,t,e);n[r]=l,ja()&&Gc(i,n,l,s),eo(s,!1)}let gb=(e,t,n,i,r)=>(fo(!0),hh(t[En],i));function BO(e,t,n,i,r){const s=t[Ni],l=!s||gs()||Yo(n)||bs(s,r);return fo(l),l?hh(t[En],i):El(s,e,t,n)}function qf(e){return xd("",e,""),qf}function xd(e,t,n){const i=xt(),r=ba(i,e,t,n);return r!==Nn&&Vo(i,or(),r),xd}function ep(e,t,n,i,r){const s=xt(),l=Ea(s,e,t,n,i,r);return l!==Nn&&Vo(s,or(),l),ep}function Vo(e,t,n){const i=fe(t,e);!function m_(e,t,n){e.setValue(t,n)}(e[En],i,n)}function tp(e,t,n){Um(t)&&(t=t());const i=xt();return Ii(i,Yr(),t)&&Ar(Sn(),ai(),i,e,t,i[En],n,!1),tp}function xb(e,t){const n=Um(e);return n&&e.set(t),n}function np(e,t){const n=xt(),i=Sn(),r=jn();return Yf(i,n,n[En],r,e,t),np}function ip(e,t,n,i,r){if(e=Ut(e),Array.isArray(e))for(let s=0;s>20;if(Br(e)||!e.multi){const et=new Wa(G,r,ma),vt=op(v,t,r?me:me+Qe,Pe);-1===vt?(gu(hc(f,l),s,v),rp(s,e,t.length),t.push(v),f.directiveStart++,f.directiveEnd++,r&&(f.providerIndexes+=1048576),n.push(et),l.push(et)):(n[vt]=et,l[vt]=et)}else{const et=op(v,t,me+Qe,Pe),vt=op(v,t,me,me+Qe),Xt=vt>=0&&n[vt];if(r&&!Xt||!r&&!(et>=0&&n[et])){gu(hc(f,l),s,v);const Zt=function GO(e,t,n,i,r){const s=new Wa(e,n,ma);return s.multi=[],s.index=t,s.componentProviders=0,wb(s,r,i&&!n),s}(r?zO:$O,n.length,r,i,G);!r&&Xt&&(n[vt].providerFactory=Zt),rp(s,e,t.length,0),t.push(v),f.directiveStart++,f.directiveEnd++,r&&(f.providerIndexes+=1048576),n.push(Zt),l.push(Zt)}else rp(s,e,et>-1?et:vt,wb(n[r?vt:et],G,!r&&i));!r&&i&&Xt&&n[vt].componentProviders++}}}function rp(e,t,n,i){const r=Br(t),s=function so(e){return!!e.useClass}(t);if(r||s){const v=(s?Ut(t.useClass):t).prototype.ngOnDestroy;if(v){const G=e.destroyHooks||(e.destroyHooks=[]);if(!r&&t.multi){const me=G.indexOf(n);-1===me?G.push(n,[i,v]):G[me+1].push(i,v)}else G.push(n,v)}}}function wb(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function op(e,t,n,i){for(let r=n;r{n.providersResolver=(i,r)=>function HO(e,t,n){const i=Sn();if(i.firstCreatePass){const r=Mr(e);ip(n,i.data,i.blueprint,r,!0),ip(t,i.data,i.blueprint,r,!1)}}(i,r?r(e):e,t)}}function Ab(e,t,n){const i=gr()+e,r=xt();return r[i]===Nn?vo(r,i,n?t.call(n):t()):function Sl(e,t){return e[t]}(r,i)}function Ob(e,t,n,i){return Nb(xt(),gr(),e,t,n,i)}function Rb(e,t,n,i,r){return kb(xt(),gr(),e,t,n,i,r)}function Pb(e,t,n,i,r,s){return Fb(xt(),gr(),e,t,n,i,r,s)}function Ul(e,t){const n=e[t];return n===Nn?void 0:n}function Nb(e,t,n,i,r,s){const l=t+n;return Ii(e,l,r)?vo(e,l+1,s?i.call(s,r):i(r)):Ul(e,l+1)}function kb(e,t,n,i,r,s,l){const f=t+n;return Ss(e,f,r,s)?vo(e,f+2,l?i.call(l,r,s):i(r,s)):Ul(e,f+2)}function Fb(e,t,n,i,r,s,l,f){const v=t+n;return function ld(e,t,n,i,r){const s=Ss(e,t,n,i);return Ii(e,t+2,r)||s}(e,v,r,s,l)?vo(e,v+3,f?i.call(f,r,s,l):i(r,s,l)):Ul(e,v+3)}function Ub(e,t){const n=Sn();let i;const r=e+Vt;n.firstCreatePass?(i=function n1(e,t){if(t)for(let n=t.length-1;n>=0;n--){const i=t[n];if(e===i.name)return i}}(t,n.pipeRegistry),n.data[r]=i,i.onDestroy&&(n.destroyHooks??=[]).push(r,i.onDestroy)):i=n.data[r];const s=i.factory||(i.factory=vi(i.type)),f=li(ma);try{const v=uc(!1),G=s();return uc(v),function Jf(e,t,n,i){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=i}(n,xt(),r,G),G}finally{li(f)}}function Vb(e,t,n){const i=e+Vt,r=xt(),s=yt(r,i);return Vl(r,i)?Nb(r,gr(),t,s.transform,n,s):s.transform(n)}function jb(e,t,n,i){const r=e+Vt,s=xt(),l=yt(s,r);return Vl(s,r)?kb(s,gr(),t,l.transform,n,i,l):l.transform(n,i)}function Wb(e,t,n,i,r){const s=e+Vt,l=xt(),f=yt(l,s);return Vl(l,s)?Fb(l,gr(),t,f.transform,n,i,r,f):f.transform(n,i,r)}function Vl(e,t){return e[Kt].data[t].pure}function Hb(e,t){return Yc(e,t)}class oE{full;major;minor;patch;constructor(t){this.full=t;const n=t.split(".");this.major=n[0],this.minor=n[1],this.patch=n.slice(2).join(".")}}class R1{ngModuleFactory;componentFactories;constructor(t,n){this.ngModuleFactory=t,this.componentFactories=n}}let P1=(()=>{class e{compileModuleSync(n){return new cf(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){const i=this.compileModuleSync(n),s=Vr(Oi(n).declarations).reduce((l,f)=>{const v=An(f);return v&&l.push(new Ml(v)),l},[]);return new R1(i,s)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}static \u0275fac=function(i){return new(i||e)};static \u0275prov=Tt({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),F1=(()=>{class e{zone=an(_i);changeDetectionScheduler=an(mo);applicationRef=an(jr);_onMicrotaskEmptySubscription;initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static \u0275fac=function(i){return new(i||e)};static \u0275prov=Tt({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function up({ngZoneFactory:e,ignoreChangesOutsideZone:t,scheduleInRootZone:n}){return e??=()=>new _i({...hp(),scheduleInRootZone:n}),[{provide:_i,useFactory:e},{provide:Zi,multi:!0,useFactory:()=>{const i=an(F1,{optional:!0});return()=>i.initialize()}},{provide:Zi,multi:!0,useFactory:()=>{const i=an(B1);return()=>{i.initialize()}}},!0===t?{provide:Tm,useValue:!0}:[],{provide:yu,useValue:n??wm}]}function hp(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:e?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:e?.runCoalescing??!1}}let B1=(()=>{class e{subscription=new Nt.yU;initialized=!1;zone=an(_i);pendingTasks=an(No);initialize(){if(this.initialized)return;this.initialized=!0;let n=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(n=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{_i.assertNotInAngularZone(),queueMicrotask(()=>{null!==n&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(n),n=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{_i.assertInAngularZone(),n??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static \u0275fac=function(i){return new(i||e)};static \u0275prov=Tt({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),Wl=(()=>{class e{appRef=an(jr);taskService=an(No);ngZone=an(_i);zonelessEnabled=an(zs);tracing=an(Qs,{optional:!0});disableScheduling=an(Tm,{optional:!0})??!1;zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new Nt.yU;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(_c):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(an(yu,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{this.runningTick||this.cleanup()})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()})),this.disableScheduling||=!this.zonelessEnabled&&(this.ngZone instanceof Du||!this.zoneIsDefined)}notify(n){if(!this.zonelessEnabled&&5===n)return;let i=!1;switch(n){case 0:this.appRef.dirtyFlags|=2;break;case 3:case 2:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 8:this.appRef.deferredDirtyFlags|=8;break;case 6:case 14:this.appRef.dirtyFlags|=2,i=!0;break;case 13:this.appRef.dirtyFlags|=16,i=!0;break;case 12:i=!0;break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick(i))return;const r=this.useMicrotaskScheduler?Om:Am;this.pendingRenderTaskId=this.taskService.add(),this.cancelScheduledCallback=this.scheduleInRootZone?Zone.root.run(()=>r(()=>this.tick())):this.ngZone.runOutsideAngular(()=>r(()=>this.tick()))}shouldScheduleTick(n){return!(this.disableScheduling&&!n||this.appRef.destroyed||null!==this.pendingRenderTaskId||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(_c+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(0===this.appRef.dirtyFlags)return void this.cleanup();!this.zonelessEnabled&&7&this.appRef.dirtyFlags&&(this.appRef.dirtyFlags|=1);const n=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(i){throw this.taskService.remove(n),i}finally{this.cleanup()}this.useMicrotaskScheduler=!0,Om(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(n)})}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,null!==this.pendingRenderTaskId){const n=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(n)}}static \u0275fac=function(i){return new(i||e)};static \u0275prov=Tt({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const pp=new qt("",{providedIn:"root",factory:()=>an(pp,bn.Optional|bn.SkipSelf)||function U1(){return typeof $localize<"u"&&$localize.locale||bd}()}),V1=new qt("",{providedIn:"root",factory:()=>"USD"}),Sd=new qt(""),z1=new qt("");function Hl(e){return!e.moduleRef}let ns=null;function Z1(){return!1}let gE=(()=>class e{static __NG_ELEMENT_ID__=J1})();function J1(e){return function q1(e,t,n){if(Vi(e)&&!n){const i=Yt(e.index,t);return new pl(i,i)}return 175&e.type?new pl(t[ue],t):null}(jn(),xt(),!(16&~e))}class bE{constructor(){}supports(t){return ad(t)}create(t){return new rR(t)}}const iR=(e,t)=>t;class rR{length=0;collection;_linkedRecords=null;_unlinkedRecords=null;_previousItHead=null;_itHead=null;_itTail=null;_additionsHead=null;_additionsTail=null;_movesHead=null;_movesTail=null;_removalsHead=null;_removalsTail=null;_identityChangesHead=null;_identityChangesTail=null;_trackByFn;constructor(t){this._trackByFn=t||iR}forEachItem(t){let n;for(n=this._itHead;null!==n;n=n._next)t(n)}forEachOperation(t){let n=this._itHead,i=this._removalsHead,r=0,s=null;for(;n||i;){const l=!i||n&&n.currentIndex{l=this._trackByFn(r,f),null!==n&&Object.is(n.trackById,l)?(i&&(n=this._verifyReinsertion(n,f,l,r)),Object.is(n.item,f)||this._addIdentityChange(n,f)):(n=this._mismatch(n,f,l,r),i=!0),n=n._next,r++}),this.length=r;return this._truncate(n),this.collection=t,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let t;for(t=this._previousItHead=this._itHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._additionsHead;null!==t;t=t._nextAdded)t.previousIndex=t.currentIndex;for(this._additionsHead=this._additionsTail=null,t=this._movesHead;null!==t;t=t._nextMoved)t.previousIndex=t.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,n,i,r){let s;return null===t?s=this._itTail:(s=t._prev,this._remove(t)),null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null))?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._reinsertAfter(t,s,r)):null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(i,r))?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._moveAfter(t,s,r)):t=this._addAfter(new oR(n,i),s,r),t}_verifyReinsertion(t,n,i,r){let s=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null);return null!==s?t=this._reinsertAfter(s,t._prev,r):t.currentIndex!=r&&(t.currentIndex=r,this._addToMoves(t,r)),t}_truncate(t){for(;null!==t;){const n=t._next;this._addToRemovals(this._unlink(t)),t=n}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(t,n,i){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);const r=t._prevRemoved,s=t._nextRemoved;return null===r?this._removalsHead=s:r._nextRemoved=s,null===s?this._removalsTail=r:s._prevRemoved=r,this._insertAfter(t,n,i),this._addToMoves(t,i),t}_moveAfter(t,n,i){return this._unlink(t),this._insertAfter(t,n,i),this._addToMoves(t,i),t}_addAfter(t,n,i){return this._insertAfter(t,n,i),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t}_insertAfter(t,n,i){const r=null===n?this._itHead:n._next;return t._next=r,t._prev=n,null===r?this._itTail=t:r._prev=t,null===n?this._itHead=t:n._next=t,null===this._linkedRecords&&(this._linkedRecords=new EE),this._linkedRecords.put(t),t.currentIndex=i,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);const n=t._prev,i=t._next;return null===n?this._itHead=i:n._next=i,null===i?this._itTail=n:i._prev=n,t}_addToMoves(t,n){return t.previousIndex===n||(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t),t}_addToRemovals(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new EE),this._unlinkedRecords.put(t),t.currentIndex=null,t._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=t,t._prevRemoved=null):(t._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=t),t}_addIdentityChange(t,n){return t.item=n,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t}}class oR{item;trackById;currentIndex=null;previousIndex=null;_nextPrevious=null;_prev=null;_next=null;_prevDup=null;_nextDup=null;_prevRemoved=null;_nextRemoved=null;_nextAdded=null;_nextMoved=null;_nextIdentityChange=null;constructor(t,n){this.item=t,this.trackById=n}}class sR{_head=null;_tail=null;add(t){null===this._head?(this._head=this._tail=t,t._nextDup=null,t._prevDup=null):(this._tail._nextDup=t,t._prevDup=this._tail,t._nextDup=null,this._tail=t)}get(t,n){let i;for(i=this._head;null!==i;i=i._nextDup)if((null===n||n<=i.currentIndex)&&Object.is(i.trackById,t))return i;return null}remove(t){const n=t._prevDup,i=t._nextDup;return null===n?this._head=i:n._nextDup=i,null===i?this._tail=n:i._prevDup=n,null===this._head}}class EE{map=new Map;put(t){const n=t.trackById;let i=this.map.get(n);i||(i=new sR,this.map.set(n,i)),i.add(t)}get(t,n){const r=this.map.get(t);return r?r.get(t,n):null}remove(t){const n=t.trackById;return this.map.get(n).remove(t)&&this.map.delete(n),t}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function CE(e,t,n){const i=e.previousIndex;if(null===i)return i;let r=0;return n&&i{if(n&&n.key===r)this._maybeAddToChanges(n,i),this._appendAfter=n,n=n._next;else{const s=this._getOrCreateRecordForKey(r,i);n=this._insertBeforeOrAppend(n,s)}}),n){n._prev&&(n._prev._next=null),this._removalsHead=n;for(let i=n;null!==i;i=i._nextRemoved)i===this._mapHead&&(this._mapHead=null),this._records.delete(i.key),i._nextRemoved=i._next,i.previousValue=i.currentValue,i.currentValue=null,i._prev=null,i._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(t,n){if(t){const i=t._prev;return n._next=t,n._prev=i,t._prev=n,i&&(i._next=n),t===this._mapHead&&(this._mapHead=n),this._appendAfter=t,t}return this._appendAfter?(this._appendAfter._next=n,n._prev=this._appendAfter):this._mapHead=n,this._appendAfter=n,null}_getOrCreateRecordForKey(t,n){if(this._records.has(t)){const r=this._records.get(t);this._maybeAddToChanges(r,n);const s=r._prev,l=r._next;return s&&(s._next=l),l&&(l._prev=s),r._next=null,r._prev=null,r}const i=new lR(t);return this._records.set(t,i),i.currentValue=n,this._addToAdditions(i),i}_reset(){if(this.isDirty){let t;for(this._previousMapHead=this._mapHead,t=this._previousMapHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._changesHead;null!==t;t=t._nextChanged)t.previousValue=t.currentValue;for(t=this._additionsHead;null!=t;t=t._nextAdded)t.previousValue=t.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(t,n){Object.is(n,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=n,this._addToChanges(t))}_addToAdditions(t){null===this._additionsHead?this._additionsHead=this._additionsTail=t:(this._additionsTail._nextAdded=t,this._additionsTail=t)}_addToChanges(t){null===this._changesHead?this._changesHead=this._changesTail=t:(this._changesTail._nextChanged=t,this._changesTail=t)}_forEach(t,n){t instanceof Map?t.forEach(n):Object.keys(t).forEach(i=>n(t[i],i))}}class lR{key;previousValue=null;currentValue=null;_nextPrevious=null;_next=null;_prev=null;_nextAdded=null;_nextRemoved=null;_nextChanged=null;constructor(t){this.key=t}}function xE(){return new bp([new bE])}let bp=(()=>{class e{factories;static \u0275prov=Tt({token:e,providedIn:"root",factory:xE});constructor(n){this.factories=n}static create(n,i){if(null!=i){const r=i.factories.slice();n=n.concat(r)}return new e(n)}static extend(n){return{provide:e,useFactory:i=>e.create(n,i||xE()),deps:[[e,new Ei,new yi]]}}find(n){const i=this.factories.find(r=>r.supports(n));if(null!=i)return i;throw new rt(901,!1)}}return e})();function IE(){return new Ep([new DE])}let Ep=(()=>{class e{static \u0275prov=Tt({token:e,providedIn:"root",factory:IE});factories;constructor(n){this.factories=n}static create(n,i){if(i){const r=i.factories.slice();n=n.concat(r)}return new e(n)}static extend(n){return{provide:e,useFactory:i=>e.create(n,i||IE()),deps:[[e,new Ei,new yi]]}}find(n){const i=this.factories.find(r=>r.supports(n));if(i)return i;throw new rt(901,!1)}}return e})();function CR(e){try{const{rootComponent:t,appProviders:n,platformProviders:i}=e,r=function Q1(e=[]){if(ns)return ns;const t=function fE(e=[],t){return zi.create({name:t,providers:[{provide:ur,useValue:"platform"},{provide:Sd,useValue:new Set([()=>ns=null])},...e]})}(e);return ns=t,function R0(){!function X(e){q=e}(()=>{throw new rt(600,!1)})}(),function pE(e){const t=e.get(Ou,null);Us(e,()=>{t?.forEach(n=>n())})}(t),t}(i),s=[up({}),{provide:mo,useExisting:Wl},...n||[]];return function dE(e){const t=Hl(e)?e.r3Injector:e.moduleRef.injector,n=t.get(_i);return n.run(()=>{Hl(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();const i=t.get(Fo,null);let r;if(n.runOutsideAngular(()=>{r=n.onError.subscribe({next:s=>{i.handleError(s)}})}),Hl(e)){const s=()=>t.destroy(),l=e.platformInjector.get(Sd);l.add(s),t.onDestroy(()=>{r.unsubscribe(),l.delete(s)})}else{const s=()=>e.moduleRef.destroy(),l=e.platformInjector.get(Sd);l.add(s),e.moduleRef.onDestroy(()=>{hd(e.allPlatformModules,e.moduleRef),r.unsubscribe(),l.delete(s)})}return function K1(e,t,n){try{const i=n();return Cf(i)?i.catch(r=>{throw t.runOutsideAngular(()=>e.handleError(r)),r}):i}catch(i){throw t.runOutsideAngular(()=>e.handleError(i)),i}}(i,n,()=>{const s=t.get(A0);return s.runInitializers(),s.donePromise.then(()=>{if(function jA(e){"string"==typeof e&&(by=e.toLowerCase().replace(/_/g,"-"))}(t.get(pp,bd)||bd),!t.get(z1,!0))return Hl(e)?t.get(jr):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(Hl(e)){const v=t.get(jr);return void 0!==e.rootComponent&&v.bootstrap(e.rootComponent),v}return function G1(e,t){const n=e.injector.get(jr);if(e._bootstrapComponents.length>0)e._bootstrapComponents.forEach(i=>n.bootstrap(i));else{if(!e.instance.ngDoBootstrap)throw new rt(-403,!1);e.instance.ngDoBootstrap(n)}t.push(e)}(e.moduleRef,e.allPlatformModules),e.moduleRef})})})}({r3Injector:new Qv({providers:s,parent:r,debugName:"",runEnvironmentInitializers:!1}).injector,platformInjector:r,rootComponent:t})}catch(t){return Promise.reject(t)}}let KE=!1;function $R(){const e=[{provide:Ys,useFactory:()=>{let t=!0;return t=!!an($o,{optional:!0})?.get(Zu,null),t&&Gi("NgHydration"),t}},{provide:Zi,useValue:()=>{(function dv(e){lv=e})(!1),an(Ys)&&(function zR(){const e=go();let t;for(const n of e.body.childNodes)if(n.nodeType===Node.COMMENT_NODE&&n.textContent?.trim()===JD){t=n;break}if(!t)throw new rt(-507,!1)}(),function UR(){KE||(KE=!0,function ex(){Ag=qD}(),function OA(){my=AA}(),function UO(){gb=BO}(),function NA(){gy=PA}(),function uS(){u0=dS}(),function Mw(){Sv=Iw,Zh=xw}(),function ZM(){pv=QM}(),function CI(){M_=EI}())}())},multi:!0}];return e.push({provide:lg,useFactory:()=>an(Ys)},{provide:Ol,useFactory:()=>{if(an(Ys)){const t=an(jr);return()=>{(function WR(e){return e.whenStable()})(t).then(()=>{t.destroyed||function fv(e){const t=e._views;for(const n of t){const i=Rg(n);null!==i&&null!==i[Hn]&&(Jn(i)?ed(i):$h(i))}}(t)})}}return()=>{}},multi:!0}),Lr(e)}function GR(e){return"boolean"==typeof e?e:null!=e&&"false"!==e}function KR(e,t=NaN){return isNaN(parseFloat(e))||isNaN(Number(e))?t:Number(e)}function Pa(e,t){Gi("NgSignals");const n=ve(e);return t?.equal&&(n[C].equal=t.equal),n}function is(e){const t=x(null);try{return e()}finally{x(t)}}let qE=(()=>class e{view;node;constructor(n,i){this.view=n,this.node=i}static __NG_ELEMENT_ID__=JR})();function JR(){return new qE(xt(),jn())}let eP=(()=>{class e extends O0{pendingTasks=an(No);taskId=null;schedule(n){super.schedule(n),null===this.taskId&&(this.taskId=this.pendingTasks.add(),queueMicrotask(()=>this.flush()))}flush(){try{super.flush()}finally{null!==this.taskId&&(this.pendingTasks.remove(this.taskId),this.taskId=null)}}static \u0275prov=Tt({token:e,providedIn:"root",factory:()=>new e})}return e})();class tP{scheduler;effectFn;zone;injector;unregisterOnDestroy;watcher;constructor(t,n,i,r,s,l){this.scheduler=t,this.effectFn=n,this.zone=i,this.injector=s,this.watcher=function Y(e,t,n){const i=Object.create(De);n&&(i.consumerAllowSignalWrites=!0),i.fn=e,i.schedule=t;const r=v=>{i.cleanupFn=v};return i.ref={notify:()=>W(i),run:()=>{if(null===i.fn)return;if(function p(){return d}())throw new Error("Schedulers cannot synchronously execute watches while scheduling.");if(i.dirty=!1,i.hasRun&&!Z(i))return;i.hasRun=!0;const v=de(i);try{i.cleanupFn(),i.cleanupFn=Re,i.fn(r)}finally{ie(i,v)}},cleanup:()=>i.cleanupFn(),destroy:()=>function l(v){(function s(v){return null===v.fn&&null===v.schedule})(v)||(ae(v),v.cleanupFn(),v.fn=null,v.schedule=null,v.cleanupFn=Re)}(i),[C]:i},i.ref}(f=>this.runEffect(f),()=>this.schedule(),l),this.unregisterOnDestroy=r?.onDestroy(()=>this.destroy())}runEffect(t){try{this.effectFn(t)}catch(n){this.injector.get(Fo,null,{optional:!0})?.handleError(n)}}run(){this.watcher.run()}schedule(){this.scheduler.schedule(this)}destroy(){this.watcher.destroy(),this.unregisterOnDestroy?.()}}let xp=!1;class rP{[C];constructor(t){this[C]=t}destroy(){this[C].destroy()}}function Ip(e,t){if(xp)return function iP(e,t){Gi("NgSignals"),!t?.injector&&Io();const n=t?.injector??an(zi),i=!0!==t?.manualCleanup?n.get(Po):null,r=new tP(n.get(eP),e,typeof Zone>"u"?null:Zone.current,i,n,t?.allowSignalWrites??!1),s=n.get(gE,null,{optional:!0});return s&&8&s._lView[vn]?(s._lView[Yn]??=[]).push(r.watcher.notify):r.watcher.notify(),r}(e,t);Gi("NgSignals"),!t?.injector&&Io();const n=t?.injector??an(zi);let r,i=!0!==t?.manualCleanup?n.get(Po):null;const s=n.get(qE,null,{optional:!0}),l=n.get(mo);return null===s||t?.forceRoot?r=function lP(e,t,n){const i=Object.create(oP);return i.fn=e,i.scheduler=t,i.notifier=n,i.zone=typeof Zone<"u"?Zone.current:null,i.scheduler.schedule(i),i.notifier.notify(13),i}(e,n.get(xf),l):(r=function aP(e,t,n){const i=Object.create(sP);return i.view=e,i.zone=typeof Zone<"u"?Zone.current:null,i.notifier=t,i.fn=n,e[Pn]??=new Set,e[Pn].add(i),i.consumerMarkedDirty(i),i}(s.view,l,e),i instanceof Sm&&i._lView===s.view&&(i=null)),r.injector=n,null!==i&&(r.onDestroyFn=i.onDestroy(()=>r.destroy())),new rP(r)}const eC={...y,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,hasRun:!1,cleanupFns:void 0,zone:null,kind:"effect",onDestroyFn:Ga,run(){if(this.dirty=!1,this.hasRun&&!Z(this))return;this.hasRun=!0;const e=i=>(this.cleanupFns??=[]).push(i),t=de(this),n=ac(!1);try{this.maybeCleanup(),this.fn(e)}finally{ac(n),ie(this,t)}},maybeCleanup(){if(this.cleanupFns?.length)try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[]}}},oP={...eC,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(13)},destroy(){ae(this),this.onDestroyFn(),this.maybeCleanup(),this.scheduler.remove(this)}},sP={...eC,consumerMarkedDirty(){this.view[vn]|=8192,ho(this.view),this.notifier.notify(14)},destroy(){ae(this),this.onDestroyFn(),this.maybeCleanup(),this.view[Pn]?.delete(this)}};function gP(e,t){const n=An(e),i=t.elementInjector||Do();return new Ml(n).create(i,t.projectableNodes,t.hostElement,t.environmentInjector)}function _P(e){const t=An(e);if(!t)return null;const n=new Ml(t);return{get selector(){return n.selector},get type(){return n.componentType},get inputs(){return n.inputs},get outputs(){return n.outputs},get ngContentSelectors(){return n.ngContentSelectors},get isStandalone(){return t.standalone},get isSignal(){return t.signals}}}},9417:(ut,Ie,a)=>{"use strict";a.d(Ie,{BC:()=>nt,JD:()=>Er,MJ:()=>hn,MR:()=>li,X1:()=>Lr,YN:()=>Ji,cV:()=>wt,cb:()=>ht,j4:()=>oi,k0:()=>Z,kq:()=>p,l_:()=>ar,me:()=>T,ok:()=>Oi,qT:()=>sr,vO:()=>tt,vS:()=>ti});var o=a(4438),c=a(177),O=a(6648),d=a(7468),w=a(1413),C=a(6354);let x=(()=>{class he{_renderer;_elementRef;onChange=U=>{};onTouched=()=>{};constructor(U,Ne){this._renderer=U,this._elementRef=Ne}setProperty(U,Ne){this._renderer.setProperty(this._elementRef.nativeElement,U,Ne)}registerOnTouched(U){this.onTouched=U}registerOnChange(U){this.onChange=U}setDisabledState(U){this.setProperty("disabled",U)}static \u0275fac=function(Ne){return new(Ne||he)(o.rXU(o.sFG),o.rXU(o.aKT))};static \u0275dir=o.FsC({type:he})}return he})(),D=(()=>{class he extends x{static \u0275fac=(()=>{let U;return function(st){return(U||(U=o.xGo(he)))(st||he)}})();static \u0275dir=o.FsC({type:he,features:[o.Vt3]})}return he})();const p=new o.nKC(""),h={provide:p,useExisting:(0,o.Rfq)(()=>T),multi:!0},P=new o.nKC("");let T=(()=>{class he extends x{_compositionMode;_composing=!1;constructor(U,Ne,st){super(U,Ne),this._compositionMode=st,null==this._compositionMode&&(this._compositionMode=!function u(){const he=(0,c.QT)()?(0,c.QT)().getUserAgent():"";return/android (\d+)/.test(he.toLowerCase())}())}writeValue(U){this.setProperty("value",U??"")}_handleInput(U){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(U)}_compositionStart(){this._composing=!0}_compositionEnd(U){this._composing=!1,this._compositionMode&&this.onChange(U)}static \u0275fac=function(Ne){return new(Ne||he)(o.rXU(o.sFG),o.rXU(o.aKT),o.rXU(P,8))};static \u0275dir=o.FsC({type:he,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(Ne,st){1&Ne&&o.bIt("input",function(On){return st._handleInput(On.target.value)})("blur",function(){return st.onTouched()})("compositionstart",function(){return st._compositionStart()})("compositionend",function(On){return st._compositionEnd(On.target.value)})},standalone:!1,features:[o.Jv_([h]),o.Vt3]})}return he})();function E(he){return null==he||("string"==typeof he||Array.isArray(he))&&0===he.length}function W(he){return null!=he&&"number"==typeof he.length}const ne=new o.nKC(""),de=new o.nKC(""),ie=/^(?=.{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])?)*$/;class Z{static min(pe){return function ae(he){return pe=>{if(E(pe.value)||E(he))return null;const U=parseFloat(pe.value);return!isNaN(U)&&U{if(E(pe.value)||E(he))return null;const U=parseFloat(pe.value);return!isNaN(U)&&U>he?{max:{max:he,actual:pe.value}}:null}}(pe)}static required(pe){return function _e(he){return E(he.value)?{required:!0}:null}(pe)}static requiredTrue(pe){return function Ce(he){return!0===he.value?null:{required:!0}}(pe)}static email(pe){return function Ae(he){return E(he.value)||ie.test(he.value)?null:{email:!0}}(pe)}static minLength(pe){return function ke(he){return pe=>E(pe.value)||!W(pe.value)?null:pe.value.lengthW(pe.value)&&pe.value.length>he?{maxlength:{requiredLength:he,actualLength:pe.value.length}}:null}(pe)}static pattern(pe){return function ve(he){if(!he)return ye;let pe,U;return"string"==typeof he?(U="","^"!==he.charAt(0)&&(U+="^"),U+=he,"$"!==he.charAt(he.length-1)&&(U+="$"),pe=new RegExp(U)):(U=he.toString(),pe=he),Ne=>{if(E(Ne.value))return null;const st=Ne.value;return pe.test(st)?null:{pattern:{requiredPattern:U,actualValue:st}}}}(pe)}static nullValidator(pe){return null}static compose(pe){return X(pe)}static composeAsync(pe){return N(pe)}}function ye(he){return null}function Se(he){return null!=he}function z(he){return(0,o.jNT)(he)?(0,O.H)(he):he}function te(he){let pe={};return he.forEach(U=>{pe=null!=U?{...pe,...U}:pe}),0===Object.keys(pe).length?null:pe}function L(he,pe){return pe.map(U=>U(he))}function J(he){return he.map(pe=>function q(he){return!he.validate}(pe)?pe:U=>pe.validate(U))}function X(he){if(!he)return null;const pe=he.filter(Se);return 0==pe.length?null:function(U){return te(L(U,pe))}}function K(he){return null!=he?X(J(he)):null}function N(he){if(!he)return null;const pe=he.filter(Se);return 0==pe.length?null:function(U){const Ne=L(U,pe).map(z);return(0,d.p)(Ne).pipe((0,C.T)(te))}}function V(he){return null!=he?N(J(he)):null}function I(he,pe){return null===he?[pe]:Array.isArray(he)?[...he,pe]:[he,pe]}function M(he){return he._rawValidators}function j(he){return he._rawAsyncValidators}function ge(he){return he?Array.isArray(he)?he:[he]:[]}function Me(he,pe){return Array.isArray(he)?he.includes(pe):he===pe}function oe(he,pe){const U=ge(pe);return ge(he).forEach(st=>{Me(U,st)||U.push(st)}),U}function R(he,pe){return ge(pe).filter(U=>!Me(he,U))}class se{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(pe){this._rawValidators=pe||[],this._composedValidatorFn=K(this._rawValidators)}_setAsyncValidators(pe){this._rawAsyncValidators=pe||[],this._composedAsyncValidatorFn=V(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(pe){this._onDestroyCallbacks.push(pe)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(pe=>pe()),this._onDestroyCallbacks=[]}reset(pe=void 0){this.control&&this.control.reset(pe)}hasError(pe,U){return!!this.control&&this.control.hasError(pe,U)}getError(pe,U){return this.control?this.control.getError(pe,U):null}}class Ee extends se{name;get formDirective(){return null}get path(){return null}}class tt extends se{_parent=null;name=null;valueAccessor=null}class Y{_cd;constructor(pe){this._cd=pe}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}}let nt=(()=>{class he extends Y{constructor(U){super(U)}static \u0275fac=function(Ne){return new(Ne||he)(o.rXU(tt,2))};static \u0275dir=o.FsC({type:he,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(Ne,st){2&Ne&&o.AVh("ng-untouched",st.isUntouched)("ng-touched",st.isTouched)("ng-pristine",st.isPristine)("ng-dirty",st.isDirty)("ng-valid",st.isValid)("ng-invalid",st.isInvalid)("ng-pending",st.isPending)},standalone:!1,features:[o.Vt3]})}return he})(),ht=(()=>{class he extends Y{constructor(U){super(U)}static \u0275fac=function(Ne){return new(Ne||he)(o.rXU(Ee,10))};static \u0275dir=o.FsC({type:he,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(Ne,st){2&Ne&&o.AVh("ng-untouched",st.isUntouched)("ng-touched",st.isTouched)("ng-pristine",st.isPristine)("ng-dirty",st.isDirty)("ng-valid",st.isValid)("ng-invalid",st.isInvalid)("ng-pending",st.isPending)("ng-submitted",st.isSubmitted)},standalone:!1,features:[o.Vt3]})}return he})();const It="VALID",Ft="INVALID",kt="PENDING",Qt="DISABLED";class rn{}class nn extends rn{value;source;constructor(pe,U){super(),this.value=pe,this.source=U}}class $e extends rn{pristine;source;constructor(pe,U){super(),this.pristine=pe,this.source=U}}class lt extends rn{touched;source;constructor(pe,U){super(),this.touched=pe,this.source=U}}class Te extends rn{status;source;constructor(pe,U){super(),this.status=pe,this.source=U}}class He extends rn{source;constructor(pe){super(),this.source=pe}}class at extends rn{source;constructor(pe){super(),this.source=pe}}function Lt(he){return(mt(he)?he.validators:he)||null}function Un(he,pe){return(mt(pe)?pe.asyncValidators:he)||null}function mt(he){return null!=he&&!Array.isArray(he)&&"object"==typeof he}function We(he,pe,U){const Ne=he.controls;if(!(pe?Object.keys(Ne):Ne).length)throw new o.wOt(1e3,"");if(!Ne[U])throw new o.wOt(1001,"")}function it(he,pe,U){he._forEachChild((Ne,st)=>{if(void 0===U[st])throw new o.wOt(1002,"")})}class bt{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(pe,U){this._assignValidators(pe),this._assignAsyncValidators(U)}get validator(){return this._composedValidatorFn}set validator(pe){this._rawValidators=this._composedValidatorFn=pe}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(pe){this._rawAsyncValidators=this._composedAsyncValidatorFn=pe}get parent(){return this._parent}get status(){return(0,o.O8t)(this.statusReactive)}set status(pe){(0,o.O8t)(()=>this.statusReactive.set(pe))}_status=(0,o.EWP)(()=>this.statusReactive());statusReactive=(0,o.vPA)(void 0);get valid(){return this.status===It}get invalid(){return this.status===Ft}get pending(){return this.status==kt}get disabled(){return this.status===Qt}get enabled(){return this.status!==Qt}errors;get pristine(){return(0,o.O8t)(this.pristineReactive)}set pristine(pe){(0,o.O8t)(()=>this.pristineReactive.set(pe))}_pristine=(0,o.EWP)(()=>this.pristineReactive());pristineReactive=(0,o.vPA)(!0);get dirty(){return!this.pristine}get touched(){return(0,o.O8t)(this.touchedReactive)}set touched(pe){(0,o.O8t)(()=>this.touchedReactive.set(pe))}_touched=(0,o.EWP)(()=>this.touchedReactive());touchedReactive=(0,o.vPA)(!1);get untouched(){return!this.touched}_events=new w.B;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(pe){this._assignValidators(pe)}setAsyncValidators(pe){this._assignAsyncValidators(pe)}addValidators(pe){this.setValidators(oe(pe,this._rawValidators))}addAsyncValidators(pe){this.setAsyncValidators(oe(pe,this._rawAsyncValidators))}removeValidators(pe){this.setValidators(R(pe,this._rawValidators))}removeAsyncValidators(pe){this.setAsyncValidators(R(pe,this._rawAsyncValidators))}hasValidator(pe){return Me(this._rawValidators,pe)}hasAsyncValidator(pe){return Me(this._rawAsyncValidators,pe)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(pe={}){const U=!1===this.touched;this.touched=!0;const Ne=pe.sourceControl??this;this._parent&&!pe.onlySelf&&this._parent.markAsTouched({...pe,sourceControl:Ne}),U&&!1!==pe.emitEvent&&this._events.next(new lt(!0,Ne))}markAllAsTouched(pe={}){this.markAsTouched({onlySelf:!0,emitEvent:pe.emitEvent,sourceControl:this}),this._forEachChild(U=>U.markAllAsTouched(pe))}markAsUntouched(pe={}){const U=!0===this.touched;this.touched=!1,this._pendingTouched=!1;const Ne=pe.sourceControl??this;this._forEachChild(st=>{st.markAsUntouched({onlySelf:!0,emitEvent:pe.emitEvent,sourceControl:Ne})}),this._parent&&!pe.onlySelf&&this._parent._updateTouched(pe,Ne),U&&!1!==pe.emitEvent&&this._events.next(new lt(!1,Ne))}markAsDirty(pe={}){const U=!0===this.pristine;this.pristine=!1;const Ne=pe.sourceControl??this;this._parent&&!pe.onlySelf&&this._parent.markAsDirty({...pe,sourceControl:Ne}),U&&!1!==pe.emitEvent&&this._events.next(new $e(!1,Ne))}markAsPristine(pe={}){const U=!1===this.pristine;this.pristine=!0,this._pendingDirty=!1;const Ne=pe.sourceControl??this;this._forEachChild(st=>{st.markAsPristine({onlySelf:!0,emitEvent:pe.emitEvent})}),this._parent&&!pe.onlySelf&&this._parent._updatePristine(pe,Ne),U&&!1!==pe.emitEvent&&this._events.next(new $e(!0,Ne))}markAsPending(pe={}){this.status=kt;const U=pe.sourceControl??this;!1!==pe.emitEvent&&(this._events.next(new Te(this.status,U)),this.statusChanges.emit(this.status)),this._parent&&!pe.onlySelf&&this._parent.markAsPending({...pe,sourceControl:U})}disable(pe={}){const U=this._parentMarkedDirty(pe.onlySelf);this.status=Qt,this.errors=null,this._forEachChild(st=>{st.disable({...pe,onlySelf:!0})}),this._updateValue();const Ne=pe.sourceControl??this;!1!==pe.emitEvent&&(this._events.next(new nn(this.value,Ne)),this._events.next(new Te(this.status,Ne)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...pe,skipPristineCheck:U},this),this._onDisabledChange.forEach(st=>st(!0))}enable(pe={}){const U=this._parentMarkedDirty(pe.onlySelf);this.status=It,this._forEachChild(Ne=>{Ne.enable({...pe,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:pe.emitEvent}),this._updateAncestors({...pe,skipPristineCheck:U},this),this._onDisabledChange.forEach(Ne=>Ne(!1))}_updateAncestors(pe,U){this._parent&&!pe.onlySelf&&(this._parent.updateValueAndValidity(pe),pe.skipPristineCheck||this._parent._updatePristine({},U),this._parent._updateTouched({},U))}setParent(pe){this._parent=pe}getRawValue(){return this.value}updateValueAndValidity(pe={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){const Ne=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===It||this.status===kt)&&this._runAsyncValidator(Ne,pe.emitEvent)}const U=pe.sourceControl??this;!1!==pe.emitEvent&&(this._events.next(new nn(this.value,U)),this._events.next(new Te(this.status,U)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!pe.onlySelf&&this._parent.updateValueAndValidity({...pe,sourceControl:U})}_updateTreeValidity(pe={emitEvent:!0}){this._forEachChild(U=>U._updateTreeValidity(pe)),this.updateValueAndValidity({onlySelf:!0,emitEvent:pe.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Qt:It}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(pe,U){if(this.asyncValidator){this.status=kt,this._hasOwnPendingAsyncValidator={emitEvent:!1!==U};const Ne=z(this.asyncValidator(this));this._asyncValidationSubscription=Ne.subscribe(st=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(st,{emitEvent:U,shouldHaveEmitted:pe})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();const pe=this._hasOwnPendingAsyncValidator?.emitEvent??!1;return this._hasOwnPendingAsyncValidator=null,pe}return!1}setErrors(pe,U={}){this.errors=pe,this._updateControlsErrors(!1!==U.emitEvent,this,U.shouldHaveEmitted)}get(pe){let U=pe;return null==U||(Array.isArray(U)||(U=U.split(".")),0===U.length)?null:U.reduce((Ne,st)=>Ne&&Ne._find(st),this)}getError(pe,U){const Ne=U?this.get(U):this;return Ne&&Ne.errors?Ne.errors[pe]:null}hasError(pe,U){return!!this.getError(pe,U)}get root(){let pe=this;for(;pe._parent;)pe=pe._parent;return pe}_updateControlsErrors(pe,U,Ne){this.status=this._calculateStatus(),pe&&this.statusChanges.emit(this.status),(pe||Ne)&&this._events.next(new Te(this.status,U)),this._parent&&this._parent._updateControlsErrors(pe,U,Ne)}_initObservables(){this.valueChanges=new o.bkB,this.statusChanges=new o.bkB}_calculateStatus(){return this._allControlsDisabled()?Qt:this.errors?Ft:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(kt)?kt:this._anyControlsHaveStatus(Ft)?Ft:It}_anyControlsHaveStatus(pe){return this._anyControls(U=>U.status===pe)}_anyControlsDirty(){return this._anyControls(pe=>pe.dirty)}_anyControlsTouched(){return this._anyControls(pe=>pe.touched)}_updatePristine(pe,U){const Ne=!this._anyControlsDirty(),st=this.pristine!==Ne;this.pristine=Ne,this._parent&&!pe.onlySelf&&this._parent._updatePristine(pe,U),st&&this._events.next(new $e(this.pristine,U))}_updateTouched(pe={},U){this.touched=this._anyControlsTouched(),this._events.next(new lt(this.touched,U)),this._parent&&!pe.onlySelf&&this._parent._updateTouched(pe,U)}_onDisabledChange=[];_registerOnCollectionChange(pe){this._onCollectionChange=pe}_setUpdateStrategy(pe){mt(pe)&&null!=pe.updateOn&&(this._updateOn=pe.updateOn)}_parentMarkedDirty(pe){return!pe&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}_find(pe){return null}_assignValidators(pe){this._rawValidators=Array.isArray(pe)?pe.slice():pe,this._composedValidatorFn=function Ut(he){return Array.isArray(he)?K(he):he||null}(this._rawValidators)}_assignAsyncValidators(pe){this._rawAsyncValidators=Array.isArray(pe)?pe.slice():pe,this._composedAsyncValidatorFn=function pt(he){return Array.isArray(he)?V(he):he||null}(this._rawAsyncValidators)}}class ct extends bt{constructor(pe,U,Ne){super(Lt(U),Un(Ne,U)),this.controls=pe,this._initObservables(),this._setUpdateStrategy(U),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;registerControl(pe,U){return this.controls[pe]?this.controls[pe]:(this.controls[pe]=U,U.setParent(this),U._registerOnCollectionChange(this._onCollectionChange),U)}addControl(pe,U,Ne={}){this.registerControl(pe,U),this.updateValueAndValidity({emitEvent:Ne.emitEvent}),this._onCollectionChange()}removeControl(pe,U={}){this.controls[pe]&&this.controls[pe]._registerOnCollectionChange(()=>{}),delete this.controls[pe],this.updateValueAndValidity({emitEvent:U.emitEvent}),this._onCollectionChange()}setControl(pe,U,Ne={}){this.controls[pe]&&this.controls[pe]._registerOnCollectionChange(()=>{}),delete this.controls[pe],U&&this.registerControl(pe,U),this.updateValueAndValidity({emitEvent:Ne.emitEvent}),this._onCollectionChange()}contains(pe){return this.controls.hasOwnProperty(pe)&&this.controls[pe].enabled}setValue(pe,U={}){it(this,0,pe),Object.keys(pe).forEach(Ne=>{We(this,!0,Ne),this.controls[Ne].setValue(pe[Ne],{onlySelf:!0,emitEvent:U.emitEvent})}),this.updateValueAndValidity(U)}patchValue(pe,U={}){null!=pe&&(Object.keys(pe).forEach(Ne=>{const st=this.controls[Ne];st&&st.patchValue(pe[Ne],{onlySelf:!0,emitEvent:U.emitEvent})}),this.updateValueAndValidity(U))}reset(pe={},U={}){this._forEachChild((Ne,st)=>{Ne.reset(pe?pe[st]:null,{onlySelf:!0,emitEvent:U.emitEvent})}),this._updatePristine(U,this),this._updateTouched(U,this),this.updateValueAndValidity(U)}getRawValue(){return this._reduceChildren({},(pe,U,Ne)=>(pe[Ne]=U.getRawValue(),pe))}_syncPendingControls(){let pe=this._reduceChildren(!1,(U,Ne)=>!!Ne._syncPendingControls()||U);return pe&&this.updateValueAndValidity({onlySelf:!0}),pe}_forEachChild(pe){Object.keys(this.controls).forEach(U=>{const Ne=this.controls[U];Ne&&pe(Ne,U)})}_setUpControls(){this._forEachChild(pe=>{pe.setParent(this),pe._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(pe){for(const[U,Ne]of Object.entries(this.controls))if(this.contains(U)&&pe(Ne))return!0;return!1}_reduceValue(){return this._reduceChildren({},(U,Ne,st)=>((Ne.enabled||this.disabled)&&(U[st]=Ne.value),U))}_reduceChildren(pe,U){let Ne=pe;return this._forEachChild((st,fn)=>{Ne=U(Ne,st,fn)}),Ne}_allControlsDisabled(){for(const pe of Object.keys(this.controls))if(this.controls[pe].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(pe){return this.controls.hasOwnProperty(pe)?this.controls[pe]:null}}class H extends ct{}const Oe=new o.nKC("",{providedIn:"root",factory:()=>je}),je="always";function Ze(he,pe){return[...pe.path,he]}function dt(he,pe,U=je){St(he,pe),pe.valueAccessor.writeValue(he.value),(he.disabled||"always"===U)&&pe.valueAccessor.setDisabledState?.(he.disabled),function Tt(he,pe){pe.valueAccessor.registerOnChange(U=>{he._pendingValue=U,he._pendingChange=!0,he._pendingDirty=!0,"change"===he.updateOn&&zt(he,pe)})}(he,pe),function Jt(he,pe){const U=(Ne,st)=>{pe.valueAccessor.writeValue(Ne),st&&pe.viewToModelUpdate(Ne)};he.registerOnChange(U),pe._registerOnDestroy(()=>{he._unregisterOnChange(U)})}(he,pe),function Gt(he,pe){pe.valueAccessor.registerOnTouched(()=>{he._pendingTouched=!0,"blur"===he.updateOn&&he._pendingChange&&zt(he,pe),"submit"!==he.updateOn&&he.markAsTouched()})}(he,pe),function At(he,pe){if(pe.valueAccessor.setDisabledState){const U=Ne=>{pe.valueAccessor.setDisabledState(Ne)};he.registerOnDisabledChange(U),pe._registerOnDestroy(()=>{he._unregisterOnDisabledChange(U)})}}(he,pe)}function _t(he,pe,U=!0){const Ne=()=>{};pe.valueAccessor&&(pe.valueAccessor.registerOnChange(Ne),pe.valueAccessor.registerOnTouched(Ne)),Bt(he,pe),he&&(pe._invokeOnDestroyCallbacks(),he._registerOnCollectionChange(()=>{}))}function Ct(he,pe){he.forEach(U=>{U.registerOnValidatorChange&&U.registerOnValidatorChange(pe)})}function St(he,pe){const U=M(he);null!==pe.validator?he.setValidators(I(U,pe.validator)):"function"==typeof U&&he.setValidators([U]);const Ne=j(he);null!==pe.asyncValidator?he.setAsyncValidators(I(Ne,pe.asyncValidator)):"function"==typeof Ne&&he.setAsyncValidators([Ne]);const st=()=>he.updateValueAndValidity();Ct(pe._rawValidators,st),Ct(pe._rawAsyncValidators,st)}function Bt(he,pe){let U=!1;if(null!==he){if(null!==pe.validator){const st=M(he);if(Array.isArray(st)&&st.length>0){const fn=st.filter(On=>On!==pe.validator);fn.length!==st.length&&(U=!0,he.setValidators(fn))}}if(null!==pe.asyncValidator){const st=j(he);if(Array.isArray(st)&&st.length>0){const fn=st.filter(On=>On!==pe.asyncValidator);fn.length!==st.length&&(U=!0,he.setAsyncValidators(fn))}}}const Ne=()=>{};return Ct(pe._rawValidators,Ne),Ct(pe._rawAsyncValidators,Ne),U}function zt(he,pe){he._pendingDirty&&he.markAsDirty(),he.setValue(he._pendingValue,{emitModelToViewChange:!1}),pe.viewToModelUpdate(he._pendingValue),he._pendingChange=!1}function en(he,pe){St(he,pe)}function Mn(he,pe){if(!he.hasOwnProperty("model"))return!1;const U=he.model;return!!U.isFirstChange()||!Object.is(pe,U.currentValue)}function gn(he,pe){he._syncPendingControls(),pe.forEach(U=>{const Ne=U.control;"submit"===Ne.updateOn&&Ne._pendingChange&&(U.viewToModelUpdate(Ne._pendingValue),Ne._pendingChange=!1)})}function In(he,pe){if(!pe)return null;let U,Ne,st;return Array.isArray(pe),pe.forEach(fn=>{fn.constructor===T?U=fn:function qt(he){return Object.getPrototypeOf(he.constructor)===D}(fn)?Ne=fn:st=fn}),st||Ne||U||null}const Ge={provide:Ee,useExisting:(0,o.Rfq)(()=>wt)},gt=Promise.resolve();let wt=(()=>{class he extends Ee{callSetDisabledState;get submitted(){return(0,o.O8t)(this.submittedReactive)}_submitted=(0,o.EWP)(()=>this.submittedReactive());submittedReactive=(0,o.vPA)(!1);_directives=new Set;form;ngSubmit=new o.bkB;options;constructor(U,Ne,st){super(),this.callSetDisabledState=st,this.form=new ct({},K(U),V(Ne))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(U){gt.then(()=>{const Ne=this._findContainer(U.path);U.control=Ne.registerControl(U.name,U.control),dt(U.control,U,this.callSetDisabledState),U.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(U)})}getControl(U){return this.form.get(U.path)}removeControl(U){gt.then(()=>{const Ne=this._findContainer(U.path);Ne&&Ne.removeControl(U.name),this._directives.delete(U)})}addFormGroup(U){gt.then(()=>{const Ne=this._findContainer(U.path),st=new ct({});en(st,U),Ne.registerControl(U.name,st),st.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(U){gt.then(()=>{const Ne=this._findContainer(U.path);Ne&&Ne.removeControl(U.name)})}getFormGroup(U){return this.form.get(U.path)}updateModel(U,Ne){gt.then(()=>{this.form.get(U.path).setValue(Ne)})}setValue(U){this.control.setValue(U)}onSubmit(U){return this.submittedReactive.set(!0),gn(this.form,this._directives),this.ngSubmit.emit(U),"dialog"===U?.target?.method}onReset(){this.resetForm()}resetForm(U=void 0){this.form.reset(U),this.submittedReactive.set(!1)}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(U){return U.pop(),U.length?this.form.get(U):this.form}static \u0275fac=function(Ne){return new(Ne||he)(o.rXU(ne,10),o.rXU(de,10),o.rXU(Oe,8))};static \u0275dir=o.FsC({type:he,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(Ne,st){1&Ne&&o.bIt("submit",function(On){return st.onSubmit(On)})("reset",function(){return st.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[o.Jv_([Ge]),o.Vt3]})}return he})();function Wt(he,pe){const U=he.indexOf(pe);U>-1&&he.splice(U,1)}function Ht(he){return"object"==typeof he&&null!==he&&2===Object.keys(he).length&&"value"in he&&"disabled"in he}const hn=class extends bt{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(pe=null,U,Ne){super(Lt(U),Un(Ne,U)),this._applyFormState(pe),this._setUpdateStrategy(U),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),mt(U)&&(U.nonNullable||U.initialValueIsDefault)&&(this.defaultValue=Ht(pe)?pe.value:pe)}setValue(pe,U={}){this.value=this._pendingValue=pe,this._onChange.length&&!1!==U.emitModelToViewChange&&this._onChange.forEach(Ne=>Ne(this.value,!1!==U.emitViewToModelChange)),this.updateValueAndValidity(U)}patchValue(pe,U={}){this.setValue(pe,U)}reset(pe=this.defaultValue,U={}){this._applyFormState(pe),this.markAsPristine(U),this.markAsUntouched(U),this.setValue(this.value,U),this._pendingChange=!1}_updateValue(){}_anyControls(pe){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(pe){this._onChange.push(pe)}_unregisterOnChange(pe){Wt(this._onChange,pe)}registerOnDisabledChange(pe){this._onDisabledChange.push(pe)}_unregisterOnDisabledChange(pe){Wt(this._onDisabledChange,pe)}_forEachChild(pe){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(pe){Ht(pe)?(this.value=this._pendingValue=pe.value,pe.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=pe}},pn={provide:tt,useExisting:(0,o.Rfq)(()=>ti)},wn=Promise.resolve();let ti=(()=>{class he extends tt{_changeDetectorRef;callSetDisabledState;control=new hn;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name="";isDisabled;model;options;update=new o.bkB;constructor(U,Ne,st,fn,On,Dr){super(),this._changeDetectorRef=On,this.callSetDisabledState=Dr,this._parent=U,this._setValidators(Ne),this._setAsyncValidators(st),this.valueAccessor=In(0,fn)}ngOnChanges(U){if(this._checkForErrors(),!this._registered||"name"in U){if(this._registered&&(this._checkName(),this.formDirective)){const Ne=U.name.previousValue;this.formDirective.removeControl({name:Ne,path:this._getPath(Ne)})}this._setUpControl()}"isDisabled"in U&&this._updateDisabled(U),Mn(U,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(U){this.viewModel=U,this.update.emit(U)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){dt(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(U){wn.then(()=>{this.control.setValue(U,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(U){const Ne=U.isDisabled.currentValue,st=0!==Ne&&(0,o.L39)(Ne);wn.then(()=>{st&&!this.control.disabled?this.control.disable():!st&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(U){return this._parent?Ze(U,this._parent):[U]}static \u0275fac=function(Ne){return new(Ne||he)(o.rXU(Ee,9),o.rXU(ne,10),o.rXU(de,10),o.rXU(p,10),o.rXU(o.gRc,8),o.rXU(Oe,8))};static \u0275dir=o.FsC({type:he,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],standalone:!1,features:[o.Jv_([pn]),o.Vt3,o.OA$]})}return he})(),sr=(()=>{class he{static \u0275fac=function(Ne){return new(Ne||he)};static \u0275dir=o.FsC({type:he,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""],standalone:!1})}return he})();const pr={provide:p,useExisting:(0,o.Rfq)(()=>li),multi:!0};let li=(()=>{class he extends D{writeValue(U){this.setProperty("value",parseFloat(U))}registerOnChange(U){this.onChange=Ne=>{U(""==Ne?null:parseFloat(Ne))}}static \u0275fac=(()=>{let U;return function(st){return(U||(U=o.xGo(he)))(st||he)}})();static \u0275dir=o.FsC({type:he,selectors:[["input","type","range","formControlName",""],["input","type","range","formControl",""],["input","type","range","ngModel",""]],hostBindings:function(Ne,st){1&Ne&&o.bIt("change",function(On){return st.onChange(On.target.value)})("input",function(On){return st.onChange(On.target.value)})("blur",function(){return st.onTouched()})},standalone:!1,features:[o.Jv_([pr]),o.Vt3]})}return he})();const tr=new o.nKC(""),Pr={provide:tt,useExisting:(0,o.Rfq)(()=>ar)};let ar=(()=>{class he extends tt{_ngModelWarningConfig;callSetDisabledState;viewModel;form;set isDisabled(U){}model;update=new o.bkB;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(U,Ne,st,fn,On){super(),this._ngModelWarningConfig=fn,this.callSetDisabledState=On,this._setValidators(U),this._setAsyncValidators(Ne),this.valueAccessor=In(0,st)}ngOnChanges(U){if(this._isControlChanged(U)){const Ne=U.form.previousValue;Ne&&_t(Ne,this,!1),dt(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}Mn(U,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&_t(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(U){this.viewModel=U,this.update.emit(U)}_isControlChanged(U){return U.hasOwnProperty("form")}static \u0275fac=function(Ne){return new(Ne||he)(o.rXU(ne,10),o.rXU(de,10),o.rXU(p,10),o.rXU(tr,8),o.rXU(Oe,8))};static \u0275dir=o.FsC({type:he,selectors:[["","formControl",""]],inputs:{form:[0,"formControl","form"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],standalone:!1,features:[o.Jv_([Pr]),o.Vt3,o.OA$]})}return he})();const ji={provide:Ee,useExisting:(0,o.Rfq)(()=>oi)};let oi=(()=>{class he extends Ee{callSetDisabledState;get submitted(){return(0,o.O8t)(this._submittedReactive)}set submitted(U){this._submittedReactive.set(U)}_submitted=(0,o.EWP)(()=>this._submittedReactive());_submittedReactive=(0,o.vPA)(!1);_oldForm;_onCollectionChange=()=>this._updateDomValue();directives=[];form=null;ngSubmit=new o.bkB;constructor(U,Ne,st){super(),this.callSetDisabledState=st,this._setValidators(U),this._setAsyncValidators(Ne)}ngOnChanges(U){this._checkFormPresent(),U.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(Bt(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(U){const Ne=this.form.get(U.path);return dt(Ne,U,this.callSetDisabledState),Ne.updateValueAndValidity({emitEvent:!1}),this.directives.push(U),Ne}getControl(U){return this.form.get(U.path)}removeControl(U){_t(U.control||null,U,!1),function Ve(he,pe){const U=he.indexOf(pe);U>-1&&he.splice(U,1)}(this.directives,U)}addFormGroup(U){this._setUpFormContainer(U)}removeFormGroup(U){this._cleanUpFormContainer(U)}getFormGroup(U){return this.form.get(U.path)}addFormArray(U){this._setUpFormContainer(U)}removeFormArray(U){this._cleanUpFormContainer(U)}getFormArray(U){return this.form.get(U.path)}updateModel(U,Ne){this.form.get(U.path).setValue(Ne)}onSubmit(U){return this._submittedReactive.set(!0),gn(this.form,this.directives),this.ngSubmit.emit(U),this.form._events.next(new He(this.control)),"dialog"===U?.target?.method}onReset(){this.resetForm()}resetForm(U=void 0){this.form.reset(U),this._submittedReactive.set(!1),this.form._events.next(new at(this.form))}_updateDomValue(){this.directives.forEach(U=>{const Ne=U.control,st=this.form.get(U.path);Ne!==st&&(_t(Ne||null,U),(he=>he instanceof hn)(st)&&(dt(st,U,this.callSetDisabledState),U.control=st))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(U){const Ne=this.form.get(U.path);en(Ne,U),Ne.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(U){if(this.form){const Ne=this.form.get(U.path);Ne&&function dn(he,pe){return Bt(he,pe)}(Ne,U)&&Ne.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){St(this.form,this),this._oldForm&&Bt(this._oldForm,this)}_checkFormPresent(){}static \u0275fac=function(Ne){return new(Ne||he)(o.rXU(ne,10),o.rXU(de,10),o.rXU(Oe,8))};static \u0275dir=o.FsC({type:he,selectors:[["","formGroup",""]],hostBindings:function(Ne,st){1&Ne&&o.bIt("submit",function(On){return st.onSubmit(On)})("reset",function(){return st.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[o.Jv_([ji]),o.Vt3,o.OA$]})}return he})();const Wi={provide:tt,useExisting:(0,o.Rfq)(()=>Er)};let Er=(()=>{class he extends tt{_ngModelWarningConfig;_added=!1;viewModel;control;name=null;set isDisabled(U){}model;update=new o.bkB;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(U,Ne,st,fn,On){super(),this._ngModelWarningConfig=On,this._parent=U,this._setValidators(Ne),this._setAsyncValidators(st),this.valueAccessor=In(0,fn)}ngOnChanges(U){this._added||this._setUpControl(),Mn(U,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(U){this.viewModel=U,this.update.emit(U)}get path(){return Ze(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}_setUpControl(){this.control=this.formDirective.addControl(this),this._added=!0}static \u0275fac=function(Ne){return new(Ne||he)(o.rXU(Ee,13),o.rXU(ne,10),o.rXU(de,10),o.rXU(p,10),o.rXU(tr,8))};static \u0275dir=o.FsC({type:he,selectors:[["","formControlName",""]],inputs:{name:[0,"formControlName","name"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},standalone:!1,features:[o.Jv_([Wi]),o.Vt3,o.OA$]})}return he})(),Fn=(()=>{class he{static \u0275fac=function(Ne){return new(Ne||he)};static \u0275mod=o.$C({type:he});static \u0275inj=o.G2t({})}return he})();class Zi extends bt{constructor(pe,U,Ne){super(Lt(U),Un(Ne,U)),this.controls=pe,this._initObservables(),this._setUpdateStrategy(U),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;at(pe){return this.controls[this._adjustIndex(pe)]}push(pe,U={}){this.controls.push(pe),this._registerControl(pe),this.updateValueAndValidity({emitEvent:U.emitEvent}),this._onCollectionChange()}insert(pe,U,Ne={}){this.controls.splice(pe,0,U),this._registerControl(U),this.updateValueAndValidity({emitEvent:Ne.emitEvent})}removeAt(pe,U={}){let Ne=this._adjustIndex(pe);Ne<0&&(Ne=0),this.controls[Ne]&&this.controls[Ne]._registerOnCollectionChange(()=>{}),this.controls.splice(Ne,1),this.updateValueAndValidity({emitEvent:U.emitEvent})}setControl(pe,U,Ne={}){let st=this._adjustIndex(pe);st<0&&(st=0),this.controls[st]&&this.controls[st]._registerOnCollectionChange(()=>{}),this.controls.splice(st,1),U&&(this.controls.splice(st,0,U),this._registerControl(U)),this.updateValueAndValidity({emitEvent:Ne.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(pe,U={}){it(this,0,pe),pe.forEach((Ne,st)=>{We(this,!1,st),this.at(st).setValue(Ne,{onlySelf:!0,emitEvent:U.emitEvent})}),this.updateValueAndValidity(U)}patchValue(pe,U={}){null!=pe&&(pe.forEach((Ne,st)=>{this.at(st)&&this.at(st).patchValue(Ne,{onlySelf:!0,emitEvent:U.emitEvent})}),this.updateValueAndValidity(U))}reset(pe=[],U={}){this._forEachChild((Ne,st)=>{Ne.reset(pe[st],{onlySelf:!0,emitEvent:U.emitEvent})}),this._updatePristine(U,this),this._updateTouched(U,this),this.updateValueAndValidity(U)}getRawValue(){return this.controls.map(pe=>pe.getRawValue())}clear(pe={}){this.controls.length<1||(this._forEachChild(U=>U._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:pe.emitEvent}))}_adjustIndex(pe){return pe<0?pe+this.length:pe}_syncPendingControls(){let pe=this.controls.reduce((U,Ne)=>!!Ne._syncPendingControls()||U,!1);return pe&&this.updateValueAndValidity({onlySelf:!0}),pe}_forEachChild(pe){this.controls.forEach((U,Ne)=>{pe(U,Ne)})}_updateValue(){this.value=this.controls.filter(pe=>pe.enabled||this.disabled).map(pe=>pe.value)}_anyControls(pe){return this.controls.some(U=>U.enabled&&pe(U))}_setUpControls(){this._forEachChild(pe=>this._registerControl(pe))}_allControlsDisabled(){for(const pe of this.controls)if(pe.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(pe){pe.setParent(this),pe._registerOnCollectionChange(this._onCollectionChange)}_find(pe){return this.at(pe)??null}}function Zr(he){return!!he&&(void 0!==he.asyncValidators||void 0!==he.validators||void 0!==he.updateOn)}let Oi=(()=>{class he{useNonNullable=!1;get nonNullable(){const U=new he;return U.useNonNullable=!0,U}group(U,Ne=null){const st=this._reduceControls(U);let fn={};return Zr(Ne)?fn=Ne:null!==Ne&&(fn.validators=Ne.validator,fn.asyncValidators=Ne.asyncValidator),new ct(st,fn)}record(U,Ne=null){const st=this._reduceControls(U);return new H(st,Ne)}control(U,Ne,st){let fn={};return this.useNonNullable?(Zr(Ne)?fn=Ne:(fn.validators=Ne,fn.asyncValidators=st),new hn(U,{...fn,nonNullable:!0})):new hn(U,Ne,st)}array(U,Ne,st){const fn=U.map(On=>this._createControl(On));return new Zi(fn,Ne,st)}_reduceControls(U){const Ne={};return Object.keys(U).forEach(st=>{Ne[st]=this._createControl(U[st])}),Ne}_createControl(U){return U instanceof hn||U instanceof bt?U:Array.isArray(U)?this.control(U[0],U.length>1?U[1]:null,U.length>2?U[2]:null):this.control(U)}static \u0275fac=function(Ne){return new(Ne||he)};static \u0275prov=o.jDH({token:he,factory:he.\u0275fac,providedIn:"root"})}return he})(),Ji=(()=>{class he{static withConfig(U){return{ngModule:he,providers:[{provide:Oe,useValue:U.callSetDisabledState??je}]}}static \u0275fac=function(Ne){return new(Ne||he)};static \u0275mod=o.$C({type:he});static \u0275inj=o.G2t({imports:[Fn]})}return he})(),Lr=(()=>{class he{static withConfig(U){return{ngModule:he,providers:[{provide:tr,useValue:U.warnOnNgModelWithFormControl??"always"},{provide:Oe,useValue:U.callSetDisabledState??je}]}}static \u0275fac=function(Ne){return new(Ne||he)};static \u0275mod=o.$C({type:he});static \u0275inj=o.G2t({imports:[Fn]})}return he})()},8834:(ut,Ie,a)=>{"use strict";a.d(Ie,{$z:()=>ae,Hl:()=>te,iY:()=>Se});var o=a(4438),c=a(9888),O=a(3),d=a(9046);const w=["mat-button",""],C=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],x=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],u=["mat-icon-button",""],P=["*"],E=new o.nKC("MAT_BUTTON_CONFIG"),ne=[{attribute:"mat-button",mdcClasses:["mdc-button","mat-mdc-button"]},{attribute:"mat-flat-button",mdcClasses:["mdc-button","mdc-button--unelevated","mat-mdc-unelevated-button"]},{attribute:"mat-raised-button",mdcClasses:["mdc-button","mdc-button--raised","mat-mdc-raised-button"]},{attribute:"mat-stroked-button",mdcClasses:["mdc-button","mdc-button--outlined","mat-mdc-outlined-button"]},{attribute:"mat-fab",mdcClasses:["mdc-fab","mat-mdc-fab-base","mat-mdc-fab"]},{attribute:"mat-mini-fab",mdcClasses:["mdc-fab","mat-mdc-fab-base","mdc-fab--mini","mat-mdc-mini-fab"]},{attribute:"mat-icon-button",mdcClasses:["mdc-icon-button","mat-mdc-icon-button"]}];let de=(()=>{class L{_elementRef=(0,o.WQX)(o.aKT);_ngZone=(0,o.WQX)(o.SKi);_animationMode=(0,o.WQX)(o.bc$,{optional:!0});_focusMonitor=(0,o.WQX)(c.FN);_rippleLoader=(0,o.WQX)(O.Ej);_isFab=!1;color;get disableRipple(){return this._disableRipple}set disableRipple(J){this._disableRipple=J,this._updateRippleDisabled()}_disableRipple=!1;get disabled(){return this._disabled}set disabled(J){this._disabled=J,this._updateRippleDisabled()}_disabled=!1;ariaDisabled;disabledInteractive;constructor(){(0,o.WQX)(d.l).load(O.Ah);const J=(0,o.WQX)(E,{optional:!0}),X=this._elementRef.nativeElement,K=X.classList;this.disabledInteractive=J?.disabledInteractive??!1,this.color=J?.color??null,this._rippleLoader?.configureRipple(X,{className:"mat-mdc-button-ripple"});for(const{attribute:N,mdcClasses:V}of ne)X.hasAttribute(N)&&K.add(...V)}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement)}focus(J="program",X){J?this._focusMonitor.focusVia(this._elementRef.nativeElement,J,X):this._elementRef.nativeElement.focus(X)}_getAriaDisabled(){return null!=this.ariaDisabled?this.ariaDisabled:!(!this.disabled||!this.disabledInteractive)||null}_getDisabledAttribute(){return!(this.disabledInteractive||!this.disabled)||null}_updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementRef.nativeElement,this.disableRipple||this.disabled)}static \u0275fac=function(X){return new(X||L)};static \u0275dir=o.FsC({type:L,inputs:{color:"color",disableRipple:[2,"disableRipple","disableRipple",o.L39],disabled:[2,"disabled","disabled",o.L39],ariaDisabled:[2,"aria-disabled","ariaDisabled",o.L39],disabledInteractive:[2,"disabledInteractive","disabledInteractive",o.L39]},features:[o.GFd]})}return L})(),ae=(()=>{class L extends de{static \u0275fac=(()=>{let J;return function(K){return(J||(J=o.xGo(L)))(K||L)}})();static \u0275cmp=o.VBU({type:L,selectors:[["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""]],hostVars:14,hostBindings:function(X,K){2&X&&(o.BMQ("disabled",K._getDisabledAttribute())("aria-disabled",K._getAriaDisabled()),o.HbH(K.color?"mat-"+K.color:""),o.AVh("mat-mdc-button-disabled",K.disabled)("mat-mdc-button-disabled-interactive",K.disabledInteractive)("_mat-animation-noopable","NoopAnimations"===K._animationMode)("mat-unthemed",!K.color)("mat-mdc-button-base",!0))},exportAs:["matButton"],features:[o.Vt3],attrs:w,ngContentSelectors:x,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(X,K){1&X&&(o.NAR(C),o.nrm(0,"span",0),o.SdG(1),o.j41(2,"span",1),o.SdG(3,1),o.k0s(),o.SdG(4,2),o.nrm(5,"span",2)(6,"span",3)),2&X&&o.AVh("mdc-button__ripple",!K._isFab)("mdc-fab__ripple",K._isFab)},styles:['.mat-mdc-button-base{text-decoration:none}.mdc-button{-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0);padding:0 8px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__label{position:relative}.mat-mdc-button{padding:0 var(--mat-text-button-horizontal-padding, 12px);height:var(--mdc-text-button-container-height, 40px);font-family:var(--mdc-text-button-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mdc-text-button-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mdc-text-button-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mdc-text-button-label-text-transform);font-weight:var(--mdc-text-button-label-text-weight, var(--mat-sys-label-large-weight))}.mat-mdc-button,.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mat-sys-corner-full))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, var(--mat-sys-primary))}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-text-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-text-button-with-icon-horizontal-padding, 16px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-offset, -4px);margin-left:var(--mat-text-button-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-offset, -4px);margin-left:var(--mat-text-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, -4px)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-text-button-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-state-layer-color, var(--mat-sys-primary))}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-text-button-touch-target-display, block)}.mat-mdc-unelevated-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mdc-filled-button-container-height, 40px);font-family:var(--mdc-filled-button-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mdc-filled-button-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mdc-filled-button-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mdc-filled-button-label-text-transform);font-weight:var(--mdc-filled-button-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-filled-button-horizontal-padding, 24px)}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -8px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -8px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -8px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -8px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-filled-button-ripple-color, color-mix(in srgb, var(--mat-sys-on-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-state-layer-color, var(--mat-sys-on-primary))}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-unelevated-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-unelevated-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-unelevated-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-filled-button-touch-target-display, block)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, var(--mat-sys-on-primary));background-color:var(--mdc-filled-button-container-color, var(--mat-sys-primary))}.mat-mdc-unelevated-button,.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mat-sys-corner-full))}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-filled-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mdc-filled-button-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);box-shadow:var(--mdc-protected-button-container-elevation-shadow, var(--mat-sys-level1));height:var(--mdc-protected-button-container-height, 40px);font-family:var(--mdc-protected-button-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mdc-protected-button-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mdc-protected-button-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mdc-protected-button-label-text-transform);font-weight:var(--mdc-protected-button-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-protected-button-horizontal-padding, 24px)}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -8px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -8px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -8px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -8px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-protected-button-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-state-layer-color, var(--mat-sys-primary))}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-raised-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-raised-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-raised-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-protected-button-touch-target-display, block)}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, var(--mat-sys-primary));background-color:var(--mdc-protected-button-container-color, var(--mat-sys-surface))}.mat-mdc-raised-button,.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mat-sys-corner-full))}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation-shadow, var(--mat-sys-level2))}.mat-mdc-raised-button:focus{box-shadow:var(--mdc-protected-button-focus-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mdc-protected-button-pressed-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-protected-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mdc-protected-button-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation-shadow, var(--mat-sys-level0))}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mdc-outlined-button-container-height, 40px);font-family:var(--mdc-outlined-button-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mdc-outlined-button-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mdc-outlined-button-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mdc-outlined-button-label-text-transform);font-weight:var(--mdc-outlined-button-label-text-weight, var(--mat-sys-label-large-weight));border-radius:var(--mdc-outlined-button-container-shape, var(--mat-sys-corner-full));border-width:var(--mdc-outlined-button-outline-width, 1px);padding:0 var(--mat-outlined-button-horizontal-padding, 24px)}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -8px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -8px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -8px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -8px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-outlined-button-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-state-layer-color, var(--mat-sys-primary))}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-outlined-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-outlined-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-outlined-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-outlined-button-touch-target-display, block)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, var(--mat-sys-primary));border-color:var(--mdc-outlined-button-outline-color, var(--mat-sys-outline))}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-outlined-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:var(--mdc-outlined-button-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button .mdc-button__ripple{border-width:var(--mdc-outlined-button-outline-width, 1px);border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-focus-indicator,.mat-mdc-unelevated-button .mat-focus-indicator,.mat-mdc-raised-button .mat-focus-indicator,.mat-mdc-outlined-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus>.mat-focus-indicator::before,.mat-mdc-unelevated-button:focus>.mat-focus-indicator::before,.mat-mdc-raised-button:focus>.mat-focus-indicator::before,.mat-mdc-outlined-button:focus>.mat-focus-indicator::before{content:""}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px}.mat-mdc-unelevated-button .mat-focus-indicator::before,.mat-mdc-raised-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}',"@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-icon-button.mat-mdc-icon-button{outline:solid 1px}}"],encapsulation:2,changeDetection:0})}return L})(),Se=(()=>{class L extends de{constructor(){super(),this._rippleLoader.configureRipple(this._elementRef.nativeElement,{centered:!0})}static \u0275fac=function(X){return new(X||L)};static \u0275cmp=o.VBU({type:L,selectors:[["button","mat-icon-button",""]],hostVars:14,hostBindings:function(X,K){2&X&&(o.BMQ("disabled",K._getDisabledAttribute())("aria-disabled",K._getAriaDisabled()),o.HbH(K.color?"mat-"+K.color:""),o.AVh("mat-mdc-button-disabled",K.disabled)("mat-mdc-button-disabled-interactive",K.disabledInteractive)("_mat-animation-noopable","NoopAnimations"===K._animationMode)("mat-unthemed",!K.color)("mat-mdc-button-base",!0))},exportAs:["matButton"],features:[o.Vt3],attrs:u,ngContentSelectors:P,decls:4,vars:0,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(X,K){1&X&&(o.NAR(),o.nrm(0,"span",0),o.SdG(1),o.nrm(2,"span",1)(3,"span",2))},styles:['.mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:50%;flex-shrink:0;text-align:center;width:var(--mdc-icon-button-state-layer-size, 40px);height:var(--mdc-icon-button-state-layer-size, 40px);padding:calc(calc(var(--mdc-icon-button-state-layer-size, 40px) - var(--mdc-icon-button-icon-size, 24px)) / 2);font-size:var(--mdc-icon-button-icon-size, 24px);color:var(--mdc-icon-button-icon-color, var(--mat-sys-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus>.mat-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface-variant) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-icon-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-icon-button-touch-target-display, block)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-icon-button-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mdc-icon-button-icon-size, 24px);height:var(--mdc-icon-button-icon-size, 24px);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',"@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-icon-button.mat-mdc-icon-button{outline:solid 1px}}"],encapsulation:2,changeDetection:0})}return L})(),te=(()=>{class L{static \u0275fac=function(X){return new(X||L)};static \u0275mod=o.$C({type:L});static \u0275inj=o.G2t({imports:[O.yE,O.pZ,O.yE]})}return L})()},3:(ut,Ie,a)=>{"use strict";a.d(Ie,{$E:()=>ln,Ah:()=>M,Ej:()=>rn,MI:()=>ft,QC:()=>be,Sy:()=>Je,TL:()=>Be,X0:()=>Ce,ed:()=>ae,es:()=>I,is:()=>re,jb:()=>Q,pZ:()=>rt,r5:()=>Z,r6:()=>Ot,tO:()=>nn,wT:()=>le,yE:()=>_e});var o=a(4438),c=a(9888),O=a(8203),d=a(1413),w=a(6860),C=a(4085),x=a(9046),D=a(7336),p=a(177);const h=["text"],u=[[["mat-icon"]],"*"],P=["mat-icon","*"];function T($e,lt){if(1&$e&&o.nrm(0,"mat-pseudo-checkbox",1),2&$e){const Te=o.XpG();o.Y8G("disabled",Te.disabled)("state",Te.selected?"checked":"unchecked")}}function E($e,lt){if(1&$e&&o.nrm(0,"mat-pseudo-checkbox",3),2&$e){const Te=o.XpG();o.Y8G("disabled",Te.disabled)}}function W($e,lt){if(1&$e&&(o.j41(0,"span",4),o.EFF(1),o.k0s()),2&$e){const Te=o.XpG();o.R7$(),o.SpI("(",Te.group.label,")")}}const ne=["mat-internal-form-field",""],de=["*"];let Z=(()=>class $e{static STANDARD_CURVE="cubic-bezier(0.4,0.0,0.2,1)";static DECELERATION_CURVE="cubic-bezier(0.0,0.0,0.2,1)";static ACCELERATION_CURVE="cubic-bezier(0.4,0.0,1,1)";static SHARP_CURVE="cubic-bezier(0.4,0.0,0.6,1)"})(),ae=(()=>class $e{static COMPLEX="375ms";static ENTERING="225ms";static EXITING="195ms"})(),_e=(()=>{class $e{constructor(){(0,o.WQX)(c.Q_)._applyBodyHighContrastModeCssClasses()}static \u0275fac=function(He){return new(He||$e)};static \u0275mod=o.$C({type:$e});static \u0275inj=o.G2t({imports:[O.jI,O.jI]})}return $e})();class Ce{_defaultMatcher;ngControl;_parentFormGroup;_parentForm;_stateChanges;errorState=!1;matcher;constructor(lt,Te,He,at,Lt){this._defaultMatcher=lt,this.ngControl=Te,this._parentFormGroup=He,this._parentForm=at,this._stateChanges=Lt}updateErrorState(){const lt=this.errorState,Te=this._parentFormGroup||this._parentForm,He=this.matcher||this._defaultMatcher,at=this.ngControl?this.ngControl.control:null,Lt=He?.isErrorState(at,Te)??!1;Lt!==lt&&(this.errorState=Lt,this._stateChanges.next())}}let I=(()=>{class $e{isErrorState(Te,He){return!!(Te&&Te.invalid&&(Te.touched||He&&He.submitted))}static \u0275fac=function(He){return new(He||$e)};static \u0275prov=o.jDH({token:$e,factory:$e.\u0275fac,providedIn:"root"})}return $e})(),M=(()=>{class $e{static \u0275fac=function(He){return new(He||$e)};static \u0275cmp=o.VBU({type:$e,selectors:[["structural-styles"]],decls:0,vars:0,template:function(He,at){},styles:['.mat-focus-indicator{position:relative}.mat-focus-indicator::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border-width:var(--mat-focus-indicator-border-width, 3px);border-style:var(--mat-focus-indicator-border-style, solid);border-color:var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus::before{content:""}@media(forced-colors: active){html{--mat-focus-indicator-display: block}}'],encapsulation:2,changeDetection:0})}return $e})();var R=function($e){return $e[$e.FADING_IN=0]="FADING_IN",$e[$e.VISIBLE=1]="VISIBLE",$e[$e.FADING_OUT=2]="FADING_OUT",$e[$e.HIDDEN=3]="HIDDEN",$e}(R||{});class se{_renderer;element;config;_animationForciblyDisabledThroughCss;state=R.HIDDEN;constructor(lt,Te,He,at=!1){this._renderer=lt,this.element=Te,this.config=He,this._animationForciblyDisabledThroughCss=at}fadeOut(){this._renderer.fadeOutRipple(this)}}const Ee=(0,w.BQ)({passive:!0,capture:!0});class tt{_events=new Map;addHandler(lt,Te,He,at){const Lt=this._events.get(Te);if(Lt){const Ut=Lt.get(He);Ut?Ut.add(at):Lt.set(He,new Set([at]))}else this._events.set(Te,new Map([[He,new Set([at])]])),lt.runOutsideAngular(()=>{document.addEventListener(Te,this._delegateEventHandler,Ee)})}removeHandler(lt,Te,He){const at=this._events.get(lt);if(!at)return;const Lt=at.get(Te);Lt&&(Lt.delete(He),0===Lt.size&&at.delete(Te),0===at.size&&(this._events.delete(lt),document.removeEventListener(lt,this._delegateEventHandler,Ee)))}_delegateEventHandler=lt=>{const Te=(0,w.Fb)(lt);Te&&this._events.get(lt.type)?.forEach((He,at)=>{(at===Te||at.contains(Te))&&He.forEach(Lt=>Lt.handleEvent(lt))})}}const Y={enterDuration:225,exitDuration:150},De=(0,w.BQ)({passive:!0,capture:!0}),nt=["mousedown","touchstart"],ht=["mouseup","mouseleave","touchend","touchcancel"];let jt=(()=>{class $e{static \u0275fac=function(He){return new(He||$e)};static \u0275cmp=o.VBU({type:$e,selectors:[["ng-component"]],hostAttrs:["mat-ripple-style-loader",""],decls:0,vars:0,template:function(He,at){},styles:[".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0, 0, 0.2, 1);transform:scale3d(0, 0, 0);background-color:var(--mat-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface) 10%, transparent))}@media(forced-colors: active){.mat-ripple-element{display:none}}.cdk-drag-preview .mat-ripple-element,.cdk-drag-placeholder .mat-ripple-element{display:none}"],encapsulation:2,changeDetection:0})}return $e})();class Nt{_target;_ngZone;_platform;_containerElement;_triggerElement;_isPointerDown=!1;_activeRipples=new Map;_mostRecentTransientRipple;_lastTouchStartEvent;_pointerUpEventsRegistered=!1;_containerRect;static _eventManager=new tt;constructor(lt,Te,He,at,Lt){this._target=lt,this._ngZone=Te,this._platform=at,at.isBrowser&&(this._containerElement=(0,C.i8)(He)),Lt&&Lt.get(x.l).load(jt)}fadeInRipple(lt,Te,He={}){const at=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),Lt={...Y,...He.animation};He.centered&&(lt=at.left+at.width/2,Te=at.top+at.height/2);const Ut=He.radius||function on($e,lt,Te){const He=Math.max(Math.abs($e-Te.left),Math.abs($e-Te.right)),at=Math.max(Math.abs(lt-Te.top),Math.abs(lt-Te.bottom));return Math.sqrt(He*He+at*at)}(lt,Te,at),Un=lt-at.left,pt=Te-at.top,mt=Lt.enterDuration,We=document.createElement("div");We.classList.add("mat-ripple-element"),We.style.left=Un-Ut+"px",We.style.top=pt-Ut+"px",We.style.height=2*Ut+"px",We.style.width=2*Ut+"px",null!=He.color&&(We.style.backgroundColor=He.color),We.style.transitionDuration=`${mt}ms`,this._containerElement.appendChild(We);const it=window.getComputedStyle(We),ct=it.transitionDuration,b="none"===it.transitionProperty||"0s"===ct||"0s, 0s"===ct||0===at.width&&0===at.height,k=new se(this,We,He,b);We.style.transform="scale3d(1, 1, 1)",k.state=R.FADING_IN,He.persistent||(this._mostRecentTransientRipple=k);let A=null;return!b&&(mt||Lt.exitDuration)&&this._ngZone.runOutsideAngular(()=>{const H=()=>{A&&(A.fallbackTimer=null),clearTimeout(Oe),this._finishRippleTransition(k)},xe=()=>this._destroyRipple(k),Oe=setTimeout(xe,mt+100);We.addEventListener("transitionend",H),We.addEventListener("transitioncancel",xe),A={onTransitionEnd:H,onTransitionCancel:xe,fallbackTimer:Oe}}),this._activeRipples.set(k,A),(b||!mt)&&this._finishRippleTransition(k),k}fadeOutRipple(lt){if(lt.state===R.FADING_OUT||lt.state===R.HIDDEN)return;const Te=lt.element,He={...Y,...lt.config.animation};Te.style.transitionDuration=`${He.exitDuration}ms`,Te.style.opacity="0",lt.state=R.FADING_OUT,(lt._animationForciblyDisabledThroughCss||!He.exitDuration)&&this._finishRippleTransition(lt)}fadeOutAll(){this._getActiveRipples().forEach(lt=>lt.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(lt=>{lt.config.persistent||lt.fadeOut()})}setupTriggerEvents(lt){const Te=(0,C.i8)(lt);!this._platform.isBrowser||!Te||Te===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=Te,nt.forEach(He=>{Nt._eventManager.addHandler(this._ngZone,He,Te,this)}))}handleEvent(lt){"mousedown"===lt.type?this._onMousedown(lt):"touchstart"===lt.type?this._onTouchStart(lt):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{ht.forEach(Te=>{this._triggerElement.addEventListener(Te,this,De)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(lt){lt.state===R.FADING_IN?this._startFadeOutTransition(lt):lt.state===R.FADING_OUT&&this._destroyRipple(lt)}_startFadeOutTransition(lt){const Te=lt===this._mostRecentTransientRipple,{persistent:He}=lt.config;lt.state=R.VISIBLE,!He&&(!Te||!this._isPointerDown)&<.fadeOut()}_destroyRipple(lt){const Te=this._activeRipples.get(lt)??null;this._activeRipples.delete(lt),this._activeRipples.size||(this._containerRect=null),lt===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),lt.state=R.HIDDEN,null!==Te&&(lt.element.removeEventListener("transitionend",Te.onTransitionEnd),lt.element.removeEventListener("transitioncancel",Te.onTransitionCancel),null!==Te.fallbackTimer&&clearTimeout(Te.fallbackTimer)),lt.element.remove()}_onMousedown(lt){const Te=(0,c._G)(lt),He=this._lastTouchStartEvent&&Date.now(){!lt.config.persistent&&(lt.state===R.VISIBLE||lt.config.terminateOnPointerUp&<.state===R.FADING_IN)&<.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const lt=this._triggerElement;lt&&(nt.forEach(Te=>Nt._eventManager.removeHandler(Te,lt,this)),this._pointerUpEventsRegistered&&(ht.forEach(Te=>lt.removeEventListener(Te,this,De)),this._pointerUpEventsRegistered=!1))}}const ln=new o.nKC("mat-ripple-global-options");let Ot=(()=>{class $e{_elementRef=(0,o.WQX)(o.aKT);_animationMode=(0,o.WQX)(o.bc$,{optional:!0});color;unbounded;centered;radius=0;animation;get disabled(){return this._disabled}set disabled(Te){Te&&this.fadeOutAllNonPersistent(),this._disabled=Te,this._setupTriggerEventsIfEnabled()}_disabled=!1;get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(Te){this._trigger=Te,this._setupTriggerEventsIfEnabled()}_trigger;_rippleRenderer;_globalOptions;_isInitialized=!1;constructor(){const Te=(0,o.WQX)(o.SKi),He=(0,o.WQX)(w.OD),at=(0,o.WQX)(ln,{optional:!0}),Lt=(0,o.WQX)(o.zZn);this._globalOptions=at||{},this._rippleRenderer=new Nt(this,Te,this._elementRef,He,Lt)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,..."NoopAnimations"===this._animationMode?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(Te,He=0,at){return"number"==typeof Te?this._rippleRenderer.fadeInRipple(Te,He,{...this.rippleConfig,...at}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...Te})}static \u0275fac=function(He){return new(He||$e)};static \u0275dir=o.FsC({type:$e,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(He,at){2&He&&o.AVh("mat-ripple-unbounded",at.unbounded)},inputs:{color:[0,"matRippleColor","color"],unbounded:[0,"matRippleUnbounded","unbounded"],centered:[0,"matRippleCentered","centered"],radius:[0,"matRippleRadius","radius"],animation:[0,"matRippleAnimation","animation"],disabled:[0,"matRippleDisabled","disabled"],trigger:[0,"matRippleTrigger","trigger"]},exportAs:["matRipple"]})}return $e})(),rt=(()=>{class $e{static \u0275fac=function(He){return new(He||$e)};static \u0275mod=o.$C({type:$e});static \u0275inj=o.G2t({imports:[_e,_e]})}return $e})(),ce=(()=>{class $e{_animationMode=(0,o.WQX)(o.bc$,{optional:!0});state="unchecked";disabled=!1;appearance="full";constructor(){}static \u0275fac=function(He){return new(He||$e)};static \u0275cmp=o.VBU({type:$e,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:12,hostBindings:function(He,at){2&He&&o.AVh("mat-pseudo-checkbox-indeterminate","indeterminate"===at.state)("mat-pseudo-checkbox-checked","checked"===at.state)("mat-pseudo-checkbox-disabled",at.disabled)("mat-pseudo-checkbox-minimal","minimal"===at.appearance)("mat-pseudo-checkbox-full","full"===at.appearance)("_mat-animation-noopable","NoopAnimations"===at._animationMode)},inputs:{state:"state",disabled:"disabled",appearance:"appearance"},decls:0,vars:0,template:function(He,at){},styles:['.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-minimal-pseudo-checkbox-selected-checkmark-color, var(--mat-sys-primary))}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full{border-color:var(--mat-full-pseudo-checkbox-unselected-icon-color, var(--mat-sys-on-surface-variant));border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-full-pseudo-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-full-pseudo-checkbox-selected-icon-color, var(--mat-sys-primary));border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-full-pseudo-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-full-pseudo-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-full-pseudo-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}'],encapsulation:2,changeDetection:0})}return $e})(),ee=(()=>{class $e{static \u0275fac=function(He){return new(He||$e)};static \u0275mod=o.$C({type:$e});static \u0275inj=o.G2t({imports:[_e]})}return $e})();const re=new o.nKC("MAT_OPTION_PARENT_COMPONENT"),be=new o.nKC("MatOptgroup");class ft{source;isUserInput;constructor(lt,Te=!1){this.source=lt,this.isUserInput=Te}}let le=(()=>{class $e{_element=(0,o.WQX)(o.aKT);_changeDetectorRef=(0,o.WQX)(o.gRc);_parent=(0,o.WQX)(re,{optional:!0});group=(0,o.WQX)(be,{optional:!0});_signalDisableRipple=!1;_selected=!1;_active=!1;_disabled=!1;_mostRecentViewValue="";get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}value;id=(0,o.WQX)(c.g7).getId("mat-option-");get disabled(){return this.group&&this.group.disabled||this._disabled}set disabled(Te){this._disabled=Te}get disableRipple(){return this._signalDisableRipple?this._parent.disableRipple():!!this._parent?.disableRipple}get hideSingleSelectionIndicator(){return!(!this._parent||!this._parent.hideSingleSelectionIndicator)}onSelectionChange=new o.bkB;_text;_stateChanges=new d.B;constructor(){(0,o.WQX)(x.l).load(M),(0,o.WQX)(x.l).load(x.Y),this._signalDisableRipple=!!this._parent&&(0,o.Hps)(this._parent.disableRipple)}get active(){return this._active}get viewValue(){return(this._text?.nativeElement.textContent||"").trim()}select(Te=!0){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),Te&&this._emitSelectionChangeEvent())}deselect(Te=!0){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),Te&&this._emitSelectionChangeEvent())}focus(Te,He){const at=this._getHostElement();"function"==typeof at.focus&&at.focus(He)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(Te){(Te.keyCode===D.Fm||Te.keyCode===D.t6)&&!(0,D.rp)(Te)&&(this._selectViaInteraction(),Te.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=!this.multiple||!this._selected,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){const Te=this.viewValue;Te!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=Te)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(Te=!1){this.onSelectionChange.emit(new ft(this,Te))}static \u0275fac=function(He){return new(He||$e)};static \u0275cmp=o.VBU({type:$e,selectors:[["mat-option"]],viewQuery:function(He,at){if(1&He&&o.GBs(h,7),2&He){let Lt;o.mGM(Lt=o.lsd())&&(at._text=Lt.first)}},hostAttrs:["role","option",1,"mat-mdc-option","mdc-list-item"],hostVars:11,hostBindings:function(He,at){1&He&&o.bIt("click",function(){return at._selectViaInteraction()})("keydown",function(Ut){return at._handleKeydown(Ut)}),2&He&&(o.Mr5("id",at.id),o.BMQ("aria-selected",at.selected)("aria-disabled",at.disabled.toString()),o.AVh("mdc-list-item--selected",at.selected)("mat-mdc-option-multiple",at.multiple)("mat-mdc-option-active",at.active)("mdc-list-item--disabled",at.disabled))},inputs:{value:"value",id:"id",disabled:[2,"disabled","disabled",o.L39]},outputs:{onSelectionChange:"onSelectionChange"},exportAs:["matOption"],features:[o.GFd],ngContentSelectors:P,decls:8,vars:5,consts:[["text",""],["aria-hidden","true",1,"mat-mdc-option-pseudo-checkbox",3,"disabled","state"],[1,"mdc-list-item__primary-text"],["state","checked","aria-hidden","true","appearance","minimal",1,"mat-mdc-option-pseudo-checkbox",3,"disabled"],[1,"cdk-visually-hidden"],["aria-hidden","true","mat-ripple","",1,"mat-mdc-option-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled"]],template:function(He,at){1&He&&(o.NAR(u),o.DNE(0,T,1,2,"mat-pseudo-checkbox",1),o.SdG(1),o.j41(2,"span",2,0),o.SdG(4,1),o.k0s(),o.DNE(5,E,1,1,"mat-pseudo-checkbox",3)(6,W,2,1,"span",4),o.nrm(7,"div",5)),2&He&&(o.vxM(at.multiple?0:-1),o.R7$(5),o.vxM(at.multiple||!at.selected||at.hideSingleSelectionIndicator?-1:5),o.R7$(),o.vxM(at.group&&at.group._inert?6:-1),o.R7$(),o.Y8G("matRippleTrigger",at._getHostElement())("matRippleDisabled",at.disabled||at.disableRipple))},dependencies:[ce,Ot],styles:['.mat-mdc-option{-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-option-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-option-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-option-label-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-option-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-option-label-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent));outline:0}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color, var(--mat-sys-secondary-container))}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option .mat-pseudo-checkbox{--mat-minimal-pseudo-checkbox-selected-checkmark-color: var(--mat-option-selected-state-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-option.mdc-list-item{align-items:center;background:rgba(0,0,0,0)}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}@media(forced-colors: active){.mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .mat-mdc-option.mdc-list-item--selected:not(:has(.mat-mdc-option-pseudo-checkbox))::after{right:auto;left:16px}}.mat-mdc-option-multiple{--mdc-list-list-item-selected-container-color:var(--mdc-list-list-item-container-color, transparent)}.mat-mdc-option-active .mat-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0})}return $e})();function Q($e,lt,Te){if(Te.length){let He=lt.toArray(),at=Te.toArray(),Lt=0;for(let Ut=0;Ut<$e+1;Ut++)He[Ut].group&&He[Ut].group===at[Lt]&&Lt++;return Lt}return 0}function Be($e,lt,Te,He){return $eTe+He?Math.max(0,$e-He+lt):Te}let Je=(()=>{class $e{static \u0275fac=function(He){return new(He||$e)};static \u0275mod=o.$C({type:$e});static \u0275inj=o.G2t({imports:[rt,_e,ee]})}return $e})();const qe={capture:!0},ot=["focus","mousedown","mouseenter","touchstart"],It="mat-ripple-loader-uninitialized",Ft="mat-ripple-loader-class-name",kt="mat-ripple-loader-centered",Qt="mat-ripple-loader-disabled";let rn=(()=>{class $e{_document=(0,o.WQX)(p.qQ,{optional:!0});_animationMode=(0,o.WQX)(o.bc$,{optional:!0});_globalRippleOptions=(0,o.WQX)(ln,{optional:!0});_platform=(0,o.WQX)(w.OD);_ngZone=(0,o.WQX)(o.SKi);_injector=(0,o.WQX)(o.zZn);_hosts=new Map;constructor(){this._ngZone.runOutsideAngular(()=>{for(const Te of ot)this._document?.addEventListener(Te,this._onInteraction,qe)})}ngOnDestroy(){const Te=this._hosts.keys();for(const He of Te)this.destroyRipple(He);for(const He of ot)this._document?.removeEventListener(He,this._onInteraction,qe)}configureRipple(Te,He){Te.setAttribute(It,this._globalRippleOptions?.namespace??""),(He.className||!Te.hasAttribute(Ft))&&Te.setAttribute(Ft,He.className||""),He.centered&&Te.setAttribute(kt,""),He.disabled&&Te.setAttribute(Qt,"")}setDisabled(Te,He){const at=this._hosts.get(Te);at?(at.target.rippleDisabled=He,!He&&!at.hasSetUpEvents&&(at.hasSetUpEvents=!0,at.renderer.setupTriggerEvents(Te))):He?Te.setAttribute(Qt,""):Te.removeAttribute(Qt)}_onInteraction=Te=>{const He=(0,w.Fb)(Te);if(He instanceof HTMLElement){const at=He.closest(`[${It}="${this._globalRippleOptions?.namespace??""}"]`);at&&this._createRipple(at)}};_createRipple(Te){if(!this._document||this._hosts.has(Te))return;Te.querySelector(".mat-ripple")?.remove();const He=this._document.createElement("span");He.classList.add("mat-ripple",Te.getAttribute(Ft)),Te.append(He);const at="NoopAnimations"===this._animationMode,Lt=this._globalRippleOptions,Ut=at?0:Lt?.animation?.enterDuration??Y.enterDuration,Un=at?0:Lt?.animation?.exitDuration??Y.exitDuration,pt={rippleDisabled:at||Lt?.disabled||Te.hasAttribute(Qt),rippleConfig:{centered:Te.hasAttribute(kt),terminateOnPointerUp:Lt?.terminateOnPointerUp,animation:{enterDuration:Ut,exitDuration:Un}}},mt=new Nt(pt,this._ngZone,He,this._platform,this._injector),We=!pt.rippleDisabled;We&&mt.setupTriggerEvents(Te),this._hosts.set(Te,{target:pt,renderer:mt,hasSetUpEvents:We}),Te.removeAttribute(It)}destroyRipple(Te){const He=this._hosts.get(Te);He&&(He.renderer._removeTriggerEvents(),this._hosts.delete(Te))}static \u0275fac=function(He){return new(He||$e)};static \u0275prov=o.jDH({token:$e,factory:$e.\u0275fac,providedIn:"root"})}return $e})(),nn=(()=>{class $e{labelPosition;static \u0275fac=function(He){return new(He||$e)};static \u0275cmp=o.VBU({type:$e,selectors:[["div","mat-internal-form-field",""]],hostAttrs:[1,"mdc-form-field","mat-internal-form-field"],hostVars:2,hostBindings:function(He,at){2&He&&o.AVh("mdc-form-field--align-end","before"===at.labelPosition)},inputs:{labelPosition:"labelPosition"},attrs:ne,ngContentSelectors:de,decls:1,vars:0,template:function(He,at){1&He&&(o.NAR(),o.SdG(0))},styles:[".mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}"],encapsulation:2,changeDetection:0})}return $e})()},5351:(ut,Ie,a)=>{"use strict";a.d(Ie,{Vh:()=>oe,bZ:()=>Y,E7:()=>jt,tx:()=>Re,Yi:()=>ht,hM:()=>ln,CP:()=>ge,BI:()=>nt});var o=a(6969),c=a(4438),O=a(9888),d=a(6860),w=a(6939),C=a(177),x=a(7336),D=a(1413),p=a(9030),g=a(7673),y=a(8203),h=a(9172);function u(ce,ee){}class P{viewContainerRef;injector;id;role="dialog";panelClass="";hasBackdrop=!0;backdropClass="";disableClose=!1;width="";height="";minWidth;minHeight;maxWidth;maxHeight;positionStrategy;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus="first-tabbable";restoreFocus=!0;scrollStrategy;closeOnNavigation=!0;closeOnDestroy=!0;closeOnOverlayDetachments=!0;componentFactoryResolver;providers;container;templateContext}let E=(()=>{class ce extends w.lb{_elementRef=(0,c.WQX)(c.aKT);_focusTrapFactory=(0,c.WQX)(O.GX);_config;_interactivityChecker=(0,c.WQX)(O.Z7);_ngZone=(0,c.WQX)(c.SKi);_overlayRef=(0,c.WQX)(o.yY);_focusMonitor=(0,c.WQX)(O.FN);_renderer=(0,c.WQX)(c.sFG);_platform=(0,c.WQX)(d.OD);_document=(0,c.WQX)(C.qQ,{optional:!0});_portalOutlet;_focusTrap=null;_elementFocusedBeforeDialogWasOpened=null;_closeInteractionType=null;_ariaLabelledByQueue=[];_changeDetectorRef=(0,c.WQX)(c.gRc);_injector=(0,c.WQX)(c.zZn);_isDestroyed=!1;constructor(){super(),this._config=(0,c.WQX)(P,{optional:!0})||new P,this._config.ariaLabelledBy&&this._ariaLabelledByQueue.push(this._config.ariaLabelledBy)}_addAriaLabelledBy(re){this._ariaLabelledByQueue.push(re),this._changeDetectorRef.markForCheck()}_removeAriaLabelledBy(re){const be=this._ariaLabelledByQueue.indexOf(re);be>-1&&(this._ariaLabelledByQueue.splice(be,1),this._changeDetectorRef.markForCheck())}_contentAttached(){this._initializeFocusTrap(),this._handleBackdropClicks(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._isDestroyed=!0,this._restoreFocus()}attachComponentPortal(re){this._portalOutlet.hasAttached();const be=this._portalOutlet.attachComponentPortal(re);return this._contentAttached(),be}attachTemplatePortal(re){this._portalOutlet.hasAttached();const be=this._portalOutlet.attachTemplatePortal(re);return this._contentAttached(),be}attachDomPortal=re=>{this._portalOutlet.hasAttached();const be=this._portalOutlet.attachDomPortal(re);return this._contentAttached(),be};_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(re,be){this._interactivityChecker.isFocusable(re)||(re.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{const Ke=()=>{ft(),le(),re.removeAttribute("tabindex")},ft=this._renderer.listen(re,"blur",Ke),le=this._renderer.listen(re,"mousedown",Ke)})),re.focus(be)}_focusByCssSelector(re,be){let Ke=this._elementRef.nativeElement.querySelector(re);Ke&&this._forceFocus(Ke,be)}_trapFocus(){this._isDestroyed||(0,c.mal)(()=>{const re=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||re.focus();break;case!0:case"first-tabbable":this._focusTrap?.focusInitialElement()||this._focusDialogContainer();break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this._config.autoFocus)}},{injector:this._injector})}_restoreFocus(){const re=this._config.restoreFocus;let be=null;if("string"==typeof re?be=this._document.querySelector(re):"boolean"==typeof re?be=re?this._elementFocusedBeforeDialogWasOpened:null:re&&(be=re),this._config.restoreFocus&&be&&"function"==typeof be.focus){const Ke=(0,d.vc)(),ft=this._elementRef.nativeElement;(!Ke||Ke===this._document.body||Ke===ft||ft.contains(Ke))&&(this._focusMonitor?(this._focusMonitor.focusVia(be,this._closeInteractionType),this._closeInteractionType=null):be.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(){this._elementRef.nativeElement.focus&&this._elementRef.nativeElement.focus()}_containsFocus(){const re=this._elementRef.nativeElement,be=(0,d.vc)();return re===be||re.contains(be)}_initializeFocusTrap(){this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=(0,d.vc)()))}_handleBackdropClicks(){this._overlayRef.backdropClick().subscribe(()=>{this._config.disableClose&&this._recaptureFocus()})}static \u0275fac=function(be){return new(be||ce)};static \u0275cmp=c.VBU({type:ce,selectors:[["cdk-dialog-container"]],viewQuery:function(be,Ke){if(1&be&&c.GBs(w.I3,7),2&be){let ft;c.mGM(ft=c.lsd())&&(Ke._portalOutlet=ft.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(be,Ke){2&be&&c.BMQ("id",Ke._config.id||null)("role",Ke._config.role)("aria-modal",Ke._config.ariaModal)("aria-labelledby",Ke._config.ariaLabel?null:Ke._ariaLabelledByQueue[0])("aria-label",Ke._config.ariaLabel)("aria-describedby",Ke._config.ariaDescribedBy||null)},features:[c.Vt3],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(be,Ke){1&be&&c.DNE(0,u,0,0,"ng-template",0)},dependencies:[w.I3],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}"],encapsulation:2})}return ce})();class W{overlayRef;config;componentInstance;componentRef;containerInstance;disableClose;closed=new D.B;backdropClick;keydownEvents;outsidePointerEvents;id;_detachSubscription;constructor(ee,re){this.overlayRef=ee,this.config=re,this.disableClose=re.disableClose,this.backdropClick=ee.backdropClick(),this.keydownEvents=ee.keydownEvents(),this.outsidePointerEvents=ee.outsidePointerEvents(),this.id=re.id,this.keydownEvents.subscribe(be=>{be.keyCode===x._f&&!this.disableClose&&!(0,x.rp)(be)&&(be.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{this.disableClose||this.close(void 0,{focusOrigin:"mouse"})}),this._detachSubscription=ee.detachments().subscribe(()=>{!1!==re.closeOnOverlayDetachments&&this.close()})}close(ee,re){if(this.containerInstance){const be=this.closed;this.containerInstance._closeInteractionType=re?.focusOrigin||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),be.next(ee),be.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(ee="",re=""){return this.overlayRef.updateSize({width:ee,height:re}),this}addPanelClass(ee){return this.overlayRef.addPanelClass(ee),this}removePanelClass(ee){return this.overlayRef.removePanelClass(ee),this}}const ne=new c.nKC("DialogScrollStrategy",{providedIn:"root",factory:()=>{const ce=(0,c.WQX)(o.hJ);return()=>ce.scrollStrategies.block()}}),de=new c.nKC("DialogData"),ie=new c.nKC("DefaultDialogConfig");let Le=(()=>{class ce{_overlay=(0,c.WQX)(o.hJ);_injector=(0,c.WQX)(c.zZn);_defaultOptions=(0,c.WQX)(ie,{optional:!0});_parentDialog=(0,c.WQX)(ce,{optional:!0,skipSelf:!0});_overlayContainer=(0,c.WQX)(o.Sf);_idGenerator=(0,c.WQX)(O.g7);_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new D.B;_afterOpenedAtThisLevel=new D.B;_ariaHiddenElements=new Map;_scrollStrategy=(0,c.WQX)(ne);get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}afterAllClosed=(0,p.v)(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe((0,h.Z)(void 0)));constructor(){}open(re,be){(be={...this._defaultOptions||new P,...be}).id=be.id||this._idGenerator.getId("cdk-dialog-"),be.id&&this.getDialogById(be.id);const ft=this._getOverlayConfig(be),le=this._overlay.create(ft),Q=new W(le,be),Be=this._attachContainer(le,Q,be);return Q.containerInstance=Be,this._attachDialogContent(re,Q,Be,be),this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(Q),Q.closed.subscribe(()=>this._removeOpenDialog(Q,!0)),this.afterOpened.next(Q),Q}closeAll(){_e(this.openDialogs,re=>re.close())}getDialogById(re){return this.openDialogs.find(be=>be.id===re)}ngOnDestroy(){_e(this._openDialogsAtThisLevel,re=>{!1===re.config.closeOnDestroy&&this._removeOpenDialog(re,!1)}),_e(this._openDialogsAtThisLevel,re=>re.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(re){const be=new o.rR({positionStrategy:re.positionStrategy||this._overlay.position().global().centerHorizontally().centerVertically(),scrollStrategy:re.scrollStrategy||this._scrollStrategy(),panelClass:re.panelClass,hasBackdrop:re.hasBackdrop,direction:re.direction,minWidth:re.minWidth,minHeight:re.minHeight,maxWidth:re.maxWidth,maxHeight:re.maxHeight,width:re.width,height:re.height,disposeOnNavigation:re.closeOnNavigation});return re.backdropClass&&(be.backdropClass=re.backdropClass),be}_attachContainer(re,be,Ke){const ft=Ke.injector||Ke.viewContainerRef?.injector,le=[{provide:P,useValue:Ke},{provide:W,useValue:be},{provide:o.yY,useValue:re}];let Q;Ke.container?"function"==typeof Ke.container?Q=Ke.container:(Q=Ke.container.type,le.push(...Ke.container.providers(Ke))):Q=E;const Be=new w.A8(Q,Ke.viewContainerRef,c.zZn.create({parent:ft||this._injector,providers:le}));return re.attach(Be).instance}_attachDialogContent(re,be,Ke,ft){if(re instanceof c.C4Q){const le=this._createInjector(ft,be,Ke,void 0);let Q={$implicit:ft.data,dialogRef:be};ft.templateContext&&(Q={...Q,..."function"==typeof ft.templateContext?ft.templateContext():ft.templateContext}),Ke.attachTemplatePortal(new w.VA(re,null,Q,le))}else{const le=this._createInjector(ft,be,Ke,this._injector),Q=Ke.attachComponentPortal(new w.A8(re,ft.viewContainerRef,le));be.componentRef=Q,be.componentInstance=Q.instance}}_createInjector(re,be,Ke,ft){const le=re.injector||re.viewContainerRef?.injector,Q=[{provide:de,useValue:re.data},{provide:W,useValue:be}];return re.providers&&("function"==typeof re.providers?Q.push(...re.providers(be,re,Ke)):Q.push(...re.providers)),re.direction&&(!le||!le.get(y.dS,null,{optional:!0}))&&Q.push({provide:y.dS,useValue:{value:re.direction,change:(0,g.of)()}}),c.zZn.create({parent:le||ft,providers:Q})}_removeOpenDialog(re,be){const Ke=this.openDialogs.indexOf(re);Ke>-1&&(this.openDialogs.splice(Ke,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((ft,le)=>{ft?le.setAttribute("aria-hidden",ft):le.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),be&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(){const re=this._overlayContainer.getContainerElement();if(re.parentElement){const be=re.parentElement.children;for(let Ke=be.length-1;Ke>-1;Ke--){const ft=be[Ke];ft!==re&&"SCRIPT"!==ft.nodeName&&"STYLE"!==ft.nodeName&&!ft.hasAttribute("aria-live")&&(this._ariaHiddenElements.set(ft,ft.getAttribute("aria-hidden")),ft.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){const re=this._parentDialog;return re?re._getAfterAllClosed():this._afterAllClosedAtThisLevel}static \u0275fac=function(be){return new(be||ce)};static \u0275prov=c.jDH({token:ce,factory:ce.\u0275fac,providedIn:"root"})}return ce})();function _e(ce,ee){let re=ce.length;for(;re--;)ee(ce[re])}let Ce=(()=>{class ce{static \u0275fac=function(be){return new(be||ce)};static \u0275mod=c.$C({type:ce});static \u0275inj=c.G2t({providers:[Le],imports:[o.z_,w.jc,O.Pd,w.jc]})}return ce})();var Ae=a(4085),ke=a(7786),Ue=a(5964),ve=a(6697),ye=a(3980),Se=a(3);function te(ce,ee){}a(9969);class L{viewContainerRef;injector;id;role="dialog";panelClass="";hasBackdrop=!0;backdropClass="";disableClose=!1;width="";height="";minWidth;minHeight;maxWidth;maxHeight;position;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus="first-tabbable";restoreFocus=!0;delayFocusTrap=!0;scrollStrategy;closeOnNavigation=!0;componentFactoryResolver;enterAnimationDuration;exitAnimationDuration}const q="mdc-dialog--open",J="mdc-dialog--opening",X="mdc-dialog--closing";let V=(()=>{class ce extends E{_animationMode=(0,c.WQX)(c.bc$,{optional:!0});_animationStateChanged=new c.bkB;_animationsEnabled="NoopAnimations"!==this._animationMode;_actionSectionCount=0;_hostElement=this._elementRef.nativeElement;_enterAnimationDuration=this._animationsEnabled?M(this._config.enterAnimationDuration)??150:0;_exitAnimationDuration=this._animationsEnabled?M(this._config.exitAnimationDuration)??75:0;_animationTimer=null;_contentAttached(){super._contentAttached(),this._startOpenAnimation()}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._enterAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(I,`${this._enterAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(J,q)),this._waitForAnimationToComplete(this._enterAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(q),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._exitAnimationDuration}),this._hostElement.classList.remove(q),this._animationsEnabled?(this._hostElement.style.setProperty(I,`${this._exitAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(X)),this._waitForAnimationToComplete(this._exitAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_updateActionSectionCount(re){this._actionSectionCount+=re,this._changeDetectorRef.markForCheck()}_finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._enterAnimationDuration)};_finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._exitAnimationDuration})};_clearAnimationClasses(){this._hostElement.classList.remove(J,X)}_waitForAnimationToComplete(re,be){null!==this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(be,re)}_requestAnimationFrame(re){this._ngZone.runOutsideAngular(()=>{"function"==typeof requestAnimationFrame?requestAnimationFrame(re):re()})}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(re){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:re})}ngOnDestroy(){super.ngOnDestroy(),null!==this._animationTimer&&clearTimeout(this._animationTimer)}attachComponentPortal(re){const be=super.attachComponentPortal(re);return be.location.nativeElement.classList.add("mat-mdc-dialog-component-host"),be}static \u0275fac=(()=>{let re;return function(Ke){return(re||(re=c.xGo(ce)))(Ke||ce)}})();static \u0275cmp=c.VBU({type:ce,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:10,hostBindings:function(be,Ke){2&be&&(c.Mr5("id",Ke._config.id),c.BMQ("aria-modal",Ke._config.ariaModal)("role",Ke._config.role)("aria-labelledby",Ke._config.ariaLabel?null:Ke._ariaLabelledByQueue[0])("aria-label",Ke._config.ariaLabel)("aria-describedby",Ke._config.ariaDescribedBy||null),c.AVh("_mat-animation-noopable",!Ke._animationsEnabled)("mat-mdc-dialog-container-with-actions",Ke._actionSectionCount>0))},features:[c.Vt3],decls:3,vars:0,consts:[[1,"mat-mdc-dialog-inner-container","mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(be,Ke){1&be&&(c.j41(0,"div",0)(1,"div",1),c.DNE(2,te,0,0,"ng-template",2),c.k0s()())},dependencies:[w.I3],styles:['.mat-mdc-dialog-container{width:100%;height:100%;display:block;box-sizing:border-box;max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;outline:0}.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-max-width, 560px);min-width:var(--mat-dialog-container-min-width, 280px)}@media(max-width: 599px){.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-small-max-width, calc(100vw - 32px))}}.mat-mdc-dialog-inner-container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;transition:opacity linear var(--mat-dialog-transition-duration, 0ms);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mdc-dialog--closing .mat-mdc-dialog-inner-container{transition:opacity 75ms linear;transform:none}.mdc-dialog--open .mat-mdc-dialog-inner-container{opacity:1}._mat-animation-noopable .mat-mdc-dialog-inner-container{transition:none}.mat-mdc-dialog-surface{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;width:100%;height:100%;position:relative;overflow-y:auto;outline:0;transform:scale(0.8);transition:transform var(--mat-dialog-transition-duration, 0ms) cubic-bezier(0, 0, 0.2, 1);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;box-shadow:var(--mat-dialog-container-elevation-shadow, none);border-radius:var(--mdc-dialog-container-shape, var(--mat-sys-corner-extra-large, 4px));background-color:var(--mdc-dialog-container-color, var(--mat-sys-surface, white))}[dir=rtl] .mat-mdc-dialog-surface{text-align:right}.mdc-dialog--open .mat-mdc-dialog-surface,.mdc-dialog--closing .mat-mdc-dialog-surface{transform:none}._mat-animation-noopable .mat-mdc-dialog-surface{transition:none}.mat-mdc-dialog-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mat-mdc-dialog-title{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:var(--mat-dialog-headline-padding, 6px 24px 13px)}.mat-mdc-dialog-title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mat-mdc-dialog-title{text-align:right}.mat-mdc-dialog-container .mat-mdc-dialog-title{color:var(--mdc-dialog-subhead-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mdc-dialog-subhead-font, var(--mat-sys-headline-small-font, inherit));line-height:var(--mdc-dialog-subhead-line-height, var(--mat-sys-headline-small-line-height, 1.5rem));font-size:var(--mdc-dialog-subhead-size, var(--mat-sys-headline-small-size, 1rem));font-weight:var(--mdc-dialog-subhead-weight, var(--mat-sys-headline-small-weight, 400));letter-spacing:var(--mdc-dialog-subhead-tracking, var(--mat-sys-headline-small-tracking, 0.03125em))}.mat-mdc-dialog-content{display:block;flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;max-height:65vh}.mat-mdc-dialog-content>:first-child{margin-top:0}.mat-mdc-dialog-content>:last-child{margin-bottom:0}.mat-mdc-dialog-container .mat-mdc-dialog-content{color:var(--mdc-dialog-supporting-text-color, var(--mat-sys-on-surface-variant, rgba(0, 0, 0, 0.6)));font-family:var(--mdc-dialog-supporting-text-font, var(--mat-sys-body-medium-font, inherit));line-height:var(--mdc-dialog-supporting-text-line-height, var(--mat-sys-body-medium-line-height, 1.5rem));font-size:var(--mdc-dialog-supporting-text-size, var(--mat-sys-body-medium-size, 1rem));font-weight:var(--mdc-dialog-supporting-text-weight, var(--mat-sys-body-medium-weight, 400));letter-spacing:var(--mdc-dialog-supporting-text-tracking, var(--mat-sys-body-medium-tracking, 0.03125em))}.mat-mdc-dialog-container .mat-mdc-dialog-content{padding:var(--mat-dialog-content-padding, 20px 24px)}.mat-mdc-dialog-container-with-actions .mat-mdc-dialog-content{padding:var(--mat-dialog-with-actions-content-padding, 20px 24px 0)}.mat-mdc-dialog-container .mat-mdc-dialog-title+.mat-mdc-dialog-content{padding-top:0}.mat-mdc-dialog-actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0);padding:var(--mat-dialog-actions-padding, 16px 24px);justify-content:var(--mat-dialog-actions-alignment, flex-end)}@media(forced-colors: active){.mat-mdc-dialog-actions{border-top-color:CanvasText}}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-start,.mat-mdc-dialog-actions[align=start]{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}.mat-mdc-dialog-component-host{display:contents}'],encapsulation:2})}return ce})();const I="--mat-dialog-transition-duration";function M(ce){return null==ce?null:"number"==typeof ce?ce:ce.endsWith("ms")?(0,Ae.OE)(ce.substring(0,ce.length-2)):ce.endsWith("s")?1e3*(0,Ae.OE)(ce.substring(0,ce.length-1)):"0"===ce?0:null}var j=function(ce){return ce[ce.OPEN=0]="OPEN",ce[ce.CLOSING=1]="CLOSING",ce[ce.CLOSED=2]="CLOSED",ce}(j||{});class ge{_ref;_containerInstance;componentInstance;componentRef;disableClose;id;_afterOpened=new D.B;_beforeClosed=new D.B;_result;_closeFallbackTimeout;_state=j.OPEN;_closeInteractionType;constructor(ee,re,be){this._ref=ee,this._containerInstance=be,this.disableClose=re.disableClose,this.id=ee.id,ee.addPanelClass("mat-mdc-dialog-panel"),be._animationStateChanged.pipe((0,Ue.p)(Ke=>"opened"===Ke.state),(0,ve.s)(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),be._animationStateChanged.pipe((0,Ue.p)(Ke=>"closed"===Ke.state),(0,ve.s)(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),ee.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),(0,ke.h)(this.backdropClick(),this.keydownEvents().pipe((0,Ue.p)(Ke=>Ke.keyCode===x._f&&!this.disableClose&&!(0,x.rp)(Ke)))).subscribe(Ke=>{this.disableClose||(Ke.preventDefault(),Me(this,"keydown"===Ke.type?"keyboard":"mouse"))})}close(ee){this._result=ee,this._containerInstance._animationStateChanged.pipe((0,Ue.p)(re=>"closing"===re.state),(0,ve.s)(1)).subscribe(re=>{this._beforeClosed.next(ee),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),re.totalTime+100)}),this._state=j.CLOSING,this._containerInstance._startExitAnimation()}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(ee){let re=this._ref.config.positionStrategy;return ee&&(ee.left||ee.right)?ee.left?re.left(ee.left):re.right(ee.right):re.centerHorizontally(),ee&&(ee.top||ee.bottom)?ee.top?re.top(ee.top):re.bottom(ee.bottom):re.centerVertically(),this._ref.updatePosition(),this}updateSize(ee="",re=""){return this._ref.updateSize(ee,re),this}addPanelClass(ee){return this._ref.addPanelClass(ee),this}removePanelClass(ee){return this._ref.removePanelClass(ee),this}getState(){return this._state}_finishDialogClose(){this._state=j.CLOSED,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}}function Me(ce,ee,re){return ce._closeInteractionType=ee,ce.close(re)}const oe=new c.nKC("MatMdcDialogData"),R=new c.nKC("mat-mdc-dialog-default-options"),se=new c.nKC("mat-mdc-dialog-scroll-strategy",{providedIn:"root",factory:()=>{const ce=(0,c.WQX)(o.hJ);return()=>ce.scrollStrategies.block()}});let Y=(()=>{class ce{_overlay=(0,c.WQX)(o.hJ);_defaultOptions=(0,c.WQX)(R,{optional:!0});_scrollStrategy=(0,c.WQX)(se);_parentDialog=(0,c.WQX)(ce,{optional:!0,skipSelf:!0});_idGenerator=(0,c.WQX)(O.g7);_dialog=(0,c.WQX)(Le);_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new D.B;_afterOpenedAtThisLevel=new D.B;dialogConfigClass=L;_dialogRefConstructor;_dialogContainerType;_dialogDataToken;get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){const re=this._parentDialog;return re?re._getAfterAllClosed():this._afterAllClosedAtThisLevel}afterAllClosed=(0,p.v)(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe((0,h.Z)(void 0)));constructor(){this._dialogRefConstructor=ge,this._dialogContainerType=V,this._dialogDataToken=oe}open(re,be){let Ke;(be={...this._defaultOptions||new L,...be}).id=be.id||this._idGenerator.getId("mat-mdc-dialog-"),be.scrollStrategy=be.scrollStrategy||this._scrollStrategy();const ft=this._dialog.open(re,{...be,positionStrategy:this._overlay.position().global().centerHorizontally().centerVertically(),disableClose:!0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:be},{provide:P,useValue:be}]},templateContext:()=>({dialogRef:Ke}),providers:(le,Q,Be)=>(Ke=new this._dialogRefConstructor(le,be,Be),Ke.updatePosition(be?.position),[{provide:this._dialogContainerType,useValue:Be},{provide:this._dialogDataToken,useValue:Q.data},{provide:this._dialogRefConstructor,useValue:Ke}])});return Ke.componentRef=ft.componentRef,Ke.componentInstance=ft.componentInstance,this.openDialogs.push(Ke),this.afterOpened.next(Ke),Ke.afterClosed().subscribe(()=>{const le=this.openDialogs.indexOf(Ke);le>-1&&(this.openDialogs.splice(le,1),this.openDialogs.length||this._getAfterAllClosed().next())}),Ke}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(re){return this.openDialogs.find(be=>be.id===re)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(re){let be=re.length;for(;be--;)re[be].close()}static \u0275fac=function(be){return new(be||ce)};static \u0275prov=c.jDH({token:ce,factory:ce.\u0275fac,providedIn:"root"})}return ce})(),Re=(()=>{class ce{dialogRef=(0,c.WQX)(ge,{optional:!0});_elementRef=(0,c.WQX)(c.aKT);_dialog=(0,c.WQX)(Y);ariaLabel;type="button";dialogResult;_matDialogClose;constructor(){}ngOnInit(){this.dialogRef||(this.dialogRef=Nt(this._elementRef,this._dialog.openDialogs))}ngOnChanges(re){const be=re._matDialogClose||re._matDialogCloseResult;be&&(this.dialogResult=be.currentValue)}_onButtonClick(re){Me(this.dialogRef,0===re.screenX&&0===re.screenY?"keyboard":"mouse",this.dialogResult)}static \u0275fac=function(be){return new(be||ce)};static \u0275dir=c.FsC({type:ce,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(be,Ke){1&be&&c.bIt("click",function(le){return Ke._onButtonClick(le)}),2&be&&c.BMQ("aria-label",Ke.ariaLabel||null)("type",Ke.type)},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],type:"type",dialogResult:[0,"mat-dialog-close","dialogResult"],_matDialogClose:[0,"matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],features:[c.OA$]})}return ce})(),De=(()=>{class ce{_dialogRef=(0,c.WQX)(ge,{optional:!0});_elementRef=(0,c.WQX)(c.aKT);_dialog=(0,c.WQX)(Y);constructor(){}ngOnInit(){this._dialogRef||(this._dialogRef=Nt(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{this._onAdd()})}ngOnDestroy(){this._dialogRef?._containerInstance&&Promise.resolve().then(()=>{this._onRemove()})}static \u0275fac=function(be){return new(be||ce)};static \u0275dir=c.FsC({type:ce})}return ce})(),nt=(()=>{class ce extends De{id=(0,c.WQX)(O.g7).getId("mat-mdc-dialog-title-");_onAdd(){this._dialogRef._containerInstance?._addAriaLabelledBy?.(this.id)}_onRemove(){this._dialogRef?._containerInstance?._removeAriaLabelledBy?.(this.id)}static \u0275fac=(()=>{let re;return function(Ke){return(re||(re=c.xGo(ce)))(Ke||ce)}})();static \u0275dir=c.FsC({type:ce,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-mdc-dialog-title","mdc-dialog__title"],hostVars:1,hostBindings:function(be,Ke){2&be&&c.Mr5("id",Ke.id)},inputs:{id:"id"},exportAs:["matDialogTitle"],features:[c.Vt3]})}return ce})(),ht=(()=>{class ce{static \u0275fac=function(be){return new(be||ce)};static \u0275dir=c.FsC({type:ce,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"],features:[c.nM4([ye.uv])]})}return ce})(),jt=(()=>{class ce extends De{align;_onAdd(){this._dialogRef._containerInstance?._updateActionSectionCount?.(1)}_onRemove(){this._dialogRef._containerInstance?._updateActionSectionCount?.(-1)}static \u0275fac=(()=>{let re;return function(Ke){return(re||(re=c.xGo(ce)))(Ke||ce)}})();static \u0275dir=c.FsC({type:ce,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:6,hostBindings:function(be,Ke){2&be&&c.AVh("mat-mdc-dialog-actions-align-start","start"===Ke.align)("mat-mdc-dialog-actions-align-center","center"===Ke.align)("mat-mdc-dialog-actions-align-end","end"===Ke.align)},inputs:{align:"align"},features:[c.Vt3]})}return ce})();function Nt(ce,ee){let re=ce.nativeElement.parentElement;for(;re&&!re.classList.contains("mat-mdc-dialog-container");)re=re.parentElement;return re?ee.find(be=>be.id===re.id):null}let ln=(()=>{class ce{static \u0275fac=function(be){return new(be||ce)};static \u0275mod=c.$C({type:ce});static \u0275inj=c.G2t({providers:[Y],imports:[Ce,o.z_,w.jc,Se.yE,Se.yE]})}return ce})()},2408:(ut,Ie,a)=>{"use strict";a.d(Ie,{xb:()=>qe,TL:()=>nt,rl:()=>rn,qT:()=>le,RG:()=>nn,nJ:()=>Re,JW:()=>Nt,yw:()=>ln});var o=a(4438),c=a(9888),O=a(8203),d=a(4085),w=a(6860),C=a(177),x=a(8359),D=a(1413),p=a(7786),g=a(9172),y=a(6354),h=a(9974),u=a(4360),T=a(5964),E=a(6977),W=a(1985),ne=a(4668);class ie{_box;_destroyed=new D.B;_resizeSubject=new D.B;_resizeObserver;_elementObservables=new Map;constructor(lt){this._box=lt,typeof ResizeObserver<"u"&&(this._resizeObserver=new ResizeObserver(Te=>this._resizeSubject.next(Te)))}observe(lt){return this._elementObservables.has(lt)||this._elementObservables.set(lt,new W.c(Te=>{const He=this._resizeSubject.subscribe(Te);return this._resizeObserver?.observe(lt,{box:this._box}),()=>{this._resizeObserver?.unobserve(lt),He.unsubscribe(),this._elementObservables.delete(lt)}}).pipe((0,T.p)(Te=>Te.some(He=>He.target===lt)),(0,ne.t)({bufferSize:1,refCount:!0}),(0,E.Q)(this._destroyed))),this._elementObservables.get(lt)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear()}}let Z=(()=>{class $e{_cleanupErrorListener;_observers=new Map;_ngZone=(0,o.WQX)(o.SKi);constructor(){}ngOnDestroy(){for(const[,Te]of this._observers)Te.destroy();this._observers.clear(),this._cleanupErrorListener?.()}observe(Te,He){const at=He?.box||"content-box";return this._observers.has(at)||this._observers.set(at,new ie(at)),this._observers.get(at).observe(Te)}static \u0275fac=function(He){return new(He||$e)};static \u0275prov=o.jDH({token:$e,factory:$e.\u0275fac,providedIn:"root"})}return $e})();var ae=a(9969),Le=a(2318),_e=a(3);const Ce=["notch"],Ae=["matFormFieldNotchedOutline",""],ke=["*"],Ue=["textField"],ve=["iconPrefixContainer"],ye=["textPrefixContainer"],Se=["iconSuffixContainer"],z=["textSuffixContainer"],te=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],L=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];function q($e,lt){1&$e&&o.nrm(0,"span",21)}function J($e,lt){if(1&$e&&(o.j41(0,"label",20),o.SdG(1,1),o.DNE(2,q,1,0,"span",21),o.k0s()),2&$e){const Te=o.XpG(2);o.Y8G("floating",Te._shouldLabelFloat())("monitorResize",Te._hasOutline())("id",Te._labelId),o.BMQ("for",Te._control.disableAutomaticLabeling?null:Te._control.id),o.R7$(2),o.vxM(!Te.hideRequiredMarker&&Te._control.required?2:-1)}}function X($e,lt){if(1&$e&&o.DNE(0,J,3,5,"label",20),2&$e){const Te=o.XpG();o.vxM(Te._hasFloatingLabel()?0:-1)}}function K($e,lt){1&$e&&o.nrm(0,"div",7)}function N($e,lt){}function V($e,lt){if(1&$e&&o.DNE(0,N,0,0,"ng-template",13),2&$e){o.XpG(2);const Te=o.sdS(1);o.Y8G("ngTemplateOutlet",Te)}}function I($e,lt){if(1&$e&&(o.j41(0,"div",9),o.DNE(1,V,1,1,null,13),o.k0s()),2&$e){const Te=o.XpG();o.Y8G("matFormFieldNotchedOutlineOpen",Te._shouldLabelFloat()),o.R7$(),o.vxM(Te._forceDisplayInfixLabel()?-1:1)}}function M($e,lt){1&$e&&(o.j41(0,"div",10,2),o.SdG(2,2),o.k0s())}function j($e,lt){1&$e&&(o.j41(0,"div",11,3),o.SdG(2,3),o.k0s())}function ge($e,lt){}function Me($e,lt){if(1&$e&&o.DNE(0,ge,0,0,"ng-template",13),2&$e){o.XpG();const Te=o.sdS(1);o.Y8G("ngTemplateOutlet",Te)}}function oe($e,lt){1&$e&&(o.j41(0,"div",14,4),o.SdG(2,4),o.k0s())}function R($e,lt){1&$e&&(o.j41(0,"div",15,5),o.SdG(2,5),o.k0s())}function se($e,lt){1&$e&&o.nrm(0,"div",16)}function Ee($e,lt){if(1&$e&&(o.j41(0,"div",18),o.SdG(1,6),o.k0s()),2&$e){const Te=o.XpG();o.Y8G("@transitionMessages",Te._subscriptAnimationState)}}function tt($e,lt){if(1&$e&&(o.j41(0,"mat-hint",22),o.EFF(1),o.k0s()),2&$e){const Te=o.XpG(2);o.Y8G("id",Te._hintLabelId),o.R7$(),o.JRh(Te.hintLabel)}}function Y($e,lt){if(1&$e&&(o.j41(0,"div",19),o.DNE(1,tt,2,2,"mat-hint",22),o.SdG(2,7),o.nrm(3,"div",23),o.SdG(4,8),o.k0s()),2&$e){const Te=o.XpG();o.Y8G("@transitionMessages",Te._subscriptAnimationState),o.R7$(),o.vxM(Te.hintLabel?1:-1)}}let Re=(()=>{class $e{static \u0275fac=function(He){return new(He||$e)};static \u0275dir=o.FsC({type:$e,selectors:[["mat-label"]]})}return $e})();const De=new o.nKC("MatError");let nt=(()=>{class $e{id=(0,o.WQX)(c.g7).getId("mat-mdc-error-");constructor(){(0,o.WQX)(new o.ES_("aria-live"),{optional:!0})||(0,o.WQX)(o.aKT).nativeElement.setAttribute("aria-live","polite")}static \u0275fac=function(He){return new(He||$e)};static \u0275dir=o.FsC({type:$e,selectors:[["mat-error"],["","matError",""]],hostAttrs:["aria-atomic","true",1,"mat-mdc-form-field-error","mat-mdc-form-field-bottom-align"],hostVars:1,hostBindings:function(He,at){2&He&&o.Mr5("id",at.id)},inputs:{id:"id"},features:[o.Jv_([{provide:De,useExisting:$e}])]})}return $e})(),ht=(()=>{class $e{align="start";id=(0,o.WQX)(c.g7).getId("mat-mdc-hint-");static \u0275fac=function(He){return new(He||$e)};static \u0275dir=o.FsC({type:$e,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(He,at){2&He&&(o.Mr5("id",at.id),o.BMQ("align",null),o.AVh("mat-mdc-form-field-hint-end","end"===at.align))},inputs:{align:"align",id:"id"}})}return $e})();const jt=new o.nKC("MatPrefix");let Nt=(()=>{class $e{set _isTextSelector(Te){this._isText=!0}_isText=!1;static \u0275fac=function(He){return new(He||$e)};static \u0275dir=o.FsC({type:$e,selectors:[["","matPrefix",""],["","matIconPrefix",""],["","matTextPrefix",""]],inputs:{_isTextSelector:[0,"matTextPrefix","_isTextSelector"]},features:[o.Jv_([{provide:jt,useExisting:$e}])]})}return $e})();const on=new o.nKC("MatSuffix");let ln=(()=>{class $e{set _isTextSelector(Te){this._isText=!0}_isText=!1;static \u0275fac=function(He){return new(He||$e)};static \u0275dir=o.FsC({type:$e,selectors:[["","matSuffix",""],["","matIconSuffix",""],["","matTextSuffix",""]],inputs:{_isTextSelector:[0,"matTextSuffix","_isTextSelector"]},features:[o.Jv_([{provide:on,useExisting:$e}])]})}return $e})();const Ot=new o.nKC("FloatingLabelParent");let rt=(()=>{class $e{_elementRef=(0,o.WQX)(o.aKT);get floating(){return this._floating}set floating(Te){this._floating=Te,this.monitorResize&&this._handleResize()}_floating=!1;get monitorResize(){return this._monitorResize}set monitorResize(Te){this._monitorResize=Te,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe()}_monitorResize=!1;_resizeObserver=(0,o.WQX)(Z);_ngZone=(0,o.WQX)(o.SKi);_parent=(0,o.WQX)(Ot);_resizeSubscription=new x.yU;constructor(){}ngOnDestroy(){this._resizeSubscription.unsubscribe()}getWidth(){return function ce($e){if(null!==$e.offsetParent)return $e.scrollWidth;const Te=$e.cloneNode(!0);Te.style.setProperty("position","absolute"),Te.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(Te);const He=Te.scrollWidth;return Te.remove(),He}(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized())}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:"border-box"}).subscribe(()=>this._handleResize())})}static \u0275fac=function(He){return new(He||$e)};static \u0275dir=o.FsC({type:$e,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(He,at){2&He&&o.AVh("mdc-floating-label--float-above",at.floating)},inputs:{floating:"floating",monitorResize:"monitorResize"}})}return $e})();const ee="mdc-line-ripple--active",re="mdc-line-ripple--deactivating";let be=(()=>{class $e{_elementRef=(0,o.WQX)(o.aKT);_cleanupTransitionEnd;constructor(){const Te=(0,o.WQX)(o.SKi),He=(0,o.WQX)(o.sFG);Te.runOutsideAngular(()=>{this._cleanupTransitionEnd=He.listen(this._elementRef.nativeElement,"transitionend",this._handleTransitionEnd)})}activate(){const Te=this._elementRef.nativeElement.classList;Te.remove(re),Te.add(ee)}deactivate(){this._elementRef.nativeElement.classList.add(re)}_handleTransitionEnd=Te=>{const He=this._elementRef.nativeElement.classList,at=He.contains(re);"opacity"===Te.propertyName&&at&&He.remove(ee,re)};ngOnDestroy(){this._cleanupTransitionEnd()}static \u0275fac=function(He){return new(He||$e)};static \u0275dir=o.FsC({type:$e,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]})}return $e})(),Ke=(()=>{class $e{_elementRef=(0,o.WQX)(o.aKT);_ngZone=(0,o.WQX)(o.SKi);open=!1;_notch;constructor(){}ngAfterViewInit(){const Te=this._elementRef.nativeElement.querySelector(".mdc-floating-label");Te?(this._elementRef.nativeElement.classList.add("mdc-notched-outline--upgraded"),"function"==typeof requestAnimationFrame&&(Te.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>Te.style.transitionDuration="")}))):this._elementRef.nativeElement.classList.add("mdc-notched-outline--no-label")}_setNotchWidth(Te){this._notch.nativeElement.style.width=this.open&&Te?`calc(${Te}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`:""}static \u0275fac=function(He){return new(He||$e)};static \u0275cmp=o.VBU({type:$e,selectors:[["div","matFormFieldNotchedOutline",""]],viewQuery:function(He,at){if(1&He&&o.GBs(Ce,5),2&He){let Lt;o.mGM(Lt=o.lsd())&&(at._notch=Lt.first)}},hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(He,at){2&He&&o.AVh("mdc-notched-outline--notched",at.open)},inputs:{open:[0,"matFormFieldNotchedOutlineOpen","open"]},attrs:Ae,ngContentSelectors:ke,decls:5,vars:0,consts:[["notch",""],[1,"mat-mdc-notch-piece","mdc-notched-outline__leading"],[1,"mat-mdc-notch-piece","mdc-notched-outline__notch"],[1,"mat-mdc-notch-piece","mdc-notched-outline__trailing"]],template:function(He,at){1&He&&(o.NAR(),o.nrm(0,"div",1),o.j41(1,"div",2,0),o.SdG(3),o.k0s(),o.nrm(4,"div",3))},encapsulation:2,changeDetection:0})}return $e})();const ft={transitionMessages:(0,ae.hZ)("transitionMessages",[(0,ae.wk)("enter",(0,ae.iF)({opacity:1,transform:"translateY(0%)"})),(0,ae.kY)("void => enter",[(0,ae.iF)({opacity:0,transform:"translateY(-5px)"}),(0,ae.i0)("300ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let le=(()=>{class $e{value;stateChanges;id;placeholder;ngControl;focused;empty;shouldLabelFloat;required;disabled;errorState;controlType;autofilled;userAriaDescribedBy;disableAutomaticLabeling;static \u0275fac=function(He){return new(He||$e)};static \u0275dir=o.FsC({type:$e})}return $e})();const qe=new o.nKC("MatFormField"),ot=new o.nKC("MAT_FORM_FIELD_DEFAULT_OPTIONS");let rn=(()=>{class $e{_elementRef=(0,o.WQX)(o.aKT);_changeDetectorRef=(0,o.WQX)(o.gRc);_dir=(0,o.WQX)(O.dS);_platform=(0,o.WQX)(w.OD);_idGenerator=(0,o.WQX)(c.g7);_defaults=(0,o.WQX)(ot,{optional:!0});_animationMode=(0,o.WQX)(o.bc$,{optional:!0});_textField;_iconPrefixContainer;_textPrefixContainer;_iconSuffixContainer;_textSuffixContainer;_floatingLabel;_notchedOutline;_lineRipple;_formFieldControl;_prefixChildren;_suffixChildren;_errorChildren;_hintChildren;_labelChild=(0,o.sbv)(Re);get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(Te){this._hideRequiredMarker=(0,d.he)(Te)}_hideRequiredMarker=!1;color="primary";get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||"auto"}set floatLabel(Te){Te!==this._floatLabel&&(this._floatLabel=Te,this._changeDetectorRef.markForCheck())}_floatLabel;get appearance(){return this._appearance}set appearance(Te){const He=this._appearance;this._appearance=Te||this._defaults?.appearance||"fill","outline"===this._appearance&&this._appearance!==He&&(this._needsOutlineLabelOffsetUpdate=!0)}_appearance="fill";get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||"fixed"}set subscriptSizing(Te){this._subscriptSizing=Te||this._defaults?.subscriptSizing||"fixed"}_subscriptSizing=null;get hintLabel(){return this._hintLabel}set hintLabel(Te){this._hintLabel=Te,this._processHints()}_hintLabel="";_hasIconPrefix=!1;_hasTextPrefix=!1;_hasIconSuffix=!1;_hasTextSuffix=!1;_labelId=this._idGenerator.getId("mat-mdc-form-field-label-");_hintLabelId=this._idGenerator.getId("mat-mdc-hint-");_subscriptAnimationState="";get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(Te){this._explicitFormFieldControl=Te}_destroyed=new D.B;_isFocused=null;_explicitFormFieldControl;_needsOutlineLabelOffsetUpdate=!1;_previousControl=null;_stateChanges;_valueChanges;_describedByChanges;_injector=(0,o.WQX)(o.zZn);constructor(){const Te=this._defaults;Te&&(Te.appearance&&(this.appearance=Te.appearance),this._hideRequiredMarker=!!Te?.hideRequiredMarker,Te.color&&(this.color=Te.color))}ngAfterViewInit(){this._updateFocusState(),this._subscriptAnimationState="enter",this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeSubscript(),this._initializePrefixAndSuffix(),this._initializeOutlineLabelOffsetSubscriptions()}ngAfterContentChecked(){this._assertFormFieldControl(),this._control!==this._previousControl&&(this._initializeControl(this._previousControl),this._previousControl=this._control)}ngOnDestroy(){this._stateChanges?.unsubscribe(),this._valueChanges?.unsubscribe(),this._describedByChanges?.unsubscribe(),this._destroyed.next(),this._destroyed.complete()}getLabelId=(0,o.EWP)(()=>this._hasFloatingLabel()?this._labelId:null);getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(Te){const He=this._control,at="mat-mdc-form-field-type-";Te&&this._elementRef.nativeElement.classList.remove(at+Te.controlType),He.controlType&&this._elementRef.nativeElement.classList.add(at+He.controlType),this._stateChanges?.unsubscribe(),this._stateChanges=He.stateChanges.subscribe(()=>{this._updateFocusState(),this._changeDetectorRef.markForCheck()}),this._describedByChanges?.unsubscribe(),this._describedByChanges=He.stateChanges.pipe((0,g.Z)([void 0,void 0]),(0,y.T)(()=>[He.errorState,He.userAriaDescribedBy]),function P(){return(0,h.N)(($e,lt)=>{let Te,He=!1;$e.subscribe((0,u._)(lt,at=>{const Lt=Te;Te=at,He&<.next([Lt,at]),He=!0}))})}(),(0,T.p)(([[Lt,Ut],[Un,pt]])=>Lt!==Un||Ut!==pt)).subscribe(()=>this._syncDescribedByIds()),this._valueChanges?.unsubscribe(),He.ngControl&&He.ngControl.valueChanges&&(this._valueChanges=He.ngControl.valueChanges.pipe((0,E.Q)(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck()))}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(Te=>!Te._isText),this._hasTextPrefix=!!this._prefixChildren.find(Te=>Te._isText),this._hasIconSuffix=!!this._suffixChildren.find(Te=>!Te._isText),this._hasTextSuffix=!!this._suffixChildren.find(Te=>Te._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),(0,p.h)(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){}_updateFocusState(){this._control.focused&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!this._control.focused&&(this._isFocused||null===this._isFocused)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",this._control.focused)}_initializeOutlineLabelOffsetSubscriptions(){this._prefixChildren.changes.subscribe(()=>this._needsOutlineLabelOffsetUpdate=!0),(0,o.Tzd)(()=>{this._needsOutlineLabelOffsetUpdate&&(this._needsOutlineLabelOffsetUpdate=!1,this._updateOutlineLabelOffset())},{injector:this._injector}),this._dir.change.pipe((0,E.Q)(this._destroyed)).subscribe(()=>this._needsOutlineLabelOffsetUpdate=!0)}_shouldAlwaysFloat(){return"always"===this.floatLabel}_hasOutline(){return"outline"===this.appearance}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel=(0,o.EWP)(()=>!!this._labelChild());_shouldLabelFloat(){return!!this._hasFloatingLabel()&&(this._control.shouldLabelFloat||this._shouldAlwaysFloat())}_shouldForward(Te){const He=this._control?this._control.ngControl:null;return He&&He[Te]}_getDisplayedMessages(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_handleLabelResized(){this._refreshOutlineNotchWidth()}_refreshOutlineNotchWidth(){this._hasOutline()&&this._floatingLabel&&this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth()):this._notchedOutline?._setNotchWidth(0)}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){}_syncDescribedByIds(){if(this._control){let Te=[];if(this._control.userAriaDescribedBy&&"string"==typeof this._control.userAriaDescribedBy&&Te.push(...this._control.userAriaDescribedBy.split(" ")),"hint"===this._getDisplayedMessages()){const He=this._hintChildren?this._hintChildren.find(Lt=>"start"===Lt.align):null,at=this._hintChildren?this._hintChildren.find(Lt=>"end"===Lt.align):null;He?Te.push(He.id):this._hintLabel&&Te.push(this._hintLabelId),at&&Te.push(at.id)}else this._errorChildren&&Te.push(...this._errorChildren.map(He=>He.id));this._control.setDescribedByIds(Te)}}_updateOutlineLabelOffset(){if(!this._hasOutline()||!this._floatingLabel)return;const Te=this._floatingLabel.element;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return void(Te.style.transform="");if(!this._isAttachedToDom())return void(this._needsOutlineLabelOffsetUpdate=!0);const He=this._iconPrefixContainer?.nativeElement,at=this._textPrefixContainer?.nativeElement,Lt=this._iconSuffixContainer?.nativeElement,Ut=this._textSuffixContainer?.nativeElement,Un=He?.getBoundingClientRect().width??0,pt=at?.getBoundingClientRect().width??0,mt=Lt?.getBoundingClientRect().width??0,We=Ut?.getBoundingClientRect().width??0;Te.style.transform=`var(\n --mat-mdc-form-field-label-transform,\n translateY(-50%) translateX(calc(${"rtl"===this._dir.value?"-1":"1"} * (${Un+pt}px + var(--mat-mdc-form-field-label-offset-x, 0px))))\n )`,this._elementRef.nativeElement.style.setProperty("--mat-form-field-notch-max-width",`calc(100% - ${Un+pt+mt+We}px)`)}_isAttachedToDom(){const Te=this._elementRef.nativeElement;if(Te.getRootNode){const He=Te.getRootNode();return He&&He!==Te}return document.documentElement.contains(Te)}static \u0275fac=function(He){return new(He||$e)};static \u0275cmp=o.VBU({type:$e,selectors:[["mat-form-field"]],contentQueries:function(He,at,Lt){if(1&He&&(o.C6U(Lt,at._labelChild,Re,5),o.wni(Lt,le,5),o.wni(Lt,jt,5),o.wni(Lt,on,5),o.wni(Lt,De,5),o.wni(Lt,ht,5)),2&He){let Ut;o.NyB(),o.mGM(Ut=o.lsd())&&(at._formFieldControl=Ut.first),o.mGM(Ut=o.lsd())&&(at._prefixChildren=Ut),o.mGM(Ut=o.lsd())&&(at._suffixChildren=Ut),o.mGM(Ut=o.lsd())&&(at._errorChildren=Ut),o.mGM(Ut=o.lsd())&&(at._hintChildren=Ut)}},viewQuery:function(He,at){if(1&He&&(o.GBs(Ue,5),o.GBs(ve,5),o.GBs(ye,5),o.GBs(Se,5),o.GBs(z,5),o.GBs(rt,5),o.GBs(Ke,5),o.GBs(be,5)),2&He){let Lt;o.mGM(Lt=o.lsd())&&(at._textField=Lt.first),o.mGM(Lt=o.lsd())&&(at._iconPrefixContainer=Lt.first),o.mGM(Lt=o.lsd())&&(at._textPrefixContainer=Lt.first),o.mGM(Lt=o.lsd())&&(at._iconSuffixContainer=Lt.first),o.mGM(Lt=o.lsd())&&(at._textSuffixContainer=Lt.first),o.mGM(Lt=o.lsd())&&(at._floatingLabel=Lt.first),o.mGM(Lt=o.lsd())&&(at._notchedOutline=Lt.first),o.mGM(Lt=o.lsd())&&(at._lineRipple=Lt.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:42,hostBindings:function(He,at){2&He&&o.AVh("mat-mdc-form-field-label-always-float",at._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",at._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",at._hasIconSuffix)("mat-form-field-invalid",at._control.errorState)("mat-form-field-disabled",at._control.disabled)("mat-form-field-autofilled",at._control.autofilled)("mat-form-field-no-animations","NoopAnimations"===at._animationMode)("mat-form-field-appearance-fill","fill"==at.appearance)("mat-form-field-appearance-outline","outline"==at.appearance)("mat-form-field-hide-placeholder",at._hasFloatingLabel()&&!at._shouldLabelFloat())("mat-focused",at._control.focused)("mat-primary","accent"!==at.color&&"warn"!==at.color)("mat-accent","accent"===at.color)("mat-warn","warn"===at.color)("ng-untouched",at._shouldForward("untouched"))("ng-touched",at._shouldForward("touched"))("ng-pristine",at._shouldForward("pristine"))("ng-dirty",at._shouldForward("dirty"))("ng-valid",at._shouldForward("valid"))("ng-invalid",at._shouldForward("invalid"))("ng-pending",at._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],features:[o.Jv_([{provide:qe,useExisting:$e},{provide:Ot,useExisting:$e}])],ngContentSelectors:L,decls:18,vars:21,consts:[["labelTemplate",""],["textField",""],["iconPrefixContainer",""],["textPrefixContainer",""],["textSuffixContainer",""],["iconSuffixContainer",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],[1,"mat-mdc-form-field-focus-overlay"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen"],[1,"mat-mdc-form-field-icon-prefix"],[1,"mat-mdc-form-field-text-prefix"],[1,"mat-mdc-form-field-infix"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],[1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align"],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],["matFormFieldFloatingLabel","",3,"floating","monitorResize","id"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[3,"id"],[1,"mat-mdc-form-field-hint-spacer"]],template:function(He,at){if(1&He){const Lt=o.RV6();o.NAR(te),o.DNE(0,X,1,1,"ng-template",null,0,o.C5r),o.j41(2,"div",6,1),o.bIt("click",function(Un){return o.eBV(Lt),o.Njj(at._control.onContainerClick(Un))}),o.DNE(4,K,1,0,"div",7),o.j41(5,"div",8),o.DNE(6,I,2,2,"div",9)(7,M,3,0,"div",10)(8,j,3,0,"div",11),o.j41(9,"div",12),o.DNE(10,Me,1,1,null,13),o.SdG(11),o.k0s(),o.DNE(12,oe,3,0,"div",14)(13,R,3,0,"div",15),o.k0s(),o.DNE(14,se,1,0,"div",16),o.k0s(),o.j41(15,"div",17),o.DNE(16,Ee,2,1,"div",18)(17,Y,5,2,"div",19),o.k0s()}if(2&He){let Lt;o.R7$(2),o.AVh("mdc-text-field--filled",!at._hasOutline())("mdc-text-field--outlined",at._hasOutline())("mdc-text-field--no-label",!at._hasFloatingLabel())("mdc-text-field--disabled",at._control.disabled)("mdc-text-field--invalid",at._control.errorState),o.R7$(2),o.vxM(at._hasOutline()||at._control.disabled?-1:4),o.R7$(2),o.vxM(at._hasOutline()?6:-1),o.R7$(),o.vxM(at._hasIconPrefix?7:-1),o.R7$(),o.vxM(at._hasTextPrefix?8:-1),o.R7$(2),o.vxM(!at._hasOutline()||at._forceDisplayInfixLabel()?10:-1),o.R7$(2),o.vxM(at._hasTextSuffix?12:-1),o.R7$(),o.vxM(at._hasIconSuffix?13:-1),o.R7$(),o.vxM(at._hasOutline()?-1:14),o.R7$(),o.AVh("mat-mdc-form-field-subscript-dynamic-size","dynamic"===at.subscriptSizing),o.R7$(),o.vxM("error"===(Lt=at._getDisplayedMessages())?16:"hint"===Lt?17:-1)}},dependencies:[rt,Ke,C.T3,be,ht],styles:['.mdc-text-field{display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field__input{width:100%;min-width:0;border:none;border-radius:0;background:none;padding:0;-moz-appearance:none;-webkit-appearance:none;height:28px}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}.mdc-text-field__input::placeholder{opacity:0}.mdc-text-field__input::-moz-placeholder{opacity:0}.mdc-text-field__input::-webkit-input-placeholder{opacity:0}.mdc-text-field__input:-ms-input-placeholder{opacity:0}.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-moz-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-webkit-input-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive:-ms-input-placeholder{opacity:0}.mdc-text-field--outlined .mdc-text-field__input,.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-filled-text-field-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mdc-filled-text-field-caret-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-error-caret-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-filled-text-field-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-outlined-text-field-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mdc-outlined-text-field-caret-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-error-caret-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-outlined-text-field-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}}.mdc-text-field--filled{height:56px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small));border-top-right-radius:var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mdc-filled-text-field-container-color, var(--mat-sys-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mdc-filled-text-field-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 4%, transparent))}.mdc-text-field--outlined{height:56px;overflow:visible;padding-right:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)));padding-left:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)) + 4px)}[dir=rtl] .mdc-text-field--outlined{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)) + 4px);padding-left:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)))}.mdc-floating-label{position:absolute;left:0;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label{right:0;left:auto;transform-origin:right top;text-align:right}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:auto}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label{left:auto;right:4px}.mdc-text-field--filled .mdc-floating-label{left:16px;right:auto}[dir=rtl] .mdc-text-field--filled .mdc-floating-label{left:auto;right:16px}.mdc-text-field--disabled .mdc-floating-label{cursor:default}@media(forced-colors: active){.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-filled-text-field-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mdc-filled-text-field-hover-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label{color:var(--mdc-filled-text-field-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mdc-filled-text-field-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mdc-filled-text-field-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mdc-filled-text-field-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mdc-filled-text-field-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mdc-filled-text-field-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mdc-filled-text-field-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mdc-filled-text-field-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-outlined-text-field-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mdc-outlined-text-field-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mdc-outlined-text-field-hover-label-text-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label{color:var(--mdc-outlined-text-field-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mdc-outlined-text-field-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mdc-outlined-text-field-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mdc-outlined-text-field-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mdc-outlined-text-field-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mdc-outlined-text-field-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mdc-outlined-text-field-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mdc-outlined-text-field-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-floating-label--float-above{cursor:auto;transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1);font-size:.75rem}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0;content:"*"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline{text-align:right}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mat-mdc-notch-piece{box-sizing:border-box;height:100%;pointer-events:none;border-top:1px solid;border-bottom:1px solid}.mdc-text-field--focused .mat-mdc-notch-piece{border-width:2px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-outline-color, var(--mat-sys-outline));border-width:var(--mdc-outlined-text-field-outline-width, 1px)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-hover-outline-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-focus-outline-color, var(--mat-sys-primary))}.mdc-text-field--outlined.mdc-text-field--disabled .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-notched-outline .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-hover-outline-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-focus-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mat-mdc-notch-piece{border-width:var(--mdc-outlined-text-field-focus-outline-width, 2px)}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)))}[dir=rtl] .mdc-notched-outline__leading{border-left:none;border-right:1px solid;border-bottom-left-radius:0;border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__trailing{flex-grow:1;border-left:none;border-right:1px solid;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small))}[dir=rtl] .mdc-notched-outline__trailing{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:min(var(--mat-form-field-notch-max-width, 100%),100% - max(12px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)))*2)}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none;--mat-form-field-notch-max-width: 100%}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{z-index:1;border-bottom-width:var(--mdc-filled-text-field-active-indicator-height, 1px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-active-indicator-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-hover-active-indicator-color, var(--mat-sys-on-surface))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-disabled-active-indicator-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-active-indicator-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-hover-active-indicator-color, var(--mat-sys-on-error-container))}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mdc-filled-text-field-focus-active-indicator-height, 2px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-focus-active-indicator-color, var(--mat-sys-primary))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-error-focus-active-indicator-color, var(--mat-sys-error))}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-text-field--disabled{pointer-events:none}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all;will-change:auto}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto;will-change:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height, 56px);padding-top:var(--mat-form-field-filled-with-label-container-padding-top, 24px);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom, 8px)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding, 16px);padding-bottom:var(--mat-form-field-container-vertical-padding, 16px)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height, 56px)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height, 56px) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color, var(--mat-sys-error))}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font, var(--mat-sys-body-small-font));line-height:var(--mat-form-field-subscript-text-line-height, var(--mat-sys-body-small-line-height));font-size:var(--mat-form-field-subscript-text-size, var(--mat-sys-body-small-size));letter-spacing:var(--mat-form-field-subscript-text-tracking, var(--mat-sys-body-small-tracking));font-weight:var(--mat-form-field-subscript-text-weight, var(--mat-sys-body-small-weight))}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color, var(--mat-sys-on-surface))}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity, 0)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color, var(--mat-sys-neutral10))}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color, color-mix(in srgb, var(--mat-sys-neutral10) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color, var(--mat-sys-on-surface-variant))}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}@media(forced-colors: active){.mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}}@media(forced-colors: active){.mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-form-field-container-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-form-field-container-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-form-field-container-text-tracking, var(--mat-sys-body-large-tracking));font-weight:var(--mat-form-field-container-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%;z-index:0}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color, var(--mat-sys-error))}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color, var(--mat-sys-on-error-container))}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color, var(--mat-sys-error))}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field-infix:has(textarea[cols]){width:auto}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::-moz-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::-webkit-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input::placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}'],encapsulation:2,data:{animation:[ft.transitionMessages]},changeDetection:0})}return $e})(),nn=(()=>{class $e{static \u0275fac=function(He){return new(He||$e)};static \u0275mod=o.$C({type:$e});static \u0275inj=o.G2t({imports:[_e.yE,Le.w5,_e.yE]})}return $e})()},9213:(ut,Ie,a)=>{"use strict";a.d(Ie,{An:()=>X,m_:()=>K});var o=a(4438),c=a(3),O=a(177),d=a(7673),w=a(8810),C=a(7468),x=a(8359),D=a(8141),p=a(6354),g=a(9437),y=a(980),h=a(7647),u=a(6697),P=a(1626),T=a(345);const E=["*"];let W;function de(N){return function ne(){if(void 0===W&&(W=null,typeof window<"u")){const N=window;void 0!==N.trustedTypes&&(W=N.trustedTypes.createPolicy("angular#components",{createHTML:V=>V}))}return W}()?.createHTML(N)||N}function ie(N){return Error(`Unable to find icon with the name "${N}"`)}function ae(N){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${N}".`)}function Le(N){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${N}".`)}class _e{url;svgText;options;svgElement;constructor(V,I,M){this.url=V,this.svgText=I,this.options=M}}let Ce=(()=>{class N{_httpClient;_sanitizer;_errorHandler;_document;_svgIconConfigs=new Map;_iconSetConfigs=new Map;_cachedIconsByUrl=new Map;_inProgressUrlFetches=new Map;_fontCssClassesByAlias=new Map;_resolvers=[];_defaultFontSetClass=["material-icons","mat-ligature-font"];constructor(I,M,j,ge){this._httpClient=I,this._sanitizer=M,this._errorHandler=ge,this._document=j}addSvgIcon(I,M,j){return this.addSvgIconInNamespace("",I,M,j)}addSvgIconLiteral(I,M,j){return this.addSvgIconLiteralInNamespace("",I,M,j)}addSvgIconInNamespace(I,M,j,ge){return this._addSvgIconConfig(I,M,new _e(j,null,ge))}addSvgIconResolver(I){return this._resolvers.push(I),this}addSvgIconLiteralInNamespace(I,M,j,ge){const Me=this._sanitizer.sanitize(o.WPN.HTML,j);if(!Me)throw Le(j);const oe=de(Me);return this._addSvgIconConfig(I,M,new _e("",oe,ge))}addSvgIconSet(I,M){return this.addSvgIconSetInNamespace("",I,M)}addSvgIconSetLiteral(I,M){return this.addSvgIconSetLiteralInNamespace("",I,M)}addSvgIconSetInNamespace(I,M,j){return this._addSvgIconSetConfig(I,new _e(M,null,j))}addSvgIconSetLiteralInNamespace(I,M,j){const ge=this._sanitizer.sanitize(o.WPN.HTML,M);if(!ge)throw Le(M);const Me=de(ge);return this._addSvgIconSetConfig(I,new _e("",Me,j))}registerFontClassAlias(I,M=I){return this._fontCssClassesByAlias.set(I,M),this}classNameForFontAlias(I){return this._fontCssClassesByAlias.get(I)||I}setDefaultFontSetClass(...I){return this._defaultFontSetClass=I,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(I){const M=this._sanitizer.sanitize(o.WPN.RESOURCE_URL,I);if(!M)throw ae(I);const j=this._cachedIconsByUrl.get(M);return j?(0,d.of)(Ue(j)):this._loadSvgIconFromConfig(new _e(I,null)).pipe((0,D.M)(ge=>this._cachedIconsByUrl.set(M,ge)),(0,p.T)(ge=>Ue(ge)))}getNamedSvgIcon(I,M=""){const j=ve(M,I);let ge=this._svgIconConfigs.get(j);if(ge)return this._getSvgFromConfig(ge);if(ge=this._getIconConfigFromResolvers(M,I),ge)return this._svgIconConfigs.set(j,ge),this._getSvgFromConfig(ge);const Me=this._iconSetConfigs.get(M);return Me?this._getSvgFromIconSetConfigs(I,Me):(0,w.$)(ie(j))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(I){return I.svgText?(0,d.of)(Ue(this._svgElementFromConfig(I))):this._loadSvgIconFromConfig(I).pipe((0,p.T)(M=>Ue(M)))}_getSvgFromIconSetConfigs(I,M){const j=this._extractIconWithNameFromAnySet(I,M);if(j)return(0,d.of)(j);const ge=M.filter(Me=>!Me.svgText).map(Me=>this._loadSvgIconSetFromConfig(Me).pipe((0,g.W)(oe=>{const se=`Loading icon set URL: ${this._sanitizer.sanitize(o.WPN.RESOURCE_URL,Me.url)} failed: ${oe.message}`;return this._errorHandler.handleError(new Error(se)),(0,d.of)(null)})));return(0,C.p)(ge).pipe((0,p.T)(()=>{const Me=this._extractIconWithNameFromAnySet(I,M);if(!Me)throw ie(I);return Me}))}_extractIconWithNameFromAnySet(I,M){for(let j=M.length-1;j>=0;j--){const ge=M[j];if(ge.svgText&&ge.svgText.toString().indexOf(I)>-1){const Me=this._svgElementFromConfig(ge),oe=this._extractSvgIconFromSet(Me,I,ge.options);if(oe)return oe}}return null}_loadSvgIconFromConfig(I){return this._fetchIcon(I).pipe((0,D.M)(M=>I.svgText=M),(0,p.T)(()=>this._svgElementFromConfig(I)))}_loadSvgIconSetFromConfig(I){return I.svgText?(0,d.of)(null):this._fetchIcon(I).pipe((0,D.M)(M=>I.svgText=M))}_extractSvgIconFromSet(I,M,j){const ge=I.querySelector(`[id="${M}"]`);if(!ge)return null;const Me=ge.cloneNode(!0);if(Me.removeAttribute("id"),"svg"===Me.nodeName.toLowerCase())return this._setSvgAttributes(Me,j);if("symbol"===Me.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(Me),j);const oe=this._svgElementFromString(de(""));return oe.appendChild(Me),this._setSvgAttributes(oe,j)}_svgElementFromString(I){const M=this._document.createElement("DIV");M.innerHTML=I;const j=M.querySelector("svg");if(!j)throw Error(" tag not found");return j}_toSvgElement(I){const M=this._svgElementFromString(de("")),j=I.attributes;for(let ge=0;gede(se)),(0,y.j)(()=>this._inProgressUrlFetches.delete(Me)),(0,h.u)());return this._inProgressUrlFetches.set(Me,R),R}_addSvgIconConfig(I,M,j){return this._svgIconConfigs.set(ve(I,M),j),this}_addSvgIconSetConfig(I,M){const j=this._iconSetConfigs.get(I);return j?j.push(M):this._iconSetConfigs.set(I,[M]),this}_svgElementFromConfig(I){if(!I.svgElement){const M=this._svgElementFromString(I.svgText);this._setSvgAttributes(M,I.options),I.svgElement=M}return I.svgElement}_getIconConfigFromResolvers(I,M){for(let j=0;jV?V.pathname+V.search:""}}}),L=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],q=L.map(N=>`[${N}]`).join(", "),J=/^url\(['"]?#(.*?)['"]?\)$/;let X=(()=>{class N{_elementRef=(0,o.WQX)(o.aKT);_iconRegistry=(0,o.WQX)(Ce);_location=(0,o.WQX)(z);_errorHandler=(0,o.WQX)(o.zcH);_defaultColor;get color(){return this._color||this._defaultColor}set color(I){this._color=I}_color;inline=!1;get svgIcon(){return this._svgIcon}set svgIcon(I){I!==this._svgIcon&&(I?this._updateSvgIcon(I):this._svgIcon&&this._clearSvgElement(),this._svgIcon=I)}_svgIcon;get fontSet(){return this._fontSet}set fontSet(I){const M=this._cleanupFontValue(I);M!==this._fontSet&&(this._fontSet=M,this._updateFontIconClasses())}_fontSet;get fontIcon(){return this._fontIcon}set fontIcon(I){const M=this._cleanupFontValue(I);M!==this._fontIcon&&(this._fontIcon=M,this._updateFontIconClasses())}_fontIcon;_previousFontSetClass=[];_previousFontIconClass;_svgName;_svgNamespace;_previousPath;_elementsWithExternalReferences;_currentIconFetch=x.yU.EMPTY;constructor(){const I=(0,o.WQX)(new o.ES_("aria-hidden"),{optional:!0}),M=(0,o.WQX)(Se,{optional:!0});M&&(M.color&&(this.color=this._defaultColor=M.color),M.fontSet&&(this.fontSet=M.fontSet)),I||this._elementRef.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(I){if(!I)return["",""];const M=I.split(":");switch(M.length){case 1:return["",M[0]];case 2:return M;default:throw Error(`Invalid icon name: "${I}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const I=this._elementsWithExternalReferences;if(I&&I.size){const M=this._location.getPathname();M!==this._previousPath&&(this._previousPath=M,this._prependPathToReferences(M))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(I){this._clearSvgElement();const M=this._location.getPathname();this._previousPath=M,this._cacheChildrenWithExternalReferences(I),this._prependPathToReferences(M),this._elementRef.nativeElement.appendChild(I)}_clearSvgElement(){const I=this._elementRef.nativeElement;let M=I.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();M--;){const j=I.childNodes[M];(1!==j.nodeType||"svg"===j.nodeName.toLowerCase())&&j.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const I=this._elementRef.nativeElement,M=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(j=>j.length>0);this._previousFontSetClass.forEach(j=>I.classList.remove(j)),M.forEach(j=>I.classList.add(j)),this._previousFontSetClass=M,this.fontIcon!==this._previousFontIconClass&&!M.includes("mat-ligature-font")&&(this._previousFontIconClass&&I.classList.remove(this._previousFontIconClass),this.fontIcon&&I.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(I){return"string"==typeof I?I.trim().split(" ")[0]:I}_prependPathToReferences(I){const M=this._elementsWithExternalReferences;M&&M.forEach((j,ge)=>{j.forEach(Me=>{ge.setAttribute(Me.name,`url('${I}#${Me.value}')`)})})}_cacheChildrenWithExternalReferences(I){const M=I.querySelectorAll(q),j=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let ge=0;ge{const oe=M[ge],R=oe.getAttribute(Me),se=R?R.match(J):null;if(se){let Ee=j.get(oe);Ee||(Ee=[],j.set(oe,Ee)),Ee.push({name:Me,value:se[1]})}})}_updateSvgIcon(I){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),I){const[M,j]=this._splitIconName(I);M&&(this._svgNamespace=M),j&&(this._svgName=j),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(j,M).pipe((0,u.s)(1)).subscribe(ge=>this._setSvgElement(ge),ge=>{this._errorHandler.handleError(new Error(`Error retrieving icon ${M}:${j}! ${ge.message}`))})}}static \u0275fac=function(M){return new(M||N)};static \u0275cmp=o.VBU({type:N,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:10,hostBindings:function(M,j){2&M&&(o.BMQ("data-mat-icon-type",j._usingFontIcon()?"font":"svg")("data-mat-icon-name",j._svgName||j.fontIcon)("data-mat-icon-namespace",j._svgNamespace||j.fontSet)("fontIcon",j._usingFontIcon()?j.fontIcon:null),o.HbH(j.color?"mat-"+j.color:""),o.AVh("mat-icon-inline",j.inline)("mat-icon-no-color","primary"!==j.color&&"accent"!==j.color&&"warn"!==j.color))},inputs:{color:"color",inline:[2,"inline","inline",o.L39],svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],features:[o.GFd],ngContentSelectors:E,decls:1,vars:0,template:function(M,j){1&M&&(o.NAR(),o.SdG(0))},styles:["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color, inherit)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0})}return N})(),K=(()=>{class N{static \u0275fac=function(M){return new(M||N)};static \u0275mod=o.$C({type:N});static \u0275inj=o.G2t({imports:[c.yE,c.yE]})}return N})()},2798:(ut,Ie,a)=>{"use strict";a.d(Ie,{JO:()=>K,VO:()=>M,Ve:()=>ge});var o=a(6969),c=a(4438),O=a(3),d=a(2408),w=a(3980),C=a(9888),x=a(8203),D=a(5024),p=a(7336),g=a(9417),y=a(1413),h=a(9030),u=a(7786),P=a(9172),T=a(5558),E=a(5964),W=a(6354),ne=a(3294),de=a(6977),ie=a(6697),Z=a(9969),ae=a(177);const Le=["trigger"],_e=["panel"],Ce=[[["mat-select-trigger"]],"*"],Ae=["mat-select-trigger","*"];function ke(Me,oe){if(1&Me&&(c.j41(0,"span",4),c.EFF(1),c.k0s()),2&Me){const R=c.XpG();c.R7$(),c.JRh(R.placeholder)}}function Ue(Me,oe){1&Me&&c.SdG(0)}function ve(Me,oe){if(1&Me&&(c.j41(0,"span",11),c.EFF(1),c.k0s()),2&Me){const R=c.XpG(2);c.R7$(),c.JRh(R.triggerValue)}}function ye(Me,oe){if(1&Me&&(c.j41(0,"span",5),c.DNE(1,Ue,1,0)(2,ve,2,1,"span",11),c.k0s()),2&Me){const R=c.XpG();c.R7$(),c.vxM(R.customTrigger?1:2)}}function Se(Me,oe){if(1&Me){const R=c.RV6();c.j41(0,"div",12,1),c.bIt("@transformPanel.done",function(Ee){c.eBV(R);const tt=c.XpG();return c.Njj(tt._panelDoneAnimatingStream.next(Ee.toState))})("keydown",function(Ee){c.eBV(R);const tt=c.XpG();return c.Njj(tt._handleKeydown(Ee))}),c.SdG(2,1),c.k0s()}if(2&Me){const R=c.XpG();c.ZvI("mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open ",R._getPanelTheme(),""),c.Y8G("ngClass",R.panelClass)("@transformPanel","showing"),c.BMQ("id",R.id+"-panel")("aria-multiselectable",R.multiple)("aria-label",R.ariaLabel||null)("aria-labelledby",R._getPanelAriaLabelledby())}}const z={transformPanelWrap:(0,Z.hZ)("transformPanelWrap",[(0,Z.kY)("* => void",(0,Z.P)("@transformPanel",[(0,Z.MA)()],{optional:!0}))]),transformPanel:(0,Z.hZ)("transformPanel",[(0,Z.wk)("void",(0,Z.iF)({opacity:0,transform:"scale(1, 0.8)"})),(0,Z.kY)("void => showing",(0,Z.i0)("120ms cubic-bezier(0, 0, 0.2, 1)",(0,Z.iF)({opacity:1,transform:"scale(1, 1)"}))),(0,Z.kY)("* => void",(0,Z.i0)("100ms linear",(0,Z.iF)({opacity:0})))])},J=new c.nKC("mat-select-scroll-strategy",{providedIn:"root",factory:()=>{const Me=(0,c.WQX)(o.hJ);return()=>Me.scrollStrategies.reposition()}}),K=new c.nKC("MAT_SELECT_CONFIG"),N={provide:J,deps:[o.hJ],useFactory:function X(Me){return()=>Me.scrollStrategies.reposition()}},V=new c.nKC("MatSelectTrigger");class I{source;value;constructor(oe,R){this.source=oe,this.value=R}}let M=(()=>{class Me{_viewportRuler=(0,c.WQX)(w.Xj);_changeDetectorRef=(0,c.WQX)(c.gRc);_elementRef=(0,c.WQX)(c.aKT);_dir=(0,c.WQX)(x.dS,{optional:!0});_idGenerator=(0,c.WQX)(C.g7);_parentFormField=(0,c.WQX)(d.xb,{optional:!0});ngControl=(0,c.WQX)(g.vO,{self:!0,optional:!0});_liveAnnouncer=(0,c.WQX)(C.Ai);_defaultOptions=(0,c.WQX)(K,{optional:!0});_initialized=new y.B;options;optionGroups;customTrigger;_positions=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"}];_scrollOptionIntoView(R){const se=this.options.toArray()[R];if(se){const Ee=this.panel.nativeElement,tt=(0,O.jb)(R,this.options,this.optionGroups),Y=se._getHostElement();Ee.scrollTop=0===R&&1===tt?0:(0,O.TL)(Y.offsetTop,Y.offsetHeight,Ee.scrollTop,Ee.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(R){return new I(this,R)}_scrollStrategyFactory=(0,c.WQX)(J);_panelOpen=!1;_compareWith=(R,se)=>R===se;_uid=this._idGenerator.getId("mat-select-");_triggerAriaLabelledBy=null;_previousControl;_destroy=new y.B;_errorStateTracker;stateChanges=new y.B;disableAutomaticLabeling=!0;userAriaDescribedBy;_selectionModel;_keyManager;_preferredOverlayOrigin;_overlayWidth;_onChange=()=>{};_onTouched=()=>{};_valueId=this._idGenerator.getId("mat-select-value-");_panelDoneAnimatingStream=new y.B;_scrollStrategy;_overlayPanelClass=this._defaultOptions?.overlayPanelClass||"";get focused(){return this._focused||this._panelOpen}_focused=!1;controlType="mat-select";trigger;panel;_overlayDir;panelClass;disabled=!1;disableRipple=!1;tabIndex=0;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(R){this._hideSingleSelectionIndicator=R,this._syncParentProperties()}_hideSingleSelectionIndicator=this._defaultOptions?.hideSingleSelectionIndicator??!1;get placeholder(){return this._placeholder}set placeholder(R){this._placeholder=R,this.stateChanges.next()}_placeholder;get required(){return this._required??this.ngControl?.control?.hasValidator(g.k0.required)??!1}set required(R){this._required=R,this.stateChanges.next()}_required;get multiple(){return this._multiple}set multiple(R){this._multiple=R}_multiple=!1;disableOptionCentering=this._defaultOptions?.disableOptionCentering??!1;get compareWith(){return this._compareWith}set compareWith(R){this._compareWith=R,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(R){this._assignValue(R)&&this._onChange(R)}_value;ariaLabel="";ariaLabelledby;get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(R){this._errorStateTracker.matcher=R}typeaheadDebounceInterval;sortComparator;get id(){return this._id}set id(R){this._id=R||this._uid,this.stateChanges.next()}_id;get errorState(){return this._errorStateTracker.errorState}set errorState(R){this._errorStateTracker.errorState=R}panelWidth=this._defaultOptions&&typeof this._defaultOptions.panelWidth<"u"?this._defaultOptions.panelWidth:"auto";canSelectNullableOptions=this._defaultOptions?.canSelectNullableOptions??!1;optionSelectionChanges=(0,h.v)(()=>{const R=this.options;return R?R.changes.pipe((0,P.Z)(R),(0,T.n)(()=>(0,u.h)(...R.map(se=>se.onSelectionChange)))):this._initialized.pipe((0,T.n)(()=>this.optionSelectionChanges))});openedChange=new c.bkB;_openedStream=this.openedChange.pipe((0,E.p)(R=>R),(0,W.T)(()=>{}));_closedStream=this.openedChange.pipe((0,E.p)(R=>!R),(0,W.T)(()=>{}));selectionChange=new c.bkB;valueChange=new c.bkB;constructor(){const R=(0,c.WQX)(O.es),se=(0,c.WQX)(g.cV,{optional:!0}),Ee=(0,c.WQX)(g.j4,{optional:!0}),tt=(0,c.WQX)(new c.ES_("tabindex"),{optional:!0});this.ngControl&&(this.ngControl.valueAccessor=this),null!=this._defaultOptions?.typeaheadDebounceInterval&&(this.typeaheadDebounceInterval=this._defaultOptions.typeaheadDebounceInterval),this._errorStateTracker=new O.X0(R,this.ngControl,Ee,se,this.stateChanges),this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=null==tt?0:parseInt(tt)||0,this.id=this.id}ngOnInit(){this._selectionModel=new D.CB(this.multiple),this.stateChanges.next(),this._panelDoneAnimatingStream.pipe((0,ne.F)(),(0,de.Q)(this._destroy)).subscribe(()=>this._panelDoneAnimating(this.panelOpen)),this._viewportRuler.change().pipe((0,de.Q)(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._changeDetectorRef.detectChanges())})}ngAfterContentInit(){this._initialized.next(),this._initialized.complete(),this._initKeyManager(),this._selectionModel.changed.pipe((0,de.Q)(this._destroy)).subscribe(R=>{R.added.forEach(se=>se.select()),R.removed.forEach(se=>se.deselect())}),this.options.changes.pipe((0,P.Z)(null),(0,de.Q)(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){const R=this._getTriggerAriaLabelledby(),se=this.ngControl;if(R!==this._triggerAriaLabelledBy){const Ee=this._elementRef.nativeElement;this._triggerAriaLabelledBy=R,R?Ee.setAttribute("aria-labelledby",R):Ee.removeAttribute("aria-labelledby")}se&&(this._previousControl!==se.control&&(void 0!==this._previousControl&&null!==se.disabled&&se.disabled!==this.disabled&&(this.disabled=se.disabled),this._previousControl=se.control),this.updateErrorState())}ngOnChanges(R){(R.disabled||R.userAriaDescribedBy)&&this.stateChanges.next(),R.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this.typeaheadDebounceInterval)}ngOnDestroy(){this._keyManager?.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete(),this._clearFromModal()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin()),this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._applyModalPanelOwnership(),this._panelOpen=!0,this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_trackedModal=null;_applyModalPanelOwnership(){const R=this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal="true"]');if(!R)return;const se=`${this.id}-panel`;this._trackedModal&&(0,C.Ae)(this._trackedModal,"aria-owns",se),(0,C.px)(R,"aria-owns",se),this._trackedModal=R}_clearFromModal(){this._trackedModal&&((0,C.Ae)(this._trackedModal,"aria-owns",`${this.id}-panel`),this._trackedModal=null)}close(){this._panelOpen&&(this._panelOpen=!1,this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched(),this.stateChanges.next())}writeValue(R){this._assignValue(R)}registerOnChange(R){this._onChange=R}registerOnTouched(R){this._onTouched=R}setDisabledState(R){this.disabled=R,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){return this.multiple?this._selectionModel?.selected||[]:this._selectionModel?.selected[0]}get triggerValue(){if(this.empty)return"";if(this._multiple){const R=this._selectionModel.selected.map(se=>se.viewValue);return this._isRtl()&&R.reverse(),R.join(", ")}return this._selectionModel.selected[0].viewValue}updateErrorState(){this._errorStateTracker.updateErrorState()}_isRtl(){return!!this._dir&&"rtl"===this._dir.value}_handleKeydown(R){this.disabled||(this.panelOpen?this._handleOpenKeydown(R):this._handleClosedKeydown(R))}_handleClosedKeydown(R){const se=R.keyCode,Ee=se===p.n6||se===p.i7||se===p.UQ||se===p.LE,tt=se===p.Fm||se===p.t6,Y=this._keyManager;if(!Y.isTyping()&&tt&&!(0,p.rp)(R)||(this.multiple||R.altKey)&&Ee)R.preventDefault(),this.open();else if(!this.multiple){const Re=this.selected;Y.onKeydown(R);const De=this.selected;De&&Re!==De&&this._liveAnnouncer.announce(De.viewValue,1e4)}}_handleOpenKeydown(R){const se=this._keyManager,Ee=R.keyCode,tt=Ee===p.n6||Ee===p.i7,Y=se.isTyping();if(tt&&R.altKey)R.preventDefault(),this.close();else if(Y||Ee!==p.Fm&&Ee!==p.t6||!se.activeItem||(0,p.rp)(R))if(!Y&&this._multiple&&Ee===p.A&&R.ctrlKey){R.preventDefault();const Re=this.options.some(De=>!De.disabled&&!De.selected);this.options.forEach(De=>{De.disabled||(Re?De.select():De.deselect())})}else{const Re=se.activeItemIndex;se.onKeydown(R),this._multiple&&tt&&R.shiftKey&&se.activeItem&&se.activeItemIndex!==Re&&se.activeItem._selectViaInteraction()}else R.preventDefault(),se.activeItem._selectViaInteraction()}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){this._focused=!1,this._keyManager?.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_onAttached(){this._overlayDir.positionChange.pipe((0,ie.s)(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()})}_getPanelTheme(){return this._parentFormField?`mat-${this._parentFormField.color}`:""}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(R){if(this.options.forEach(se=>se.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&R)Array.isArray(R),R.forEach(se=>this._selectOptionByValue(se)),this._sortValues();else{const se=this._selectOptionByValue(R);se?this._keyManager.updateActiveItem(se):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(R){const se=this.options.find(Ee=>{if(this._selectionModel.isSelected(Ee))return!1;try{return(null!=Ee.value||this.canSelectNullableOptions)&&this._compareWith(Ee.value,R)}catch{return!1}});return se&&this._selectionModel.select(se),se}_assignValue(R){return!!(R!==this._value||this._multiple&&Array.isArray(R))&&(this.options&&this._setSelectionByValue(R),this._value=R,!0)}_skipPredicate=R=>!this.panelOpen&&R.disabled;_getOverlayWidth(R){return"auto"===this.panelWidth?(R instanceof o.$Q?R.elementRef:R||this._elementRef).nativeElement.getBoundingClientRect().width:null===this.panelWidth?"":this.panelWidth}_syncParentProperties(){if(this.options)for(const R of this.options)R._changeDetectorRef.markForCheck()}_initKeyManager(){this._keyManager=new C.Au(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]).skipPredicate(this._skipPredicate),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){const R=(0,u.h)(this.options.changes,this._destroy);this.optionSelectionChanges.pipe((0,de.Q)(R)).subscribe(se=>{this._onSelect(se.source,se.isUserInput),se.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),(0,u.h)(...this.options.map(se=>se._stateChanges)).pipe((0,de.Q)(R)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(R,se){const Ee=this._selectionModel.isSelected(R);this.canSelectNullableOptions||null!=R.value||this._multiple?(Ee!==R.selected&&(R.selected?this._selectionModel.select(R):this._selectionModel.deselect(R)),se&&this._keyManager.setActiveItem(R),this.multiple&&(this._sortValues(),se&&this.focus())):(R.deselect(),this._selectionModel.clear(),null!=this.value&&this._propagateChanges(R.value)),Ee!==this._selectionModel.isSelected(R)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){const R=this.options.toArray();this._selectionModel.sort((se,Ee)=>this.sortComparator?this.sortComparator(se,Ee,R):R.indexOf(se)-R.indexOf(Ee)),this.stateChanges.next()}}_propagateChanges(R){let se;se=this.multiple?this.selected.map(Ee=>Ee.value):this.selected?this.selected.value:R,this._value=se,this.valueChange.emit(se),this._onChange(se),this.selectionChange.emit(this._getChangeEvent(se)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){if(this._keyManager)if(this.empty){let R=-1;for(let se=0;se0}focus(R){this._elementRef.nativeElement.focus(R)}_getPanelAriaLabelledby(){if(this.ariaLabel)return null;const R=this._parentFormField?.getLabelId()||null;return this.ariaLabelledby?(R?R+" ":"")+this.ariaLabelledby:R}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){if(this.ariaLabel)return null;const R=this._parentFormField?.getLabelId();let se=(R?R+" ":"")+this._valueId;return this.ariaLabelledby&&(se+=" "+this.ariaLabelledby),se}_panelDoneAnimating(R){this.openedChange.emit(R)}setDescribedByIds(R){R.length?this._elementRef.nativeElement.setAttribute("aria-describedby",R.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focus(),this.open()}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}static \u0275fac=function(se){return new(se||Me)};static \u0275cmp=c.VBU({type:Me,selectors:[["mat-select"]],contentQueries:function(se,Ee,tt){if(1&se&&(c.wni(tt,V,5),c.wni(tt,O.wT,5),c.wni(tt,O.QC,5)),2&se){let Y;c.mGM(Y=c.lsd())&&(Ee.customTrigger=Y.first),c.mGM(Y=c.lsd())&&(Ee.options=Y),c.mGM(Y=c.lsd())&&(Ee.optionGroups=Y)}},viewQuery:function(se,Ee){if(1&se&&(c.GBs(Le,5),c.GBs(_e,5),c.GBs(o.WB,5)),2&se){let tt;c.mGM(tt=c.lsd())&&(Ee.trigger=tt.first),c.mGM(tt=c.lsd())&&(Ee.panel=tt.first),c.mGM(tt=c.lsd())&&(Ee._overlayDir=tt.first)}},hostAttrs:["role","combobox","aria-haspopup","listbox",1,"mat-mdc-select"],hostVars:19,hostBindings:function(se,Ee){1&se&&c.bIt("keydown",function(Y){return Ee._handleKeydown(Y)})("focus",function(){return Ee._onFocus()})("blur",function(){return Ee._onBlur()}),2&se&&(c.BMQ("id",Ee.id)("tabindex",Ee.disabled?-1:Ee.tabIndex)("aria-controls",Ee.panelOpen?Ee.id+"-panel":null)("aria-expanded",Ee.panelOpen)("aria-label",Ee.ariaLabel||null)("aria-required",Ee.required.toString())("aria-disabled",Ee.disabled.toString())("aria-invalid",Ee.errorState)("aria-activedescendant",Ee._getAriaActiveDescendant()),c.AVh("mat-mdc-select-disabled",Ee.disabled)("mat-mdc-select-invalid",Ee.errorState)("mat-mdc-select-required",Ee.required)("mat-mdc-select-empty",Ee.empty)("mat-mdc-select-multiple",Ee.multiple))},inputs:{userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],panelClass:"panelClass",disabled:[2,"disabled","disabled",c.L39],disableRipple:[2,"disableRipple","disableRipple",c.L39],tabIndex:[2,"tabIndex","tabIndex",R=>null==R?0:(0,c.Udg)(R)],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",c.L39],placeholder:"placeholder",required:[2,"required","required",c.L39],multiple:[2,"multiple","multiple",c.L39],disableOptionCentering:[2,"disableOptionCentering","disableOptionCentering",c.L39],compareWith:"compareWith",value:"value",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",typeaheadDebounceInterval:[2,"typeaheadDebounceInterval","typeaheadDebounceInterval",c.Udg],sortComparator:"sortComparator",id:"id",panelWidth:"panelWidth",canSelectNullableOptions:[2,"canSelectNullableOptions","canSelectNullableOptions",c.L39]},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},exportAs:["matSelect"],features:[c.Jv_([{provide:d.qT,useExisting:Me},{provide:O.is,useExisting:Me}]),c.GFd,c.OA$],ngContentSelectors:Ae,decls:11,vars:8,consts:[["fallbackOverlayOrigin","cdkOverlayOrigin","trigger",""],["panel",""],["cdk-overlay-origin","",1,"mat-mdc-select-trigger",3,"click"],[1,"mat-mdc-select-value"],[1,"mat-mdc-select-placeholder","mat-mdc-select-min-line"],[1,"mat-mdc-select-value-text"],[1,"mat-mdc-select-arrow-wrapper"],[1,"mat-mdc-select-arrow"],["viewBox","0 0 24 24","width","24px","height","24px","focusable","false","aria-hidden","true"],["d","M7 10l5 5 5-5z"],["cdk-connected-overlay","","cdkConnectedOverlayLockPosition","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"backdropClick","attach","detach","cdkConnectedOverlayPanelClass","cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayOpen","cdkConnectedOverlayPositions","cdkConnectedOverlayWidth"],[1,"mat-mdc-select-min-line"],["role","listbox","tabindex","-1",3,"keydown","ngClass"]],template:function(se,Ee){if(1&se){const tt=c.RV6();c.NAR(Ce),c.j41(0,"div",2,0),c.bIt("click",function(){return c.eBV(tt),c.Njj(Ee.open())}),c.j41(3,"div",3),c.DNE(4,ke,2,1,"span",4)(5,ye,3,1,"span",5),c.k0s(),c.j41(6,"div",6)(7,"div",7),c.qSk(),c.j41(8,"svg",8),c.nrm(9,"path",9),c.k0s()()()(),c.DNE(10,Se,3,9,"ng-template",10),c.bIt("backdropClick",function(){return c.eBV(tt),c.Njj(Ee.close())})("attach",function(){return c.eBV(tt),c.Njj(Ee._onAttached())})("detach",function(){return c.eBV(tt),c.Njj(Ee.close())})}if(2&se){const tt=c.sdS(1);c.R7$(3),c.BMQ("id",Ee._valueId),c.R7$(),c.vxM(Ee.empty?4:5),c.R7$(6),c.Y8G("cdkConnectedOverlayPanelClass",Ee._overlayPanelClass)("cdkConnectedOverlayScrollStrategy",Ee._scrollStrategy)("cdkConnectedOverlayOrigin",Ee._preferredOverlayOrigin||tt)("cdkConnectedOverlayOpen",Ee.panelOpen)("cdkConnectedOverlayPositions",Ee._positions)("cdkConnectedOverlayWidth",Ee._overlayWidth)}},dependencies:[o.$Q,o.WB,ae.YU],styles:['.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-sys-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-sys-body-large-tracking))}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-disabled .mat-mdc-select-placeholder{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color, var(--mat-sys-error))}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}@media(forced-colors: active){.mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .mat-mdc-select-arrow svg{fill:GrayText}}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-select-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}div.mat-mdc-select-panel .mat-mdc-option{--mdc-list-list-item-container-color: var(--mat-select-panel-background-color)}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color, var(--mat-sys-on-surface-variant))}.mat-form-field-no-animations .mat-mdc-select-placeholder,._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform, translateY(-8px))}'],encapsulation:2,data:{animation:[z.transformPanel]},changeDetection:0})}return Me})(),ge=(()=>{class Me{static \u0275fac=function(se){return new(se||Me)};static \u0275mod=c.$C({type:Me});static \u0275inj=c.G2t({providers:[N],imports:[o.z_,O.Sy,O.yE,w.Gj,d.RG,O.Sy,O.yE]})}return Me})()},5416:(ut,Ie,a)=>{"use strict";a.d(Ie,{UG:()=>ke,ht:()=>W,um:()=>ne});var o=a(4438),c=a(8834),O=a(1413),d=a(177),w=a(9969),C=a(6939),x=a(9888),D=a(6860),p=a(9327),g=a(6969),y=a(6977);function h(ye,Se){if(1&ye){const z=o.RV6();o.j41(0,"div",1)(1,"button",2),o.bIt("click",function(){o.eBV(z);const L=o.XpG();return o.Njj(L.action())}),o.EFF(2),o.k0s()()}if(2&ye){const z=o.XpG();o.R7$(2),o.SpI(" ",z.data.action," ")}}const u=["label"];function P(ye,Se){}const T=Math.pow(2,31)-1;class E{_overlayRef;instance;containerInstance;_afterDismissed=new O.B;_afterOpened=new O.B;_onAction=new O.B;_durationTimeoutId;_dismissedByAction=!1;constructor(Se,z){this._overlayRef=z,this.containerInstance=Se,Se._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(Se){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(Se,T))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}}const W=new o.nKC("MatSnackBarData");class ne{politeness="assertive";announcementMessage="";viewContainerRef;duration=0;panelClass;direction;data=null;horizontalPosition="center";verticalPosition="bottom"}let de=(()=>{class ye{static \u0275fac=function(te){return new(te||ye)};static \u0275dir=o.FsC({type:ye,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"]})}return ye})(),ie=(()=>{class ye{static \u0275fac=function(te){return new(te||ye)};static \u0275dir=o.FsC({type:ye,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"]})}return ye})(),Z=(()=>{class ye{static \u0275fac=function(te){return new(te||ye)};static \u0275dir=o.FsC({type:ye,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"]})}return ye})(),ae=(()=>{class ye{snackBarRef=(0,o.WQX)(E);data=(0,o.WQX)(W);constructor(){}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}static \u0275fac=function(te){return new(te||ye)};static \u0275cmp=o.VBU({type:ye,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions",""],["mat-button","","matSnackBarAction","",3,"click"]],template:function(te,L){1&te&&(o.j41(0,"div",0),o.EFF(1),o.k0s(),o.DNE(2,h,3,1,"div",1)),2&te&&(o.R7$(),o.SpI(" ",L.data.message,"\n"),o.R7$(),o.vxM(L.hasAction?2:-1))},dependencies:[c.$z,de,ie,Z],styles:[".mat-mdc-simple-snack-bar{display:flex}"],encapsulation:2,changeDetection:0})}return ye})();const Le={snackBarState:(0,w.hZ)("state",[(0,w.wk)("void, hidden",(0,w.iF)({transform:"scale(0.8)",opacity:0})),(0,w.wk)("visible",(0,w.iF)({transform:"scale(1)",opacity:1})),(0,w.kY)("* => visible",(0,w.i0)("150ms cubic-bezier(0, 0, 0.2, 1)")),(0,w.kY)("* => void, * => hidden",(0,w.i0)("75ms cubic-bezier(0.4, 0.0, 1, 1)",(0,w.iF)({opacity:0})))])};let _e=(()=>{class ye extends C.lb{_ngZone=(0,o.WQX)(o.SKi);_elementRef=(0,o.WQX)(o.aKT);_changeDetectorRef=(0,o.WQX)(o.gRc);_platform=(0,o.WQX)(D.OD);snackBarConfig=(0,o.WQX)(ne);_document=(0,o.WQX)(d.qQ);_trackedModals=new Set;_announceDelay=150;_announceTimeoutId;_destroyed=!1;_portalOutlet;_onAnnounce=new O.B;_onExit=new O.B;_onEnter=new O.B;_animationState="void";_live;_label;_role;_liveElementId=(0,o.WQX)(x.g7).getId("mat-snack-bar-container-live-");constructor(){super();const z=this.snackBarConfig;this._live="assertive"!==z.politeness||z.announcementMessage?"off"===z.politeness?"off":"polite":"assertive",this._platform.FIREFOX&&("polite"===this._live&&(this._role="status"),"assertive"===this._live&&(this._role="alert"))}attachComponentPortal(z){this._assertNotAttached();const te=this._portalOutlet.attachComponentPortal(z);return this._afterPortalAttached(),te}attachTemplatePortal(z){this._assertNotAttached();const te=this._portalOutlet.attachTemplatePortal(z);return this._afterPortalAttached(),te}attachDomPortal=z=>{this._assertNotAttached();const te=this._portalOutlet.attachDomPortal(z);return this._afterPortalAttached(),te};onAnimationEnd(z){const{fromState:te,toState:L}=z;if(("void"===L&&"void"!==te||"hidden"===L)&&this._completeExit(),"visible"===L){const q=this._onEnter;this._ngZone.run(()=>{q.next(),q.complete()})}}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce())}exit(){return this._ngZone.run(()=>{this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId)}),this._onExit}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){queueMicrotask(()=>{this._onExit.next(),this._onExit.complete()})}_afterPortalAttached(){const z=this._elementRef.nativeElement,te=this.snackBarConfig.panelClass;te&&(Array.isArray(te)?te.forEach(J=>z.classList.add(J)):z.classList.add(te)),this._exposeToModals();const L=this._label.nativeElement,q="mdc-snackbar__label";L.classList.toggle(q,!L.querySelector(`.${q}`))}_exposeToModals(){const z=this._liveElementId,te=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]');for(let L=0;L{const te=z.getAttribute("aria-owns");if(te){const L=te.replace(this._liveElementId,"").trim();L.length>0?z.setAttribute("aria-owns",L):z.removeAttribute("aria-owns")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{const z=this._elementRef.nativeElement.querySelector("[aria-hidden]"),te=this._elementRef.nativeElement.querySelector("[aria-live]");if(z&&te){let L=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&z.contains(document.activeElement)&&(L=document.activeElement),z.removeAttribute("aria-hidden"),te.appendChild(z),L?.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}static \u0275fac=function(te){return new(te||ye)};static \u0275cmp=o.VBU({type:ye,selectors:[["mat-snack-bar-container"]],viewQuery:function(te,L){if(1&te&&(o.GBs(C.I3,7),o.GBs(u,7)),2&te){let q;o.mGM(q=o.lsd())&&(L._portalOutlet=q.first),o.mGM(q=o.lsd())&&(L._label=q.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container"],hostVars:1,hostBindings:function(te,L){1&te&&o.Kam("@state.done",function(J){return L.onAnimationEnd(J)}),2&te&&o.zvX("@state",L._animationState)},features:[o.Vt3],decls:6,vars:3,consts:[["label",""],[1,"mdc-snackbar__surface","mat-mdc-snackbar-surface"],[1,"mat-mdc-snack-bar-label"],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(te,L){1&te&&(o.j41(0,"div",1)(1,"div",2,0)(3,"div",3),o.DNE(4,P,0,0,"ng-template",4),o.k0s(),o.nrm(5,"div"),o.k0s()()),2&te&&(o.R7$(5),o.BMQ("aria-live",L._live)("role",L._role)("id",L._liveElementId))},dependencies:[C.I3],styles:[".mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-mdc-snackbar-surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}@media(forced-colors: active){.mat-mdc-snackbar-surface{outline:solid 1px}}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mdc-snackbar-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mdc-snackbar-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mdc-snackbar-container-color, var(--mat-sys-inverse-surface))}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mdc-snackbar-supporting-text-font, var(--mat-sys-body-medium-font));font-size:var(--mdc-snackbar-supporting-text-size, var(--mat-sys-body-medium-size));font-weight:var(--mdc-snackbar-supporting-text-weight, var(--mat-sys-body-medium-weight));line-height:var(--mdc-snackbar-supporting-text-line-height, var(--mat-sys-body-medium-line-height))}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled).mat-unthemed{color:var(--mat-snack-bar-button-color, var(--mat-sys-inverse-primary))}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){--mat-text-button-state-layer-color:currentColor;--mat-text-button-ripple-color:currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}"],encapsulation:2,data:{animation:[Le.snackBarState]}})}return ye})();const Ae=new o.nKC("mat-snack-bar-default-options",{providedIn:"root",factory:function Ce(){return new ne}});let ke=(()=>{class ye{_overlay=(0,o.WQX)(g.hJ);_live=(0,o.WQX)(x.Ai);_injector=(0,o.WQX)(o.zZn);_breakpointObserver=(0,o.WQX)(p.QP);_parentSnackBar=(0,o.WQX)(ye,{optional:!0,skipSelf:!0});_defaultConfig=(0,o.WQX)(Ae);_snackBarRefAtThisLevel=null;simpleSnackBarComponent=ae;snackBarContainerComponent=_e;handsetCssClass="mat-mdc-snack-bar-handset";get _openedSnackBarRef(){const z=this._parentSnackBar;return z?z._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(z){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=z:this._snackBarRefAtThisLevel=z}constructor(){}openFromComponent(z,te){return this._attach(z,te)}openFromTemplate(z,te){return this._attach(z,te)}open(z,te="",L){const q={...this._defaultConfig,...L};return q.data={message:z,action:te},q.announcementMessage===z&&(q.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,q)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(z,te){const q=o.zZn.create({parent:te&&te.viewContainerRef&&te.viewContainerRef.injector||this._injector,providers:[{provide:ne,useValue:te}]}),J=new C.A8(this.snackBarContainerComponent,te.viewContainerRef,q),X=z.attach(J);return X.instance.snackBarConfig=te,X.instance}_attach(z,te){const L={...new ne,...this._defaultConfig,...te},q=this._createOverlay(L),J=this._attachSnackBarContainer(q,L),X=new E(J,q);if(z instanceof o.C4Q){const K=new C.VA(z,null,{$implicit:L.data,snackBarRef:X});X.instance=J.attachTemplatePortal(K)}else{const K=this._createInjector(L,X),N=new C.A8(z,void 0,K),V=J.attachComponentPortal(N);X.instance=V.instance}return this._breakpointObserver.observe(p.Rp.HandsetPortrait).pipe((0,y.Q)(q.detachments())).subscribe(K=>{q.overlayElement.classList.toggle(this.handsetCssClass,K.matches)}),L.announcementMessage&&J._onAnnounce.subscribe(()=>{this._live.announce(L.announcementMessage,L.politeness)}),this._animateSnackBar(X,L),this._openedSnackBarRef=X,this._openedSnackBarRef}_animateSnackBar(z,te){z.afterDismissed().subscribe(()=>{this._openedSnackBarRef==z&&(this._openedSnackBarRef=null),te.announcementMessage&&this._live.clear()}),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{z.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):z.containerInstance.enter(),te.duration&&te.duration>0&&z.afterOpened().subscribe(()=>z._dismissAfter(te.duration))}_createOverlay(z){const te=new g.rR;te.direction=z.direction;let L=this._overlay.position().global();const q="rtl"===z.direction,J="left"===z.horizontalPosition||"start"===z.horizontalPosition&&!q||"end"===z.horizontalPosition&&q,X=!J&&"center"!==z.horizontalPosition;return J?L.left("0"):X?L.right("0"):L.centerHorizontally(),"top"===z.verticalPosition?L.top("0"):L.bottom("0"),te.positionStrategy=L,this._overlay.create(te)}_createInjector(z,te){return o.zZn.create({parent:z&&z.viewContainerRef&&z.viewContainerRef.injector||this._injector,providers:[{provide:E,useValue:te},{provide:W,useValue:z.data}]})}static \u0275fac=function(te){return new(te||ye)};static \u0275prov=o.jDH({token:ye,factory:ye.\u0275fac,providedIn:"root"})}return ye})()},4823:(ut,Ie,a)=>{"use strict";a.d(Ie,{oV:()=>ye,uc:()=>te});var o=a(6977),c=a(4085),O=a(7336),d=a(4438),w=a(177),C=a(6860),x=a(9888),D=a(8203),p=a(6969),g=a(3980),y=a(6939),h=a(1413),P=(a(9969),a(3));const T=["tooltip"],ne=new d.nKC("mat-tooltip-scroll-strategy",{providedIn:"root",factory:()=>{const L=(0,d.WQX)(p.hJ);return()=>L.scrollStrategies.reposition({scrollThrottle:20})}}),ie={provide:ne,deps:[p.hJ],useFactory:function de(L){return()=>L.scrollStrategies.reposition({scrollThrottle:20})}},ae=new d.nKC("mat-tooltip-default-options",{providedIn:"root",factory:function Z(){return{showDelay:0,hideDelay:0,touchendHideDelay:1500}}}),_e="tooltip-panel",Ce=(0,C.BQ)({passive:!0});let ye=(()=>{class L{_overlay=(0,d.WQX)(p.hJ);_elementRef=(0,d.WQX)(d.aKT);_scrollDispatcher=(0,d.WQX)(g.R);_viewContainerRef=(0,d.WQX)(d.c1b);_ngZone=(0,d.WQX)(d.SKi);_platform=(0,d.WQX)(C.OD);_ariaDescriber=(0,d.WQX)(x.vr);_focusMonitor=(0,d.WQX)(x.FN);_dir=(0,d.WQX)(D.dS);_injector=(0,d.WQX)(d.zZn);_defaultOptions=(0,d.WQX)(ae,{optional:!0});_overlayRef;_tooltipInstance;_portal;_position="below";_positionAtOrigin=!1;_disabled=!1;_tooltipClass;_scrollStrategy=(0,d.WQX)(ne);_viewInitialized=!1;_pointerExitEventsInitialized=!1;_tooltipComponent=Se;_viewportMargin=8;_currentPosition;_cssClassPrefix="mat-mdc";_ariaDescriptionPending;_dirSubscribed=!1;get position(){return this._position}set position(J){J!==this._position&&(this._position=J,this._overlayRef&&(this._updatePosition(this._overlayRef),this._tooltipInstance?.show(0),this._overlayRef.updatePosition()))}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(J){this._positionAtOrigin=(0,c.he)(J),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(J){const X=(0,c.he)(J);this._disabled!==X&&(this._disabled=X,X?this.hide(0):this._setupPointerEnterEventsIfNeeded(),this._syncAriaDescription(this.message))}get showDelay(){return this._showDelay}set showDelay(J){this._showDelay=(0,c.OE)(J)}_showDelay;get hideDelay(){return this._hideDelay}set hideDelay(J){this._hideDelay=(0,c.OE)(J),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}_hideDelay;touchGestures="auto";get message(){return this._message}set message(J){const X=this._message;this._message=null!=J?String(J).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage()),this._syncAriaDescription(X)}_message="";get tooltipClass(){return this._tooltipClass}set tooltipClass(J){this._tooltipClass=J,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}_passiveListeners=[];_document=(0,d.WQX)(w.qQ);_touchstartTimeout=null;_destroyed=new h.B;_isDestroyed=!1;constructor(){const J=this._defaultOptions;J&&(this._showDelay=J.showDelay,this._hideDelay=J.hideDelay,J.position&&(this.position=J.position),J.positionAtOrigin&&(this.positionAtOrigin=J.positionAtOrigin),J.touchGestures&&(this.touchGestures=J.touchGestures),J.tooltipClass&&(this.tooltipClass=J.tooltipClass)),this._viewportMargin=8}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe((0,o.Q)(this._destroyed)).subscribe(J=>{J?"keyboard"===J&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){const J=this._elementRef.nativeElement;this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._passiveListeners.forEach(([X,K])=>{J.removeEventListener(X,K,Ce)}),this._passiveListeners.length=0,this._destroyed.next(),this._destroyed.complete(),this._isDestroyed=!0,this._ariaDescriber.removeDescription(J,this.message,"tooltip"),this._focusMonitor.stopMonitoring(J)}show(J=this.showDelay,X){if(this.disabled||!this.message||this._isTooltipVisible())return void this._tooltipInstance?._cancelPendingAnimations();const K=this._createOverlay(X);this._detach(),this._portal=this._portal||new y.A8(this._tooltipComponent,this._viewContainerRef);const N=this._tooltipInstance=K.attach(this._portal).instance;N._triggerElement=this._elementRef.nativeElement,N._mouseLeaveHideDelay=this._hideDelay,N.afterHidden().pipe((0,o.Q)(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),N.show(J)}hide(J=this.hideDelay){const X=this._tooltipInstance;X&&(X.isVisible()?X.hide(J):(X._cancelPendingAnimations(),this._detach()))}toggle(J){this._isTooltipVisible()?this.hide():this.show(void 0,J)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(J){if(this._overlayRef){const N=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!J)&&N._origin instanceof d.aKT)return this._overlayRef;this._detach()}const X=this._scrollDispatcher.getAncestorScrollContainers(this._elementRef),K=this._overlay.position().flexibleConnectedTo(this.positionAtOrigin&&J||this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(X);return K.positionChanges.pipe((0,o.Q)(this._destroyed)).subscribe(N=>{this._updateCurrentPositionClass(N.connectionPair),this._tooltipInstance&&N.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=this._overlay.create({direction:this._dir,positionStrategy:K,panelClass:`${this._cssClassPrefix}-${_e}`,scrollStrategy:this._scrollStrategy()}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe((0,o.Q)(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe((0,o.Q)(this._destroyed)).subscribe(()=>this._tooltipInstance?._handleBodyInteraction()),this._overlayRef.keydownEvents().pipe((0,o.Q)(this._destroyed)).subscribe(N=>{this._isTooltipVisible()&&N.keyCode===O._f&&!(0,O.rp)(N)&&(N.preventDefault(),N.stopPropagation(),this._ngZone.run(()=>this.hide(0)))}),this._defaultOptions?.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._dirSubscribed||(this._dirSubscribed=!0,this._dir.change.pipe((0,o.Q)(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)})),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(J){const X=J.getConfig().positionStrategy,K=this._getOrigin(),N=this._getOverlayPosition();X.withPositions([this._addOffset({...K.main,...N.main}),this._addOffset({...K.fallback,...N.fallback})])}_addOffset(J){const K=!this._dir||"ltr"==this._dir.value;return"top"===J.originY?J.offsetY=-8:"bottom"===J.originY?J.offsetY=8:"start"===J.originX?J.offsetX=K?-8:8:"end"===J.originX&&(J.offsetX=K?8:-8),J}_getOrigin(){const J=!this._dir||"ltr"==this._dir.value,X=this.position;let K;"above"==X||"below"==X?K={originX:"center",originY:"above"==X?"top":"bottom"}:"before"==X||"left"==X&&J||"right"==X&&!J?K={originX:"start",originY:"center"}:("after"==X||"right"==X&&J||"left"==X&&!J)&&(K={originX:"end",originY:"center"});const{x:N,y:V}=this._invertPosition(K.originX,K.originY);return{main:K,fallback:{originX:N,originY:V}}}_getOverlayPosition(){const J=!this._dir||"ltr"==this._dir.value,X=this.position;let K;"above"==X?K={overlayX:"center",overlayY:"bottom"}:"below"==X?K={overlayX:"center",overlayY:"top"}:"before"==X||"left"==X&&J||"right"==X&&!J?K={overlayX:"end",overlayY:"center"}:("after"==X||"right"==X&&J||"left"==X&&!J)&&(K={overlayX:"start",overlayY:"center"});const{x:N,y:V}=this._invertPosition(K.overlayX,K.overlayY);return{main:K,fallback:{overlayX:N,overlayY:V}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),(0,d.mal)(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()},{injector:this._injector}))}_setTooltipClass(J){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=J,this._tooltipInstance._markForCheck())}_invertPosition(J,X){return"above"===this.position||"below"===this.position?"top"===X?X="bottom":"bottom"===X&&(X="top"):"end"===J?J="start":"start"===J&&(J="end"),{x:J,y:X}}_updateCurrentPositionClass(J){const{overlayY:X,originX:K,originY:N}=J;let V;if(V="center"===X?this._dir&&"rtl"===this._dir.value?"end"===K?"left":"right":"start"===K?"left":"right":"bottom"===X&&"top"===N?"above":"below",V!==this._currentPosition){const I=this._overlayRef;if(I){const M=`${this._cssClassPrefix}-${_e}-`;I.removePanelClass(M+this._currentPosition),I.addPanelClass(M+V)}this._currentPosition=V}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._passiveListeners.length||(this._platformSupportsMouseEvents()?this._passiveListeners.push(["mouseenter",J=>{let X;this._setupPointerExitEventsIfNeeded(),void 0!==J.x&&void 0!==J.y&&(X=J),this.show(void 0,X)}]):"off"!==this.touchGestures&&(this._disableNativeGesturesIfNecessary(),this._passiveListeners.push(["touchstart",J=>{const X=J.targetTouches?.[0],K=X?{x:X.clientX,y:X.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this._touchstartTimeout=setTimeout(()=>{this._touchstartTimeout=null,this.show(void 0,K)},this._defaultOptions?.touchLongPressShowDelay??500)}])),this._addListeners(this._passiveListeners))}_setupPointerExitEventsIfNeeded(){if(this._pointerExitEventsInitialized)return;this._pointerExitEventsInitialized=!0;const J=[];if(this._platformSupportsMouseEvents())J.push(["mouseleave",X=>{const K=X.relatedTarget;(!K||!this._overlayRef?.overlayElement.contains(K))&&this.hide()}],["wheel",X=>this._wheelListener(X)]);else if("off"!==this.touchGestures){this._disableNativeGesturesIfNecessary();const X=()=>{this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions?.touchendHideDelay)};J.push(["touchend",X],["touchcancel",X])}this._addListeners(J),this._passiveListeners.push(...J)}_addListeners(J){J.forEach(([X,K])=>{this._elementRef.nativeElement.addEventListener(X,K,Ce)})}_platformSupportsMouseEvents(){return!this._platform.IOS&&!this._platform.ANDROID}_wheelListener(J){if(this._isTooltipVisible()){const X=this._document.elementFromPoint(J.clientX,J.clientY),K=this._elementRef.nativeElement;X!==K&&!K.contains(X)&&this.hide()}}_disableNativeGesturesIfNecessary(){const J=this.touchGestures;if("off"!==J){const X=this._elementRef.nativeElement,K=X.style;("on"===J||"INPUT"!==X.nodeName&&"TEXTAREA"!==X.nodeName)&&(K.userSelect=K.msUserSelect=K.webkitUserSelect=K.MozUserSelect="none"),("on"===J||!X.draggable)&&(K.webkitUserDrag="none"),K.touchAction="none",K.webkitTapHighlightColor="transparent"}}_syncAriaDescription(J){this._ariaDescriptionPending||(this._ariaDescriptionPending=!0,this._ariaDescriber.removeDescription(this._elementRef.nativeElement,J,"tooltip"),this._isDestroyed||(0,d.mal)({write:()=>{this._ariaDescriptionPending=!1,this.message&&!this.disabled&&this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,"tooltip")}},{injector:this._injector}))}static \u0275fac=function(X){return new(X||L)};static \u0275dir=d.FsC({type:L,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-mdc-tooltip-trigger"],hostVars:2,hostBindings:function(X,K){2&X&&d.AVh("mat-mdc-tooltip-disabled",K.disabled)},inputs:{position:[0,"matTooltipPosition","position"],positionAtOrigin:[0,"matTooltipPositionAtOrigin","positionAtOrigin"],disabled:[0,"matTooltipDisabled","disabled"],showDelay:[0,"matTooltipShowDelay","showDelay"],hideDelay:[0,"matTooltipHideDelay","hideDelay"],touchGestures:[0,"matTooltipTouchGestures","touchGestures"],message:[0,"matTooltip","message"],tooltipClass:[0,"matTooltipClass","tooltipClass"]},exportAs:["matTooltip"]})}return L})(),Se=(()=>{class L{_changeDetectorRef=(0,d.WQX)(d.gRc);_elementRef=(0,d.WQX)(d.aKT);_isMultiline=!1;message;tooltipClass;_showTimeoutId;_hideTimeoutId;_triggerElement;_mouseLeaveHideDelay;_animationsDisabled;_tooltip;_closeOnInteraction=!1;_isVisible=!1;_onHide=new h.B;_showAnimation="mat-mdc-tooltip-show";_hideAnimation="mat-mdc-tooltip-hide";constructor(){const J=(0,d.WQX)(d.bc$,{optional:!0});this._animationsDisabled="NoopAnimations"===J}show(J){null!=this._hideTimeoutId&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},J)}hide(J){null!=this._showTimeoutId&&clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},J)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:J}){(!J||!this._triggerElement.contains(J))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){const J=this._elementRef.nativeElement.getBoundingClientRect();return J.height>24&&J.width>=200}_handleAnimationEnd({animationName:J}){(J===this._showAnimation||J===this._hideAnimation)&&this._finalizeAnimation(J===this._showAnimation)}_cancelPendingAnimations(){null!=this._showTimeoutId&&clearTimeout(this._showTimeoutId),null!=this._hideTimeoutId&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(J){J?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(J){const X=this._tooltip.nativeElement,K=this._showAnimation,N=this._hideAnimation;if(X.classList.remove(J?N:K),X.classList.add(J?K:N),this._isVisible!==J&&(this._isVisible=J,this._changeDetectorRef.markForCheck()),J&&!this._animationsDisabled&&"function"==typeof getComputedStyle){const V=getComputedStyle(X);("0s"===V.getPropertyValue("animation-duration")||"none"===V.getPropertyValue("animation-name"))&&(this._animationsDisabled=!0)}J&&this._onShow(),this._animationsDisabled&&(X.classList.add("_mat-animation-noopable"),this._finalizeAnimation(J))}static \u0275fac=function(X){return new(X||L)};static \u0275cmp=d.VBU({type:L,selectors:[["mat-tooltip-component"]],viewQuery:function(X,K){if(1&X&&d.GBs(T,7),2&X){let N;d.mGM(N=d.lsd())&&(K._tooltip=N.first)}},hostAttrs:["aria-hidden","true"],hostBindings:function(X,K){1&X&&d.bIt("mouseleave",function(V){return K._handleMouseLeave(V)})},decls:4,vars:4,consts:[["tooltip",""],[1,"mdc-tooltip","mat-mdc-tooltip",3,"animationend","ngClass"],[1,"mat-mdc-tooltip-surface","mdc-tooltip__surface"]],template:function(X,K){if(1&X){const N=d.RV6();d.j41(0,"div",1,0),d.bIt("animationend",function(I){return d.eBV(N),d.Njj(K._handleAnimationEnd(I))}),d.j41(2,"div",2),d.EFF(3),d.k0s()()}2&X&&(d.AVh("mdc-tooltip--multiline",K._isMultiline),d.Y8G("ngClass",K.tooltipClass),d.R7$(3),d.JRh(K.message))},dependencies:[w.YU],styles:['.mat-mdc-tooltip{position:relative;transform:scale(0);display:inline-flex}.mat-mdc-tooltip::before{content:"";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-surface{word-break:normal;overflow-wrap:anywhere;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center;will-change:transform,opacity;background-color:var(--mdc-plain-tooltip-container-color, var(--mat-sys-inverse-surface));color:var(--mdc-plain-tooltip-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mdc-plain-tooltip-container-shape, var(--mat-sys-corner-extra-small));font-family:var(--mdc-plain-tooltip-supporting-text-font, var(--mat-sys-body-small-font));font-size:var(--mdc-plain-tooltip-supporting-text-size, var(--mat-sys-body-small-size));font-weight:var(--mdc-plain-tooltip-supporting-text-weight, var(--mat-sys-body-small-weight));line-height:var(--mdc-plain-tooltip-supporting-text-line-height, var(--mat-sys-body-small-line-height));letter-spacing:var(--mdc-plain-tooltip-supporting-text-tracking, var(--mat-sys-body-small-tracking))}.mat-mdc-tooltip-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:right}.mat-mdc-tooltip-panel{line-height:normal}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}'],encapsulation:2,changeDetection:0})}return L})(),te=(()=>{class L{static \u0275fac=function(X){return new(X||L)};static \u0275mod=d.$C({type:L});static \u0275inj=d.G2t({providers:[ie],imports:[x.Pd,p.z_,P.yE,P.yE,g.Gj]})}return L})()},345:(ut,Ie,a)=>{"use strict";a.d(Ie,{$x:()=>Ut,B7:()=>te,B8:()=>oe,hE:()=>rt,up:()=>kt});var o=a(177),c=a(4438),O=a(1626);class d extends o.VF{supportsDOMEvents=!0}class w extends d{static makeCurrent(){(0,o.ZD)(new w)}onAndCancel(mt,We,it,bt){return mt.addEventListener(We,it,bt),()=>{mt.removeEventListener(We,it,bt)}}dispatchEvent(mt,We){mt.dispatchEvent(We)}remove(mt){mt.remove()}createElement(mt,We){return(We=We||this.getDefaultDocument()).createElement(mt)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(mt){return mt.nodeType===Node.ELEMENT_NODE}isShadowRoot(mt){return mt instanceof DocumentFragment}getGlobalEventTarget(mt,We){return"window"===We?window:"document"===We?mt:"body"===We?mt.body:null}getBaseHref(mt){const We=function x(){return C=C||document.querySelector("base"),C?C.getAttribute("href"):null}();return null==We?null:function D(pt){return new URL(pt,document.baseURI).pathname}(We)}resetBaseElement(){C=null}getUserAgent(){return window.navigator.userAgent}getCookie(mt){return(0,o._b)(document.cookie,mt)}}let C=null,g=(()=>{class pt{build(){return new XMLHttpRequest}static \u0275fac=function(it){return new(it||pt)};static \u0275prov=c.jDH({token:pt,factory:pt.\u0275fac})}return pt})();const y=new c.nKC("");let h=(()=>{class pt{_zone;_plugins;_eventNameToPlugin=new Map;constructor(We,it){this._zone=it,We.forEach(bt=>{bt.manager=this}),this._plugins=We.slice().reverse()}addEventListener(We,it,bt,ct){return this._findPluginFor(it).addEventListener(We,it,bt,ct)}getZone(){return this._zone}_findPluginFor(We){let it=this._eventNameToPlugin.get(We);if(it)return it;if(it=this._plugins.find(ct=>ct.supports(We)),!it)throw new c.wOt(5101,!1);return this._eventNameToPlugin.set(We,it),it}static \u0275fac=function(it){return new(it||pt)(c.KVO(y),c.KVO(c.SKi))};static \u0275prov=c.jDH({token:pt,factory:pt.\u0275fac})}return pt})();class u{_doc;constructor(mt){this._doc=mt}manager}const P="ng-app-id";function T(pt){for(const mt of pt)mt.remove()}function E(pt,mt){const We=mt.createElement("style");return We.textContent=pt,We}function ne(pt,mt){const We=mt.createElement("link");return We.setAttribute("rel","stylesheet"),We.setAttribute("href",pt),We}let de=(()=>{class pt{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;isServer;constructor(We,it,bt,ct={}){this.doc=We,this.appId=it,this.nonce=bt,this.isServer=(0,o.Vy)(ct),function W(pt,mt,We,it){const bt=pt.head?.querySelectorAll(`style[${P}="${mt}"],link[${P}="${mt}"]`);if(bt)for(const ct of bt)ct.removeAttribute(P),ct instanceof HTMLLinkElement?it.set(ct.href.slice(ct.href.lastIndexOf("/")+1),{usage:0,elements:[ct]}):ct.textContent&&We.set(ct.textContent,{usage:0,elements:[ct]})}(We,it,this.inline,this.external),this.hosts.add(We.head)}addStyles(We,it){for(const bt of We)this.addUsage(bt,this.inline,E);it?.forEach(bt=>this.addUsage(bt,this.external,ne))}removeStyles(We,it){for(const bt of We)this.removeUsage(bt,this.inline);it?.forEach(bt=>this.removeUsage(bt,this.external))}addUsage(We,it,bt){const ct=it.get(We);ct?ct.usage++:it.set(We,{usage:1,elements:[...this.hosts].map(b=>this.addElement(b,bt(We,this.doc)))})}removeUsage(We,it){const bt=it.get(We);bt&&(bt.usage--,bt.usage<=0&&(T(bt.elements),it.delete(We)))}ngOnDestroy(){for(const[,{elements:We}]of[...this.inline,...this.external])T(We);this.hosts.clear()}addHost(We){this.hosts.add(We);for(const[it,{elements:bt}]of this.inline)bt.push(this.addElement(We,E(it,this.doc)));for(const[it,{elements:bt}]of this.external)bt.push(this.addElement(We,ne(it,this.doc)))}removeHost(We){this.hosts.delete(We)}addElement(We,it){return this.nonce&&it.setAttribute("nonce",this.nonce),this.isServer&&it.setAttribute(P,this.appId),We.appendChild(it)}static \u0275fac=function(it){return new(it||pt)(c.KVO(o.qQ),c.KVO(c.sZ2),c.KVO(c.BIS,8),c.KVO(c.Agw))};static \u0275prov=c.jDH({token:pt,factory:pt.\u0275fac})}return pt})();const ie={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/Math/MathML"},Z=/%COMP%/g,Ue=new c.nKC("",{providedIn:"root",factory:()=>!0});function Se(pt,mt){return mt.map(We=>We.replace(Z,pt))}let te=(()=>{class pt{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;platformId;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;platformIsServer;constructor(We,it,bt,ct,b,k,A,H=null,xe=null){this.eventManager=We,this.sharedStylesHost=it,this.appId=bt,this.removeStylesOnCompDestroy=ct,this.doc=b,this.platformId=k,this.ngZone=A,this.nonce=H,this.tracingService=xe,this.platformIsServer=(0,o.Vy)(k),this.defaultRenderer=new L(We,b,A,this.platformIsServer,this.tracingService)}createRenderer(We,it){if(!We||!it)return this.defaultRenderer;this.platformIsServer&&it.encapsulation===c.gXe.ShadowDom&&(it={...it,encapsulation:c.gXe.Emulated});const bt=this.getOrCreateRenderer(We,it);return bt instanceof V?bt.applyToHost(We):bt instanceof N&&bt.applyStyles(),bt}getOrCreateRenderer(We,it){const bt=this.rendererByCompId;let ct=bt.get(it.id);if(!ct){const b=this.doc,k=this.ngZone,A=this.eventManager,H=this.sharedStylesHost,xe=this.removeStylesOnCompDestroy,Oe=this.platformIsServer,je=this.tracingService;switch(it.encapsulation){case c.gXe.Emulated:ct=new V(A,H,it,this.appId,xe,b,k,Oe,je);break;case c.gXe.ShadowDom:return new K(A,H,We,it,b,k,this.nonce,Oe,je);default:ct=new N(A,H,it,xe,b,k,Oe,je)}bt.set(it.id,ct)}return ct}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(We){this.rendererByCompId.delete(We)}static \u0275fac=function(it){return new(it||pt)(c.KVO(h),c.KVO(de),c.KVO(c.sZ2),c.KVO(Ue),c.KVO(o.qQ),c.KVO(c.Agw),c.KVO(c.SKi),c.KVO(c.BIS),c.KVO(c.Lf2,8))};static \u0275prov=c.jDH({token:pt,factory:pt.\u0275fac})}return pt})();class L{eventManager;doc;ngZone;platformIsServer;tracingService;data=Object.create(null);throwOnSyntheticProps=!0;constructor(mt,We,it,bt,ct){this.eventManager=mt,this.doc=We,this.ngZone=it,this.platformIsServer=bt,this.tracingService=ct}destroy(){}destroyNode=null;createElement(mt,We){return We?this.doc.createElementNS(ie[We]||We,mt):this.doc.createElement(mt)}createComment(mt){return this.doc.createComment(mt)}createText(mt){return this.doc.createTextNode(mt)}appendChild(mt,We){(X(mt)?mt.content:mt).appendChild(We)}insertBefore(mt,We,it){mt&&(X(mt)?mt.content:mt).insertBefore(We,it)}removeChild(mt,We){We.remove()}selectRootElement(mt,We){let it="string"==typeof mt?this.doc.querySelector(mt):mt;if(!it)throw new c.wOt(-5104,!1);return We||(it.textContent=""),it}parentNode(mt){return mt.parentNode}nextSibling(mt){return mt.nextSibling}setAttribute(mt,We,it,bt){if(bt){We=bt+":"+We;const ct=ie[bt];ct?mt.setAttributeNS(ct,We,it):mt.setAttribute(We,it)}else mt.setAttribute(We,it)}removeAttribute(mt,We,it){if(it){const bt=ie[it];bt?mt.removeAttributeNS(bt,We):mt.removeAttribute(`${it}:${We}`)}else mt.removeAttribute(We)}addClass(mt,We){mt.classList.add(We)}removeClass(mt,We){mt.classList.remove(We)}setStyle(mt,We,it,bt){bt&(c.czy.DashCase|c.czy.Important)?mt.style.setProperty(We,it,bt&c.czy.Important?"important":""):mt.style[We]=it}removeStyle(mt,We,it){it&c.czy.DashCase?mt.style.removeProperty(We):mt.style[We]=""}setProperty(mt,We,it){null!=mt&&(mt[We]=it)}setValue(mt,We){mt.nodeValue=We}listen(mt,We,it,bt){if("string"==typeof mt&&!(mt=(0,o.QT)().getGlobalEventTarget(this.doc,mt)))throw new Error(`Unsupported event target ${mt} for event ${We}`);let ct=this.decoratePreventDefault(it);return null!==this.tracingService&&this.tracingService.wrapEventListener&&(ct=this.tracingService.wrapEventListener(mt,We,ct)),this.eventManager.addEventListener(mt,We,ct,bt)}decoratePreventDefault(mt){return We=>{if("__ngUnwrap__"===We)return mt;!1===(this.platformIsServer?this.ngZone.runGuarded(()=>mt(We)):mt(We))&&We.preventDefault()}}}function X(pt){return"TEMPLATE"===pt.tagName&&void 0!==pt.content}class K extends L{sharedStylesHost;hostEl;shadowRoot;constructor(mt,We,it,bt,ct,b,k,A,H){super(mt,ct,b,A,H),this.sharedStylesHost=We,this.hostEl=it,this.shadowRoot=it.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);let xe=bt.styles;xe=Se(bt.id,xe);for(const je of xe){const Ze=document.createElement("style");k&&Ze.setAttribute("nonce",k),Ze.textContent=je,this.shadowRoot.appendChild(Ze)}const Oe=bt.getExternalStyles?.();if(Oe)for(const je of Oe){const Ze=ne(je,ct);k&&Ze.setAttribute("nonce",k),this.shadowRoot.appendChild(Ze)}}nodeOrShadowRoot(mt){return mt===this.hostEl?this.shadowRoot:mt}appendChild(mt,We){return super.appendChild(this.nodeOrShadowRoot(mt),We)}insertBefore(mt,We,it){return super.insertBefore(this.nodeOrShadowRoot(mt),We,it)}removeChild(mt,We){return super.removeChild(null,We)}parentNode(mt){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(mt)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class N extends L{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(mt,We,it,bt,ct,b,k,A,H){super(mt,ct,b,k,A),this.sharedStylesHost=We,this.removeStylesOnCompDestroy=bt;let xe=it.styles;this.styles=H?Se(H,xe):xe,this.styleUrls=it.getExternalStyles?.(H)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}}class V extends N{contentAttr;hostAttr;constructor(mt,We,it,bt,ct,b,k,A,H){const xe=bt+"-"+it.id;super(mt,We,it,ct,b,k,A,H,xe),this.contentAttr=function ve(pt){return"_ngcontent-%COMP%".replace(Z,pt)}(xe),this.hostAttr=function ye(pt){return"_nghost-%COMP%".replace(Z,pt)}(xe)}applyToHost(mt){this.applyStyles(),this.setAttribute(mt,this.hostAttr,"")}createElement(mt,We){const it=super.createElement(mt,We);return super.setAttribute(it,this.contentAttr,""),it}}let I=(()=>{class pt extends u{constructor(We){super(We)}supports(We){return!0}addEventListener(We,it,bt,ct){return We.addEventListener(it,bt,ct),()=>this.removeEventListener(We,it,bt,ct)}removeEventListener(We,it,bt,ct){return We.removeEventListener(it,bt,ct)}static \u0275fac=function(it){return new(it||pt)(c.KVO(o.qQ))};static \u0275prov=c.jDH({token:pt,factory:pt.\u0275fac})}return pt})();const M=["alt","control","meta","shift"],j={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},ge={alt:pt=>pt.altKey,control:pt=>pt.ctrlKey,meta:pt=>pt.metaKey,shift:pt=>pt.shiftKey};let Me=(()=>{class pt extends u{constructor(We){super(We)}supports(We){return null!=pt.parseEventName(We)}addEventListener(We,it,bt,ct){const b=pt.parseEventName(it),k=pt.eventCallback(b.fullKey,bt,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>(0,o.QT)().onAndCancel(We,b.domEventName,k,ct))}static parseEventName(We){const it=We.toLowerCase().split("."),bt=it.shift();if(0===it.length||"keydown"!==bt&&"keyup"!==bt)return null;const ct=pt._normalizeKey(it.pop());let b="",k=it.indexOf("code");if(k>-1&&(it.splice(k,1),b="code."),M.forEach(H=>{const xe=it.indexOf(H);xe>-1&&(it.splice(xe,1),b+=H+".")}),b+=ct,0!=it.length||0===ct.length)return null;const A={};return A.domEventName=bt,A.fullKey=b,A}static matchEventFullKeyCode(We,it){let bt=j[We.key]||We.key,ct="";return it.indexOf("code.")>-1&&(bt=We.code,ct="code."),!(null==bt||!bt)&&(bt=bt.toLowerCase()," "===bt?bt="space":"."===bt&&(bt="dot"),M.forEach(b=>{b!==bt&&(0,ge[b])(We)&&(ct+=b+".")}),ct+=bt,ct===it)}static eventCallback(We,it,bt){return ct=>{pt.matchEventFullKeyCode(ct,We)&&bt.runGuarded(()=>it(ct))}}static _normalizeKey(We){return"esc"===We?"escape":We}static \u0275fac=function(it){return new(it||pt)(c.KVO(o.qQ))};static \u0275prov=c.jDH({token:pt,factory:pt.\u0275fac})}return pt})();function oe(pt,mt){return(0,c.TL3)({rootComponent:pt,...se(mt)})}function se(pt){return{appProviders:[...Nt,...pt?.providers??[]],platformProviders:De}}const De=[{provide:c.Agw,useValue:o.AJ},{provide:c.PLl,useValue:function tt(){w.makeCurrent()},multi:!0},{provide:o.qQ,useFactory:function Re(){return(0,c.TL$)(document),document},deps:[]}],Nt=[{provide:c.H8p,useValue:"root"},{provide:c.zcH,useFactory:function Y(){return new c.zcH},deps:[]},{provide:y,useClass:I,multi:!0,deps:[o.qQ]},{provide:y,useClass:Me,multi:!0,deps:[o.qQ]},te,de,h,{provide:c._9s,useExisting:te},{provide:o.N0,useClass:g,deps:[]},[]];let rt=(()=>{class pt{_doc;constructor(We){this._doc=We}getTitle(){return this._doc.title}setTitle(We){this._doc.title=We||""}static \u0275fac=function(it){return new(it||pt)(c.KVO(o.qQ))};static \u0275prov=c.jDH({token:pt,factory:pt.\u0275fac,providedIn:"root"})}return pt})(),kt=(()=>{class pt{static \u0275fac=function(it){return new(it||pt)};static \u0275prov=c.jDH({token:pt,factory:function(it){let bt=null;return bt=it?new(it||pt):c.KVO(Qt),bt},providedIn:"root"})}return pt})(),Qt=(()=>{class pt extends kt{_doc;constructor(We){super(),this._doc=We}sanitize(We,it){if(null==it)return null;switch(We){case c.WPN.NONE:return it;case c.WPN.HTML:return(0,c.ZF7)(it,"HTML")?(0,c.rcV)(it):(0,c.h9k)(this._doc,String(it)).toString();case c.WPN.STYLE:return(0,c.ZF7)(it,"Style")?(0,c.rcV)(it):it;case c.WPN.SCRIPT:if((0,c.ZF7)(it,"Script"))return(0,c.rcV)(it);throw new c.wOt(5200,!1);case c.WPN.URL:return(0,c.ZF7)(it,"URL")?(0,c.rcV)(it):(0,c.$MX)(String(it));case c.WPN.RESOURCE_URL:if((0,c.ZF7)(it,"ResourceURL"))return(0,c.rcV)(it);throw new c.wOt(5201,!1);default:throw new c.wOt(5202,!1)}}bypassSecurityTrustHtml(We){return(0,c.Kcf)(We)}bypassSecurityTrustStyle(We){return(0,c.cWb)(We)}bypassSecurityTrustScript(We){return(0,c.UyX)(We)}bypassSecurityTrustUrl(We){return(0,c.osQ)(We)}bypassSecurityTrustResourceUrl(We){return(0,c.e5t)(We)}static \u0275fac=function(it){return new(it||pt)(c.KVO(o.qQ))};static \u0275prov=c.jDH({token:pt,factory:pt.\u0275fac,providedIn:"root"})}return pt})();var rn=function(pt){return pt[pt.NoHttpTransferCache=0]="NoHttpTransferCache",pt[pt.HttpTransferCacheOptions=1]="HttpTransferCacheOptions",pt[pt.I18nSupport=2]="I18nSupport",pt[pt.EventReplay=3]="EventReplay",pt[pt.IncrementalHydration=4]="IncrementalHydration",pt}(rn||{});function Ut(...pt){const mt=[],We=new Set,it=We.has(rn.HttpTransferCacheOptions);for(const{\u0275providers:bt,\u0275kind:ct}of pt)We.add(ct),bt.length&&mt.push(bt);return(0,c.EmA)([[],(0,c.M8M)(),We.has(rn.NoHttpTransferCache)||it?[]:(0,O.$m)({}),mt])}},2168:(ut,Ie,a)=>{"use strict";a.d(Ie,{nX:()=>Yi,wF:()=>_n,Ix:()=>Vt,Wk:()=>mi,iI:()=>Np,n3:()=>Qi,Sd:()=>ft,lh:()=>Mr});var o=a(4438),c=a(4402),O=a(6648),d=a(7673),w=a(4412),C=a(4572),x=a(9350),D=a(8793),p=a(9030),g=a(1203),y=a(8810),h=a(983),u=a(17),P=a(1413),T=a(8359),E=a(177),W=a(6354),ne=a(5558),de=a(6697),ie=a(9172),Z=a(5964),ae=a(1397),Le=a(1594),_e=a(274),Ce=a(8141),Ae=a(9437),ke=a(9974),Ue=a(6649),ye=a(9901),Se=a(4360);function z(m){return m<=0?()=>h.w:(0,ke.N)((F,_)=>{let B=[];F.subscribe((0,Se._)(_,fe=>{B.push(fe),m{for(const fe of B)_.next(fe);_.complete()},void 0,()=>{B=null}))})}var te=a(3774),L=a(3669),J=a(980),X=a(9898),K=a(6977),N=a(6365),V=a(345);const I="primary",M=Symbol("RouteTitle");class j{params;constructor(F){this.params=F||{}}has(F){return Object.prototype.hasOwnProperty.call(this.params,F)}get(F){if(this.has(F)){const _=this.params[F];return Array.isArray(_)?_[0]:_}return null}getAll(F){if(this.has(F)){const _=this.params[F];return Array.isArray(_)?_:[_]}return[]}get keys(){return Object.keys(this.params)}}function ge(m){return new j(m)}function Me(m,F,_){const B=_.path.split("/");if(B.length>m.length||"full"===_.pathMatch&&(F.hasChildren()||B.lengthB[Fe]===fe)}return m===F}function tt(m){return m.length>0?m[m.length-1]:null}function Y(m){return(0,c.A)(m)?m:(0,o.jNT)(m)?(0,O.H)(Promise.resolve(m)):(0,d.of)(m)}const Re={exact:function jt(m,F,_){if(!be(m.segments,F.segments)||!Ot(m.segments,F.segments,_)||m.numberOfChildren!==F.numberOfChildren)return!1;for(const B in F.children)if(!m.children[B]||!jt(m.children[B],F.children[B],_))return!1;return!0},subset:on},De={exact:function ht(m,F){return R(m,F)},subset:function Nt(m,F){return Object.keys(F).length<=Object.keys(m).length&&Object.keys(F).every(_=>Ee(m[_],F[_]))},ignored:()=>!0};function nt(m,F,_){return Re[_.paths](m.root,F.root,_.matrixParams)&&De[_.queryParams](m.queryParams,F.queryParams)&&!("exact"===_.fragment&&m.fragment!==F.fragment)}function on(m,F,_){return ln(m,F,F.segments,_)}function ln(m,F,_,B){if(m.segments.length>_.length){const fe=m.segments.slice(0,_.length);return!(!be(fe,_)||F.hasChildren()||!Ot(fe,_,B))}if(m.segments.length===_.length){if(!be(m.segments,_)||!Ot(m.segments,_,B))return!1;for(const fe in F.children)if(!m.children[fe]||!on(m.children[fe],F.children[fe],B))return!1;return!0}{const fe=_.slice(0,m.segments.length),Fe=_.slice(m.segments.length);return!!(be(m.segments,fe)&&Ot(m.segments,fe,B)&&m.children[I])&&ln(m.children[I],F,Fe,B)}}function Ot(m,F,_){return F.every((B,fe)=>De[_](m[fe].parameters,B.parameters))}class rt{root;queryParams;fragment;_queryParamMap;constructor(F=new ce([],{}),_={},B=null){this.root=F,this.queryParams=_,this.fragment=B}get queryParamMap(){return this._queryParamMap??=ge(this.queryParams),this._queryParamMap}toString(){return Q.serialize(this)}}class ce{segments;children;parent=null;constructor(F,_){this.segments=F,this.children=_,Object.values(_).forEach(B=>B.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Be(this)}}class ee{path;parameters;_parameterMap;constructor(F,_){this.path=F,this.parameters=_}get parameterMap(){return this._parameterMap??=ge(this.parameters),this._parameterMap}toString(){return rn(this)}}function be(m,F){return m.length===F.length&&m.every((_,B)=>_.path===F[B].path)}let ft=(()=>{class m{static \u0275fac=function(B){return new(B||m)};static \u0275prov=o.jDH({token:m,factory:()=>new le,providedIn:"root"})}return m})();class le{parse(F){const _=new mt(F);return new rt(_.parseRootSegment(),_.parseQueryParams(),_.parseFragment())}serialize(F){const _=`/${Je(F.root,!0)}`,B=function $e(m){const F=Object.entries(m).map(([_,B])=>Array.isArray(B)?B.map(fe=>`${ot(_)}=${ot(fe)}`).join("&"):`${ot(_)}=${ot(B)}`).filter(_=>_);return F.length?`?${F.join("&")}`:""}(F.queryParams);return`${_}${B}${"string"==typeof F.fragment?`#${function It(m){return encodeURI(m)}(F.fragment)}`:""}`}}const Q=new le;function Be(m){return m.segments.map(F=>rn(F)).join("/")}function Je(m,F){if(!m.hasChildren())return Be(m);if(F){const _=m.children[I]?Je(m.children[I],!1):"",B=[];return Object.entries(m.children).forEach(([fe,Fe])=>{fe!==I&&B.push(`${fe}:${Je(Fe,!1)}`)}),B.length>0?`${_}(${B.join("//")})`:_}{const _=function Ke(m,F){let _=[];return Object.entries(m.children).forEach(([B,fe])=>{B===I&&(_=_.concat(F(fe,B)))}),Object.entries(m.children).forEach(([B,fe])=>{B!==I&&(_=_.concat(F(fe,B)))}),_}(m,(B,fe)=>fe===I?[Je(m.children[I],!1)]:[`${fe}:${Je(B,!1)}`]);return 1===Object.keys(m.children).length&&null!=m.children[I]?`${Be(m)}/${_[0]}`:`${Be(m)}/(${_.join("//")})`}}function qe(m){return encodeURIComponent(m).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function ot(m){return qe(m).replace(/%3B/gi,";")}function Ft(m){return qe(m).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function kt(m){return decodeURIComponent(m)}function Qt(m){return kt(m.replace(/\+/g,"%20"))}function rn(m){return`${Ft(m.path)}${function nn(m){return Object.entries(m).map(([F,_])=>`;${Ft(F)}=${Ft(_)}`).join("")}(m.parameters)}`}const lt=/^[^\/()?;#]+/;function Te(m){const F=m.match(lt);return F?F[0]:""}const He=/^[^\/()?;=#]+/,Lt=/^[^=?&#]+/,Un=/^[^&#]+/;class mt{url;remaining;constructor(F){this.url=F,this.remaining=F}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new ce([],{}):new ce([],this.parseChildren())}parseQueryParams(){const F={};if(this.consumeOptional("?"))do{this.parseQueryParam(F)}while(this.consumeOptional("&"));return F}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const F=[];for(this.peekStartsWith("(")||F.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),F.push(this.parseSegment());let _={};this.peekStartsWith("/(")&&(this.capture("/"),_=this.parseParens(!0));let B={};return this.peekStartsWith("(")&&(B=this.parseParens(!1)),(F.length>0||Object.keys(_).length>0)&&(B[I]=new ce(F,_)),B}parseSegment(){const F=Te(this.remaining);if(""===F&&this.peekStartsWith(";"))throw new o.wOt(4009,!1);return this.capture(F),new ee(kt(F),this.parseMatrixParams())}parseMatrixParams(){const F={};for(;this.consumeOptional(";");)this.parseParam(F);return F}parseParam(F){const _=function at(m){const F=m.match(He);return F?F[0]:""}(this.remaining);if(!_)return;this.capture(_);let B="";if(this.consumeOptional("=")){const fe=Te(this.remaining);fe&&(B=fe,this.capture(B))}F[kt(_)]=kt(B)}parseQueryParam(F){const _=function Ut(m){const F=m.match(Lt);return F?F[0]:""}(this.remaining);if(!_)return;this.capture(_);let B="";if(this.consumeOptional("=")){const Ye=function pt(m){const F=m.match(Un);return F?F[0]:""}(this.remaining);Ye&&(B=Ye,this.capture(B))}const fe=Qt(_),Fe=Qt(B);if(F.hasOwnProperty(fe)){let Ye=F[fe];Array.isArray(Ye)||(Ye=[Ye],F[fe]=Ye),Ye.push(Fe)}else F[fe]=Fe}parseParens(F){const _={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const B=Te(this.remaining),fe=this.remaining[B.length];if("/"!==fe&&")"!==fe&&";"!==fe)throw new o.wOt(4010,!1);let Fe;B.indexOf(":")>-1?(Fe=B.slice(0,B.indexOf(":")),this.capture(Fe),this.capture(":")):F&&(Fe=I);const Ye=this.parseChildren();_[Fe]=1===Object.keys(Ye).length?Ye[I]:new ce([],Ye),this.consumeOptional("//")}return _}peekStartsWith(F){return this.remaining.startsWith(F)}consumeOptional(F){return!!this.peekStartsWith(F)&&(this.remaining=this.remaining.substring(F.length),!0)}capture(F){if(!this.consumeOptional(F))throw new o.wOt(4011,!1)}}function We(m){return m.segments.length>0?new ce([],{[I]:m}):m}function it(m){const F={};for(const[B,fe]of Object.entries(m.children)){const Fe=it(fe);if(B===I&&0===Fe.segments.length&&Fe.hasChildren())for(const[Ye,Et]of Object.entries(Fe.children))F[Ye]=Et;else(Fe.segments.length>0||Fe.hasChildren())&&(F[B]=Fe)}return function bt(m){if(1===m.numberOfChildren&&m.children[I]){const F=m.children[I];return new ce(m.segments.concat(F.segments),F.children)}return m}(new ce(m.segments,F))}function ct(m){return m instanceof rt}function k(m){let F;const fe=We(function _(Fe){const Ye={};for(const yt of Fe.children){const Yt=_(yt);Ye[yt.outlet]=Yt}const Et=new ce(Fe.url,Ye);return Fe===m&&(F=Et),Et}(m.root));return F??fe}function A(m,F,_,B){let fe=m;for(;fe.parent;)fe=fe.parent;if(0===F.length)return Oe(fe,fe,fe,_,B);const Fe=function dt(m){if("string"==typeof m[0]&&1===m.length&&"/"===m[0])return new Ze(!0,0,m);let F=0,_=!1;const B=m.reduce((fe,Fe,Ye)=>{if("object"==typeof Fe&&null!=Fe){if(Fe.outlets){const Et={};return Object.entries(Fe.outlets).forEach(([yt,Yt])=>{Et[yt]="string"==typeof Yt?Yt.split("/"):Yt}),[...fe,{outlets:Et}]}if(Fe.segmentPath)return[...fe,Fe.segmentPath]}return"string"!=typeof Fe?[...fe,Fe]:0===Ye?(Fe.split("/").forEach((Et,yt)=>{0==yt&&"."===Et||(0==yt&&""===Et?_=!0:".."===Et?F++:""!=Et&&fe.push(Et))}),fe):[...fe,Fe]},[]);return new Ze(_,F,B)}(F);if(Fe.toRoot())return Oe(fe,fe,new ce([],{}),_,B);const Ye=function Ct(m,F,_){if(m.isAbsolute)return new _t(F,!0,0);if(!_)return new _t(F,!1,NaN);if(null===_.parent)return new _t(_,!0,0);const B=H(m.commands[0])?0:1;return function At(m,F,_){let B=m,fe=F,Fe=_;for(;Fe>fe;){if(Fe-=fe,B=B.parent,!B)throw new o.wOt(4005,!1);fe=B.segments.length}return new _t(B,!1,fe-Fe)}(_,_.segments.length-1+B,m.numberOfDoubleDots)}(Fe,fe,m),Et=Ye.processChildren?Tt(Ye.segmentGroup,Ye.index,Fe.commands):Bt(Ye.segmentGroup,Ye.index,Fe.commands);return Oe(fe,Ye.segmentGroup,Et,_,B)}function H(m){return"object"==typeof m&&null!=m&&!m.outlets&&!m.segmentPath}function xe(m){return"object"==typeof m&&null!=m&&m.outlets}function Oe(m,F,_,B,fe){let Ye,Fe={};B&&Object.entries(B).forEach(([yt,Yt])=>{Fe[yt]=Array.isArray(Yt)?Yt.map(xn=>`${xn}`):`${Yt}`}),Ye=m===F?_:je(m,F,_);const Et=We(it(Ye));return new rt(Et,Fe,fe)}function je(m,F,_){const B={};return Object.entries(m.children).forEach(([fe,Fe])=>{B[fe]=Fe===F?_:je(Fe,F,_)}),new ce(m.segments,B)}class Ze{isAbsolute;numberOfDoubleDots;commands;constructor(F,_,B){if(this.isAbsolute=F,this.numberOfDoubleDots=_,this.commands=B,F&&B.length>0&&H(B[0]))throw new o.wOt(4003,!1);const fe=B.find(xe);if(fe&&fe!==tt(B))throw new o.wOt(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class _t{segmentGroup;processChildren;index;constructor(F,_,B){this.segmentGroup=F,this.processChildren=_,this.index=B}}function Bt(m,F,_){if(m??=new ce([],{}),0===m.segments.length&&m.hasChildren())return Tt(m,F,_);const B=function Gt(m,F,_){let B=0,fe=F;const Fe={match:!1,pathIndex:0,commandIndex:0};for(;fe=_.length)return Fe;const Ye=m.segments[fe],Et=_[B];if(xe(Et))break;const yt=`${Et}`,Yt=B<_.length-1?_[B+1]:null;if(fe>0&&void 0===yt)break;if(yt&&Yt&&"object"==typeof Yt&&void 0===Yt.outlets){if(!dn(yt,Yt,Ye))return Fe;B+=2}else{if(!dn(yt,{},Ye))return Fe;B++}fe++}return{match:!0,pathIndex:fe,commandIndex:B}}(m,F,_),fe=_.slice(B.commandIndex);if(B.match&&B.pathIndexFe!==I)&&m.children[I]&&1===m.numberOfChildren&&0===m.children[I].segments.length){const Fe=Tt(m.children[I],F,_);return new ce(m.segments,Fe.children)}return Object.entries(B).forEach(([Fe,Ye])=>{"string"==typeof Ye&&(Ye=[Ye]),null!==Ye&&(fe[Fe]=Bt(m.children[Fe],F,Ye))}),Object.entries(m.children).forEach(([Fe,Ye])=>{void 0===B[Fe]&&(fe[Fe]=Ye)}),new ce(m.segments,fe)}}function zt(m,F,_){const B=m.segments.slice(0,F);let fe=0;for(;fe<_.length;){const Fe=_[fe];if(xe(Fe)){const yt=Jt(Fe.outlets);return new ce(B,yt)}if(0===fe&&H(_[0])){B.push(new ee(m.segments[F].path,en(_[0]))),fe++;continue}const Ye=xe(Fe)?Fe.outlets[I]:`${Fe}`,Et=fe<_.length-1?_[fe+1]:null;Ye&&Et&&H(Et)?(B.push(new ee(Ye,en(Et))),fe+=2):(B.push(new ee(Ye,{})),fe++)}return new ce(B,{})}function Jt(m){const F={};return Object.entries(m).forEach(([_,B])=>{"string"==typeof B&&(B=[B]),null!==B&&(F[_]=zt(new ce([],{}),0,B))}),F}function en(m){const F={};return Object.entries(m).forEach(([_,B])=>F[_]=`${B}`),F}function dn(m,F,_){return m==_.path&&R(F,_.parameters)}const un="imperative";var tn=function(m){return m[m.NavigationStart=0]="NavigationStart",m[m.NavigationEnd=1]="NavigationEnd",m[m.NavigationCancel=2]="NavigationCancel",m[m.NavigationError=3]="NavigationError",m[m.RoutesRecognized=4]="RoutesRecognized",m[m.ResolveStart=5]="ResolveStart",m[m.ResolveEnd=6]="ResolveEnd",m[m.GuardsCheckStart=7]="GuardsCheckStart",m[m.GuardsCheckEnd=8]="GuardsCheckEnd",m[m.RouteConfigLoadStart=9]="RouteConfigLoadStart",m[m.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",m[m.ChildActivationStart=11]="ChildActivationStart",m[m.ChildActivationEnd=12]="ChildActivationEnd",m[m.ActivationStart=13]="ActivationStart",m[m.ActivationEnd=14]="ActivationEnd",m[m.Scroll=15]="Scroll",m[m.NavigationSkipped=16]="NavigationSkipped",m}(tn||{});class mn{id;url;constructor(F,_){this.id=F,this.url=_}}class yn extends mn{type=tn.NavigationStart;navigationTrigger;restoredState;constructor(F,_,B="imperative",fe=null){super(F,_),this.navigationTrigger=B,this.restoredState=fe}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class _n extends mn{urlAfterRedirects;type=tn.NavigationEnd;constructor(F,_,B){super(F,_),this.urlAfterRedirects=B}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}var Mn=function(m){return m[m.Redirect=0]="Redirect",m[m.SupersededByNewNavigation=1]="SupersededByNewNavigation",m[m.NoDataFromResolver=2]="NoDataFromResolver",m[m.GuardRejected=3]="GuardRejected",m}(Mn||{}),qt=function(m){return m[m.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",m[m.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",m}(qt||{});class gn extends mn{reason;code;type=tn.NavigationCancel;constructor(F,_,B,fe){super(F,_),this.reason=B,this.code=fe}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class In extends mn{reason;code;type=tn.NavigationSkipped;constructor(F,_,B,fe){super(F,_),this.reason=B,this.code=fe}}class Ve extends mn{error;target;type=tn.NavigationError;constructor(F,_,B,fe){super(F,_),this.error=B,this.target=fe}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class ze extends mn{urlAfterRedirects;state;type=tn.RoutesRecognized;constructor(F,_,B,fe){super(F,_),this.urlAfterRedirects=B,this.state=fe}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Ge extends mn{urlAfterRedirects;state;type=tn.GuardsCheckStart;constructor(F,_,B,fe){super(F,_),this.urlAfterRedirects=B,this.state=fe}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class gt extends mn{urlAfterRedirects;state;shouldActivate;type=tn.GuardsCheckEnd;constructor(F,_,B,fe,Fe){super(F,_),this.urlAfterRedirects=B,this.state=fe,this.shouldActivate=Fe}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class wt extends mn{urlAfterRedirects;state;type=tn.ResolveStart;constructor(F,_,B,fe){super(F,_),this.urlAfterRedirects=B,this.state=fe}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Wt extends mn{urlAfterRedirects;state;type=tn.ResolveEnd;constructor(F,_,B,fe){super(F,_),this.urlAfterRedirects=B,this.state=fe}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Ht{route;type=tn.RouteConfigLoadStart;constructor(F){this.route=F}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class hn{route;type=tn.RouteConfigLoadEnd;constructor(F){this.route=F}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class sn{snapshot;type=tn.ChildActivationStart;constructor(F){this.snapshot=F}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Ln{snapshot;type=tn.ChildActivationEnd;constructor(F){this.snapshot=F}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class $t{snapshot;type=tn.ActivationStart;constructor(F){this.snapshot=F}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class qn{snapshot;type=tn.ActivationEnd;constructor(F){this.snapshot=F}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Qn{routerEvent;position;anchor;type=tn.Scroll;constructor(F,_,B){this.routerEvent=F,this.position=_,this.anchor=B}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class hi{}class Kn{url;navigationBehaviorOptions;constructor(F,_){this.url=F,this.navigationBehaviorOptions=_}}function bn(m){return m.outlet||I}function pr(m){if(!m)return null;if(m.routeConfig?._injector)return m.routeConfig._injector;for(let F=m.parent;F;F=F.parent){const _=F.routeConfig;if(_?._loadedInjector)return _._loadedInjector;if(_?._injector)return _._injector}return null}class li{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return pr(this.route?.snapshot)??this.rootInjector}constructor(F){this.rootInjector=F,this.children=new tr(this.rootInjector)}}let tr=(()=>{class m{rootInjector;contexts=new Map;constructor(_){this.rootInjector=_}onChildOutletCreated(_,B){const fe=this.getOrCreateContext(_);fe.outlet=B,this.contexts.set(_,fe)}onChildOutletDestroyed(_){const B=this.getContext(_);B&&(B.outlet=null,B.attachRef=null)}onOutletDeactivated(){const _=this.contexts;return this.contexts=new Map,_}onOutletReAttached(_){this.contexts=_}getOrCreateContext(_){let B=this.getContext(_);return B||(B=new li(this.rootInjector),this.contexts.set(_,B)),B}getContext(_){return this.contexts.get(_)||null}static \u0275fac=function(B){return new(B||m)(o.KVO(o.uvJ))};static \u0275prov=o.jDH({token:m,factory:m.\u0275fac,providedIn:"root"})}return m})();class Pr{_root;constructor(F){this._root=F}get root(){return this._root.value}parent(F){const _=this.pathFromRoot(F);return _.length>1?_[_.length-2]:null}children(F){const _=ar(F,this._root);return _?_.children.map(B=>B.value):[]}firstChild(F){const _=ar(F,this._root);return _&&_.children.length>0?_.children[0].value:null}siblings(F){const _=ji(F,this._root);return _.length<2?[]:_[_.length-2].children.map(fe=>fe.value).filter(fe=>fe!==F)}pathFromRoot(F){return ji(F,this._root).map(_=>_.value)}}function ar(m,F){if(m===F.value)return F;for(const _ of F.children){const B=ar(m,_);if(B)return B}return null}function ji(m,F){if(m===F.value)return[F];for(const _ of F.children){const B=ji(m,_);if(B.length)return B.unshift(F),B}return[]}class oi{value;children;constructor(F,_){this.value=F,this.children=_}toString(){return`TreeNode(${this.value})`}}function wi(m){const F={};return m&&m.children.forEach(_=>F[_.value.outlet]=_),F}class br extends Pr{snapshot;constructor(F,_){super(F),this.snapshot=_,kr(this,F)}toString(){return this.snapshot.toString()}}function ro(m){const F=function Nr(m){const Fe=new Er([],{},{},"",{},I,m,null,{});return new lr("",new oi(Fe,[]))}(m),_=new w.t([new ee("",{})]),B=new w.t({}),fe=new w.t({}),Fe=new w.t({}),Ye=new w.t(""),Et=new Yi(_,B,Fe,Ye,fe,I,m,F.root);return Et.snapshot=F.root,new br(new oi(Et,[]),F)}class Yi{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(F,_,B,fe,Fe,Ye,Et,yt){this.urlSubject=F,this.paramsSubject=_,this.queryParamsSubject=B,this.fragmentSubject=fe,this.dataSubject=Fe,this.outlet=Ye,this.component=Et,this._futureSnapshot=yt,this.title=this.dataSubject?.pipe((0,W.T)(Yt=>Yt[M]))??(0,d.of)(void 0),this.url=F,this.params=_,this.queryParams=B,this.fragment=fe,this.data=Fe}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe((0,W.T)(F=>ge(F))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe((0,W.T)(F=>ge(F))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Wi(m,F,_="emptyOnly"){let B;const{routeConfig:fe}=m;return B=null===F||"always"!==_&&""!==fe?.path&&(F.component||F.routeConfig?.loadComponent)?{params:{...m.params},data:{...m.data},resolve:{...m.data,...m._resolvedData??{}}}:{params:{...F.params,...m.params},data:{...F.data,...m.data},resolve:{...m.data,...F.data,...fe?.data,...m._resolvedData}},fe&&mr(fe)&&(B.resolve[M]=fe.title),B}class Er{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;get title(){return this.data?.[M]}constructor(F,_,B,fe,Fe,Ye,Et,yt,Yt){this.url=F,this.params=_,this.queryParams=B,this.fragment=fe,this.data=Fe,this.outlet=Ye,this.component=Et,this.routeConfig=yt,this._resolve=Yt}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=ge(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=ge(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(B=>B.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class lr extends Pr{url;constructor(F,_){super(_),this.url=F,kr(this,_)}toString(){return fi(this._root)}}function kr(m,F){F.value._routerState=m,F.children.forEach(_=>kr(m,_))}function fi(m){const F=m.children.length>0?` { ${m.children.map(fi).join(", ")} } `:"";return`${m.value}${F}`}function cr(m){if(m.snapshot){const F=m.snapshot,_=m._futureSnapshot;m.snapshot=_,R(F.queryParams,_.queryParams)||m.queryParamsSubject.next(_.queryParams),F.fragment!==_.fragment&&m.fragmentSubject.next(_.fragment),R(F.params,_.params)||m.paramsSubject.next(_.params),function oe(m,F){if(m.length!==F.length)return!1;for(let _=0;_R(_.parameters,F[B].parameters))}(m.url,F.url);return _&&!(!m.parent!=!F.parent)&&(!m.parent||an(m.parent,F.parent))}function mr(m){return"string"==typeof m.title||null===m.title}const Hi=new o.nKC("");let Qi=(()=>{class m{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=I;activateEvents=new o.bkB;deactivateEvents=new o.bkB;attachEvents=new o.bkB;detachEvents=new o.bkB;routerOutletData=(0,o.hFB)(void 0);parentContexts=(0,o.WQX)(tr);location=(0,o.WQX)(o.c1b);changeDetector=(0,o.WQX)(o.gRc);inputBinder=(0,o.WQX)(Cr,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(_){if(_.name){const{firstChange:B,previousValue:fe}=_.name;if(B)return;this.isTrackedInParentContexts(fe)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(fe)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(_){return this.parentContexts.getContext(_)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const _=this.parentContexts.getContext(this.name);_?.route&&(_.attachRef?this.attach(_.attachRef,_.route):this.activateWith(_.route,_.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new o.wOt(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new o.wOt(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new o.wOt(4012,!1);this.location.detach();const _=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(_.instance),_}attach(_,B){this.activated=_,this._activatedRoute=B,this.location.insert(_.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(_.instance)}deactivate(){if(this.activated){const _=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(_)}}activateWith(_,B){if(this.isActivated)throw new o.wOt(4013,!1);this._activatedRoute=_;const fe=this.location,Ye=_.snapshot.component,Et=this.parentContexts.getOrCreateContext(this.name).children,yt=new nr(_,Et,fe.injector,this.routerOutletData);this.activated=fe.createComponent(Ye,{index:fe.length,injector:yt,environmentInjector:B}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(B){return new(B||m)};static \u0275dir=o.FsC({type:m,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[o.OA$]})}return m})();class nr{route;childContexts;parent;outletData;__ngOutletInjector(F){return new nr(this.route,this.childContexts,F,this.outletData)}constructor(F,_,B,fe){this.route=F,this.childContexts=_,this.parent=B,this.outletData=fe}get(F,_){return F===Yi?this.route:F===tr?this.childContexts:F===Hi?this.outletData:this.parent.get(F,_)}}const Cr=new o.nKC("");let Hr=(()=>{class m{outletDataSubscriptions=new Map;bindActivatedRouteToOutletComponent(_){this.unsubscribeFromRouteData(_),this.subscribeToRouteData(_)}unsubscribeFromRouteData(_){this.outletDataSubscriptions.get(_)?.unsubscribe(),this.outletDataSubscriptions.delete(_)}subscribeToRouteData(_){const{activatedRoute:B}=_,fe=(0,C.z)([B.queryParams,B.params,B.data]).pipe((0,ne.n)(([Fe,Ye,Et],yt)=>(Et={...Fe,...Ye,...Et},0===yt?(0,d.of)(Et):Promise.resolve(Et)))).subscribe(Fe=>{if(!_.isActivated||!_.activatedComponentRef||_.activatedRoute!==B||null===B.component)return void this.unsubscribeFromRouteData(_);const Ye=(0,o.HJs)(B.component);if(Ye)for(const{templateName:Et}of Ye.inputs)_.activatedComponentRef.setInput(Et,Fe[Et]);else this.unsubscribeFromRouteData(_)});this.outletDataSubscriptions.set(_,fe)}static \u0275fac=function(B){return new(B||m)};static \u0275prov=o.jDH({token:m,factory:m.\u0275fac})}return m})();function yi(m,F,_){if(_&&m.shouldReuseRoute(F.value,_.value.snapshot)){const B=_.value;B._futureSnapshot=F.value;const fe=function ni(m,F,_){return F.children.map(B=>{for(const fe of _.children)if(m.shouldReuseRoute(B.value,fe.value.snapshot))return yi(m,B,fe);return yi(m,B)})}(m,F,_);return new oi(B,fe)}{if(m.shouldAttach(F.value)){const Fe=m.retrieve(F.value);if(null!==Fe){const Ye=Fe.route;return Ye.value._futureSnapshot=F.value,Ye.children=F.children.map(Et=>yi(m,Et)),Ye}}const B=function Ei(m){return new Yi(new w.t(m.url),new w.t(m.params),new w.t(m.queryParams),new w.t(m.fragment),new w.t(m.data),m.outlet,m.component,m)}(F.value),fe=F.children.map(Fe=>yi(m,Fe));return new oi(B,fe)}}class Ci{redirectTo;navigationBehaviorOptions;constructor(F,_){this.redirectTo=F,this.navigationBehaviorOptions=_}}const vi="ngNavigationCancelingError";function Ti(m,F){const{redirectTo:_,navigationBehaviorOptions:B}=ct(F)?{redirectTo:F,navigationBehaviorOptions:void 0}:F,fe=kn(!1,Mn.Redirect);return fe.url=_,fe.navigationBehaviorOptions=B,fe}function kn(m,F){const _=new Error(`NavigationCancelingError: ${m||""}`);return _[vi]=!0,_.cancellationCode=F,_}function Ai(m){return!!m&&m[vi]}class Co{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(F,_,B,fe,Fe){this.routeReuseStrategy=F,this.futureState=_,this.currState=B,this.forwardEvent=fe,this.inputBindingEnabled=Fe}activate(F){const _=this.futureState._root,B=this.currState?this.currState._root:null;this.deactivateChildRoutes(_,B,F),cr(this.futureState.root),this.activateChildRoutes(_,B,F)}deactivateChildRoutes(F,_,B){const fe=wi(_);F.children.forEach(Fe=>{const Ye=Fe.value.outlet;this.deactivateRoutes(Fe,fe[Ye],B),delete fe[Ye]}),Object.values(fe).forEach(Fe=>{this.deactivateRouteAndItsChildren(Fe,B)})}deactivateRoutes(F,_,B){const fe=F.value,Fe=_?_.value:null;if(fe===Fe)if(fe.component){const Ye=B.getContext(fe.outlet);Ye&&this.deactivateChildRoutes(F,_,Ye.children)}else this.deactivateChildRoutes(F,_,B);else Fe&&this.deactivateRouteAndItsChildren(_,B)}deactivateRouteAndItsChildren(F,_){F.value.component&&this.routeReuseStrategy.shouldDetach(F.value.snapshot)?this.detachAndStoreRouteSubtree(F,_):this.deactivateRouteAndOutlet(F,_)}detachAndStoreRouteSubtree(F,_){const B=_.getContext(F.value.outlet),fe=B&&F.value.component?B.children:_,Fe=wi(F);for(const Ye of Object.values(Fe))this.deactivateRouteAndItsChildren(Ye,fe);if(B&&B.outlet){const Ye=B.outlet.detach(),Et=B.children.onOutletDeactivated();this.routeReuseStrategy.store(F.value.snapshot,{componentRef:Ye,route:F,contexts:Et})}}deactivateRouteAndOutlet(F,_){const B=_.getContext(F.value.outlet),fe=B&&F.value.component?B.children:_,Fe=wi(F);for(const Ye of Object.values(Fe))this.deactivateRouteAndItsChildren(Ye,fe);B&&(B.outlet&&(B.outlet.deactivate(),B.children.onOutletDeactivated()),B.attachRef=null,B.route=null)}activateChildRoutes(F,_,B){const fe=wi(_);F.children.forEach(Fe=>{this.activateRoutes(Fe,fe[Fe.value.outlet],B),this.forwardEvent(new qn(Fe.value.snapshot))}),F.children.length&&this.forwardEvent(new Ln(F.value.snapshot))}activateRoutes(F,_,B){const fe=F.value,Fe=_?_.value:null;if(cr(fe),fe===Fe)if(fe.component){const Ye=B.getOrCreateContext(fe.outlet);this.activateChildRoutes(F,_,Ye.children)}else this.activateChildRoutes(F,_,B);else if(fe.component){const Ye=B.getOrCreateContext(fe.outlet);if(this.routeReuseStrategy.shouldAttach(fe.snapshot)){const Et=this.routeReuseStrategy.retrieve(fe.snapshot);this.routeReuseStrategy.store(fe.snapshot,null),Ye.children.onOutletReAttached(Et.contexts),Ye.attachRef=Et.componentRef,Ye.route=Et.route.value,Ye.outlet&&Ye.outlet.attach(Et.componentRef,Et.route.value),cr(Et.route.value),this.activateChildRoutes(F,null,Ye.children)}else Ye.attachRef=null,Ye.route=fe,Ye.outlet&&Ye.outlet.activateWith(fe,Ye.injector),this.activateChildRoutes(F,null,Ye.children)}else this.activateChildRoutes(F,null,B)}}class Ns{path;route;constructor(F){this.path=F,this.route=this.path[this.path.length-1]}}class zr{component;route;constructor(F,_){this.component=F,this.route=_}}function ks(m,F,_){const B=m._root;return dr(B,F?F._root:null,_,[B.value])}function Fr(m,F){const _=Symbol(),B=F.get(m,_);return B===_?"function"!=typeof m||(0,o.LfX)(m)?F.get(m):m:B}function dr(m,F,_,B,fe={canDeactivateChecks:[],canActivateChecks:[]}){const Fe=wi(F);return m.children.forEach(Ye=>{(function Na(m,F,_,B,fe={canDeactivateChecks:[],canActivateChecks:[]}){const Fe=m.value,Ye=F?F.value:null,Et=_?_.getContext(m.value.outlet):null;if(Ye&&Fe.routeConfig===Ye.routeConfig){const yt=function rs(m,F,_){if("function"==typeof _)return _(m,F);switch(_){case"pathParamsChange":return!be(m.url,F.url);case"pathParamsOrQueryParamsChange":return!be(m.url,F.url)||!R(m.queryParams,F.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!an(m,F)||!R(m.queryParams,F.queryParams);default:return!an(m,F)}}(Ye,Fe,Fe.routeConfig.runGuardsAndResolvers);yt?fe.canActivateChecks.push(new Ns(B)):(Fe.data=Ye.data,Fe._resolvedData=Ye._resolvedData),dr(m,F,Fe.component?Et?Et.children:null:_,B,fe),yt&&Et&&Et.outlet&&Et.outlet.isActivated&&fe.canDeactivateChecks.push(new zr(Et.outlet.component,Ye))}else Ye&&$i(F,Et,fe),fe.canActivateChecks.push(new Ns(B)),dr(m,null,Fe.component?Et?Et.children:null:_,B,fe)})(Ye,Fe[Ye.value.outlet],_,B.concat([Ye.value]),fe),delete Fe[Ye.value.outlet]}),Object.entries(Fe).forEach(([Ye,Et])=>$i(Et,_.getContext(Ye),fe)),fe}function $i(m,F,_){const B=wi(m),fe=m.value;Object.entries(B).forEach(([Fe,Ye])=>{$i(Ye,fe.component?F?F.children.getContext(Fe):null:F,_)}),_.canDeactivateChecks.push(new zr(fe.component&&F&&F.outlet&&F.outlet.isActivated?F.outlet.component:null,fe))}function Fn(m){return"function"==typeof m}function gi(m){return m instanceof x.G||"EmptyError"===m?.name}const Dn=Symbol("INITIAL_VALUE");function Ji(){return(0,ne.n)(m=>(0,C.z)(m.map(F=>F.pipe((0,de.s)(1),(0,ie.Z)(Dn)))).pipe((0,W.T)(F=>{for(const _ of F)if(!0!==_){if(_===Dn)return Dn;if(!1===_||Lr(_))return _}return!0}),(0,Z.p)(F=>F!==Dn),(0,de.s)(1)))}function Lr(m){return ct(m)||m instanceof Ci}function Gr(m){return(0,g.F)((0,Ce.M)(F=>{if("boolean"!=typeof F)throw Ti(0,F)}),(0,W.T)(F=>!0===F))}class Br{segmentGroup;constructor(F){this.segmentGroup=F||null}}class so extends Error{urlTree;constructor(F){super(),this.urlTree=F}}function ur(m){return(0,y.$)(new Br(m))}class Do{urlSerializer;urlTree;constructor(F,_){this.urlSerializer=F,this.urlTree=_}lineralizeSegments(F,_){let B=[],fe=_.root;for(;;){if(B=B.concat(fe.segments),0===fe.numberOfChildren)return(0,d.of)(B);if(fe.numberOfChildren>1||!fe.children[I])return(0,y.$)(new o.wOt(4e3,!1));fe=fe.children[I]}}applyRedirectCommands(F,_,B,fe,Fe){if("string"!=typeof _){const Et=_,{queryParams:yt,fragment:Yt,routeConfig:xn,url:Rn,outlet:di,params:bi,data:qi,title:Xr}=fe,Sr=(0,o.N4e)(Fe,()=>Et({params:bi,data:qi,queryParams:yt,fragment:Yt,routeConfig:xn,url:Rn,outlet:di,title:Xr}));if(Sr instanceof rt)throw new so(Sr);_=Sr}const Ye=this.applyRedirectCreateUrlTree(_,this.urlSerializer.parse(_),F,B);if("/"===_[0])throw new so(Ye);return Ye}applyRedirectCreateUrlTree(F,_,B,fe){const Fe=this.createSegmentGroup(F,_.root,B,fe);return new rt(Fe,this.createQueryParams(_.queryParams,this.urlTree.queryParams),_.fragment)}createQueryParams(F,_){const B={};return Object.entries(F).forEach(([fe,Fe])=>{if("string"==typeof Fe&&":"===Fe[0]){const Et=Fe.substring(1);B[fe]=_[Et]}else B[fe]=Fe}),B}createSegmentGroup(F,_,B,fe){const Fe=this.createSegments(F,_.segments,B,fe);let Ye={};return Object.entries(_.children).forEach(([Et,yt])=>{Ye[Et]=this.createSegmentGroup(F,yt,B,fe)}),new ce(Fe,Ye)}createSegments(F,_,B,fe){return _.map(Fe=>":"===Fe.path[0]?this.findPosParam(F,Fe,fe):this.findOrReturn(Fe,B))}findPosParam(F,_,B){const fe=B[_.path.substring(1)];if(!fe)throw new o.wOt(4001,!1);return fe}findOrReturn(F,_){let B=0;for(const fe of _){if(fe.path===F.path)return _.splice(B),fe;B++}return F}}const ir={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function ao(m,F,_,B,fe){const Fe=ss(m,F,_);return Fe.matched?(B=function Wn(m,F){return m.providers&&!m._injector&&(m._injector=(0,o.Ol2)(m.providers,F,`Route: ${m.path}`)),m._injector??F}(F,B),function Fs(m,F,_,B){const fe=F.canMatch;if(!fe||0===fe.length)return(0,d.of)(!0);const Fe=fe.map(Ye=>{const Et=Fr(Ye,m);return Y(function An(m){return m&&Fn(m.canMatch)}(Et)?Et.canMatch(F,_):(0,o.N4e)(m,()=>Et(F,_)))});return(0,d.of)(Fe).pipe(Ji(),Gr())}(B,F,_).pipe((0,W.T)(Ye=>!0===Ye?Fe:{...ir}))):(0,d.of)(Fe)}function ss(m,F,_){if("**"===F.path)return function as(m){return{matched:!0,parameters:m.length>0?tt(m).parameters:{},consumedSegments:m,remainingSegments:[],positionalParamSegments:{}}}(_);if(""===F.path)return"full"===F.pathMatch&&(m.hasChildren()||_.length>0)?{...ir}:{matched:!0,consumedSegments:[],remainingSegments:_,parameters:{},positionalParamSegments:{}};const fe=(F.matcher||Me)(_,m,F);if(!fe)return{...ir};const Fe={};Object.entries(fe.posParams??{}).forEach(([Et,yt])=>{Fe[Et]=yt.path});const Ye=fe.consumed.length>0?{...Fe,...fe.consumed[fe.consumed.length-1].parameters}:Fe;return{matched:!0,consumedSegments:fe.consumed,remainingSegments:_.slice(fe.consumed.length),parameters:Ye,positionalParamSegments:fe.posParams??{}}}function ls(m,F,_,B){return _.length>0&&function qr(m,F,_){return _.some(B=>ds(m,F,B)&&bn(B)!==I)}(m,_,B)?{segmentGroup:new ce(F,xo(B,new ce(_,m.children))),slicedSegments:[]}:0===_.length&&function lo(m,F,_){return _.some(B=>ds(m,F,B))}(m,_,B)?{segmentGroup:new ce(m.segments,cs(m,_,B,m.children)),slicedSegments:_}:{segmentGroup:new ce(m.segments,m.children),slicedSegments:_}}function cs(m,F,_,B){const fe={};for(const Fe of _)if(ds(m,F,Fe)&&!B[bn(Fe)]){const Ye=new ce([],{});fe[bn(Fe)]=Ye}return{...B,...fe}}function xo(m,F){const _={};_[I]=F;for(const B of m)if(""===B.path&&bn(B)!==I){const fe=new ce([],{});_[bn(B)]=fe}return _}function ds(m,F,_){return(!(m.hasChildren()||F.length>0)||"full"!==_.pathMatch)&&""===_.path}class Bs{}class Io{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(F,_,B,fe,Fe,Ye,Et){this.injector=F,this.configLoader=_,this.rootComponentType=B,this.config=fe,this.urlTree=Fe,this.paramsInheritanceStrategy=Ye,this.urlSerializer=Et,this.applyRedirects=new Do(this.urlSerializer,this.urlTree)}noMatchError(F){return new o.wOt(4002,`'${F.segmentGroup}'`)}recognize(){const F=ls(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(F).pipe((0,W.T)(({children:_,rootSnapshot:B})=>{const fe=new oi(B,_),Fe=new lr("",fe),Ye=function b(m,F,_=null,B=null){return A(k(m),F,_,B)}(B,[],this.urlTree.queryParams,this.urlTree.fragment);return Ye.queryParams=this.urlTree.queryParams,Fe.url=this.urlSerializer.serialize(Ye),{state:Fe,tree:Ye}}))}match(F){const _=new Er([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,Object.freeze({}),I,this.rootComponentType,null,{});return this.processSegmentGroup(this.injector,this.config,F,I,_).pipe((0,W.T)(B=>({children:B,rootSnapshot:_})),(0,Ae.W)(B=>{if(B instanceof so)return this.urlTree=B.urlTree,this.match(B.urlTree.root);throw B instanceof Br?this.noMatchError(B):B}))}processSegmentGroup(F,_,B,fe,Fe){return 0===B.segments.length&&B.hasChildren()?this.processChildren(F,_,B,Fe):this.processSegment(F,_,B,B.segments,fe,!0,Fe).pipe((0,W.T)(Ye=>Ye instanceof oi?[Ye]:[]))}processChildren(F,_,B,fe){const Fe=[];for(const Ye of Object.keys(B.children))"primary"===Ye?Fe.unshift(Ye):Fe.push(Ye);return(0,O.H)(Fe).pipe((0,_e.H)(Ye=>{const Et=B.children[Ye],yt=function Wr(m,F){const _=m.filter(B=>bn(B)===F);return _.push(...m.filter(B=>bn(B)!==F)),_}(_,Ye);return this.processSegmentGroup(F,yt,Et,Ye,fe)}),function ve(m,F){return(0,ke.N)((0,Ue.S)(m,F,arguments.length>=2,!0))}((Ye,Et)=>(Ye.push(...Et),Ye)),(0,ye.U)(null),function q(m,F){const _=arguments.length>=2;return B=>B.pipe(m?(0,Z.p)((fe,Fe)=>m(fe,Fe,B)):L.D,z(1),_?(0,ye.U)(F):(0,te.v)(()=>new x.G))}(),(0,ae.Z)(Ye=>{if(null===Ye)return ur(B);const Et=Vs(Ye);return function Mo(m){m.sort((F,_)=>F.value.outlet===I?-1:_.value.outlet===I?1:F.value.outlet.localeCompare(_.value.outlet))}(Et),(0,d.of)(Et)}))}processSegment(F,_,B,fe,Fe,Ye,Et){return(0,O.H)(_).pipe((0,_e.H)(yt=>this.processSegmentAgainstRoute(yt._injector??F,_,yt,B,fe,Fe,Ye,Et).pipe((0,Ae.W)(Yt=>{if(Yt instanceof Br)return(0,d.of)(null);throw Yt}))),(0,Le.$)(yt=>!!yt),(0,Ae.W)(yt=>{if(gi(yt))return function Ql(m,F,_){return 0===F.length&&!m.children[_]}(B,fe,Fe)?(0,d.of)(new Bs):ur(B);throw yt}))}processSegmentAgainstRoute(F,_,B,fe,Fe,Ye,Et,yt){return bn(B)===Ye||Ye!==I&&ds(fe,Fe,B)?void 0===B.redirectTo?this.matchSegmentAgainstRoute(F,fe,B,Fe,Ye,yt):this.allowRedirects&&Et?this.expandSegmentAgainstRouteUsingRedirect(F,fe,_,B,Fe,Ye,yt):ur(fe):ur(fe)}expandSegmentAgainstRouteUsingRedirect(F,_,B,fe,Fe,Ye,Et){const{matched:yt,parameters:Yt,consumedSegments:xn,positionalParamSegments:Rn,remainingSegments:di}=ss(_,fe,Fe);if(!yt)return ur(_);"string"==typeof fe.redirectTo&&"/"===fe.redirectTo[0]&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>31&&(this.allowRedirects=!1));const bi=new Er(Fe,Yt,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,us(fe),bn(fe),fe.component??fe._loadedComponent??null,fe,Fa(fe)),qi=Wi(bi,Et,this.paramsInheritanceStrategy);bi.params=Object.freeze(qi.params),bi.data=Object.freeze(qi.data);const Xr=this.applyRedirects.applyRedirectCommands(xn,fe.redirectTo,Rn,bi,F);return this.applyRedirects.lineralizeSegments(fe,Xr).pipe((0,ae.Z)(Sr=>this.processSegment(F,B,_,Sr.concat(di),Ye,!1,Et)))}matchSegmentAgainstRoute(F,_,B,fe,Fe,Ye){const Et=ao(_,B,fe,F);return"**"===B.path&&(_.children={}),Et.pipe((0,ne.n)(yt=>yt.matched?this.getChildConfig(F=B._injector??F,B,fe).pipe((0,ne.n)(({routes:Yt})=>{const xn=B._loadedInjector??F,{parameters:Rn,consumedSegments:di,remainingSegments:bi}=yt,qi=new Er(di,Rn,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,us(B),bn(B),B.component??B._loadedComponent??null,B,Fa(B)),Xr=Wi(qi,Ye,this.paramsInheritanceStrategy);qi.params=Object.freeze(Xr.params),qi.data=Object.freeze(Xr.data);const{segmentGroup:Sr,slicedSegments:uo}=ls(_,di,bi,Yt);if(0===uo.length&&Sr.hasChildren())return this.processChildren(xn,Yt,Sr,qi).pipe((0,W.T)(ho=>new oi(qi,ho)));if(0===Yt.length&&0===uo.length)return(0,d.of)(new oi(qi,[]));const Ua=bn(B)===Fe;return this.processSegment(xn,Yt,Sr,uo,Ua?I:Fe,!0,qi).pipe((0,W.T)(ho=>new oi(qi,ho instanceof oi?[ho]:[])))})):ur(_)))}getChildConfig(F,_,B){return _.children?(0,d.of)({routes:_.children,injector:F}):_.loadChildren?void 0!==_._loadedRoutes?(0,d.of)({routes:_._loadedRoutes,injector:_._loadedInjector}):function Jr(m,F,_,B){const fe=F.canLoad;if(void 0===fe||0===fe.length)return(0,d.of)(!0);const Fe=fe.map(Ye=>{const Et=Fr(Ye,m);return Y(function os(m){return m&&Fn(m.canLoad)}(Et)?Et.canLoad(F,_):(0,o.N4e)(m,()=>Et(F,_)))});return(0,d.of)(Fe).pipe(Ji(),Gr())}(F,_,B).pipe((0,ae.Z)(fe=>fe?this.configLoader.loadChildren(F,_).pipe((0,Ce.M)(Fe=>{_._loadedRoutes=Fe.routes,_._loadedInjector=Fe.injector})):function Wo(){return(0,y.$)(kn(!1,Mn.GuardRejected))}())):(0,d.of)({routes:[],injector:F})}}function Zl(m){const F=m.value.routeConfig;return F&&""===F.path}function Vs(m){const F=[],_=new Set;for(const B of m){if(!Zl(B)){F.push(B);continue}const fe=F.find(Fe=>B.value.routeConfig===Fe.value.routeConfig);void 0!==fe?(fe.children.push(...B.children),_.add(fe)):F.push(B)}for(const B of _){const fe=Vs(B.children);F.push(new oi(B.value,fe))}return F.filter(B=>!_.has(B))}function us(m){return m.data||{}}function Fa(m){return m.resolve||{}}function js(m){const F=m.children.map(_=>js(_)).flat();return[m,...F]}function Ws(m){return(0,ne.n)(F=>{const _=m(F);return _?(0,O.H)(_).pipe((0,W.T)(()=>F)):(0,d.of)(F)})}let hs=(()=>{class m{buildTitle(_){let B,fe=_.root;for(;void 0!==fe;)B=this.getResolvedTitleForRoute(fe)??B,fe=fe.children.find(Fe=>Fe.outlet===I);return B}getResolvedTitleForRoute(_){return _.data[M]}static \u0275fac=function(B){return new(B||m)};static \u0275prov=o.jDH({token:m,factory:()=>(0,o.WQX)(fs),providedIn:"root"})}return m})(),fs=(()=>{class m extends hs{title;constructor(_){super(),this.title=_}updateTitle(_){const B=this.buildTitle(_);void 0!==B&&this.title.setTitle(B)}static \u0275fac=function(B){return new(B||m)(o.KVO(V.hE))};static \u0275prov=o.jDH({token:m,factory:m.\u0275fac,providedIn:"root"})}return m})();const Hn=new o.nKC("",{providedIn:"root",factory:()=>({})});let Kt=(()=>{class m{static \u0275fac=function(B){return new(B||m)};static \u0275cmp=o.VBU({type:m,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(B,fe){1&B&&o.nrm(0,"router-outlet")},dependencies:[Qi],encapsulation:2})}return m})();function vn(m){const F=m.children&&m.children.map(vn),_=F?{...m,children:F}:{...m};return!_.component&&!_.loadComponent&&(F||_.loadChildren)&&_.outlet&&_.outlet!==I&&(_.component=Kt),_}const ii=new o.nKC("");let Ri=(()=>{class m{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=(0,o.WQX)(o.Ql9);loadComponent(_){if(this.componentLoaders.get(_))return this.componentLoaders.get(_);if(_._loadedComponent)return(0,d.of)(_._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(_);const B=Y(_.loadComponent()).pipe((0,W.T)(co),(0,Ce.M)(Fe=>{this.onLoadEndListener&&this.onLoadEndListener(_),_._loadedComponent=Fe}),(0,J.j)(()=>{this.componentLoaders.delete(_)})),fe=new u.G(B,()=>new P.B).pipe((0,X.B)());return this.componentLoaders.set(_,fe),fe}loadChildren(_,B){if(this.childrenLoaders.get(B))return this.childrenLoaders.get(B);if(B._loadedRoutes)return(0,d.of)({routes:B._loadedRoutes,injector:B._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(B);const Fe=function Pi(m,F,_,B){return Y(m.loadChildren()).pipe((0,W.T)(co),(0,ae.Z)(fe=>fe instanceof o.Co$||Array.isArray(fe)?(0,d.of)(fe):(0,O.H)(F.compileModuleAsync(fe))),(0,W.T)(fe=>{B&&B(m);let Fe,Ye,Et=!1;return Array.isArray(fe)?(Ye=fe,!0):(Fe=fe.create(_).injector,Ye=Fe.get(ii,[],{optional:!0,self:!0}).flat()),{routes:Ye.map(vn),injector:Fe}}))}(B,this.compiler,_,this.onLoadEndListener).pipe((0,J.j)(()=>{this.childrenLoaders.delete(B)})),Ye=new u.G(Fe,()=>new P.B).pipe((0,X.B)());return this.childrenLoaders.set(B,Ye),Ye}static \u0275fac=function(B){return new(B||m)};static \u0275prov=o.jDH({token:m,factory:m.\u0275fac,providedIn:"root"})}return m})();function co(m){return function Ni(m){return m&&"object"==typeof m&&"default"in m}(m)?m.default:m}let Xn=(()=>{class m{static \u0275fac=function(B){return new(B||m)};static \u0275prov=o.jDH({token:m,factory:()=>(0,o.WQX)(ri),providedIn:"root"})}return m})(),ri=(()=>{class m{shouldProcessUrl(_){return!0}extract(_){return _}merge(_,B){return _}static \u0275fac=function(B){return new(B||m)};static \u0275prov=o.jDH({token:m,factory:m.\u0275fac,providedIn:"root"})}return m})();const xr=new o.nKC(""),En=new o.nKC("");function S(m,F,_){const B=m.get(En),fe=m.get(E.qQ);return m.get(o.SKi).runOutsideAngular(()=>{if(!fe.startViewTransition||B.skipNextTransition)return B.skipNextTransition=!1,new Promise(Yt=>setTimeout(Yt));let Fe;const Ye=new Promise(Yt=>{Fe=Yt}),Et=fe.startViewTransition(()=>(Fe(),function we(m){return new Promise(F=>{(0,o.mal)({read:()=>setTimeout(F)},{injector:m})})}(m))),{onViewTransitionCreated:yt}=B;return yt&&(0,o.N4e)(m,()=>yt({transition:Et,from:F,to:_})),Ye})}const $=new o.nKC("");let ue=(()=>{class m{currentNavigation=null;currentTransition=null;lastSuccessfulNavigation=null;events=new P.B;transitionAbortSubject=new P.B;configLoader=(0,o.WQX)(Ri);environmentInjector=(0,o.WQX)(o.uvJ);destroyRef=(0,o.WQX)(o.abz);urlSerializer=(0,o.WQX)(ft);rootContexts=(0,o.WQX)(tr);location=(0,o.WQX)(E.aZ);inputBindingEnabled=null!==(0,o.WQX)(Cr,{optional:!0});titleStrategy=(0,o.WQX)(hs);options=(0,o.WQX)(Hn,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=(0,o.WQX)(Xn);createViewTransition=(0,o.WQX)(xr,{optional:!0});navigationErrorHandler=(0,o.WQX)($,{optional:!0});navigationId=0;get hasRequestedNavigation(){return 0!==this.navigationId}transitions;afterPreactivation=()=>(0,d.of)(void 0);rootComponentType=null;destroyed=!1;constructor(){this.configLoader.onLoadEndListener=fe=>this.events.next(new hn(fe)),this.configLoader.onLoadStartListener=fe=>this.events.next(new Ht(fe)),this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(_){const B=++this.navigationId;this.transitions?.next({...this.transitions.value,..._,id:B})}setupNavigations(_,B,fe){return this.transitions=new w.t({id:0,currentUrlTree:B,currentRawUrl:B,extractedUrl:this.urlHandlingStrategy.extract(B),urlAfterRedirects:this.urlHandlingStrategy.extract(B),rawUrl:B,extras:{},resolve:()=>{},reject:()=>{},promise:Promise.resolve(!0),source:un,restoredState:null,currentSnapshot:fe.snapshot,targetSnapshot:null,currentRouterState:fe,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe((0,Z.p)(Fe=>0!==Fe.id),(0,W.T)(Fe=>({...Fe,extractedUrl:this.urlHandlingStrategy.extract(Fe.rawUrl)})),(0,ne.n)(Fe=>{let Ye=!1,Et=!1;return(0,d.of)(Fe).pipe((0,ne.n)(yt=>{if(this.navigationId>Fe.id)return this.cancelNavigationTransition(Fe,"",Mn.SupersededByNewNavigation),h.w;this.currentTransition=Fe,this.currentNavigation={id:yt.id,initialUrl:yt.rawUrl,extractedUrl:yt.extractedUrl,targetBrowserUrl:"string"==typeof yt.extras.browserUrl?this.urlSerializer.parse(yt.extras.browserUrl):yt.extras.browserUrl,trigger:yt.source,extras:yt.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null};const Yt=!_.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl();if(!Yt&&"reload"!==(yt.extras.onSameUrlNavigation??_.onSameUrlNavigation)){const Rn="";return this.events.next(new In(yt.id,this.urlSerializer.serialize(yt.rawUrl),Rn,qt.IgnoredSameUrlNavigation)),yt.resolve(!1),h.w}if(this.urlHandlingStrategy.shouldProcessUrl(yt.rawUrl))return(0,d.of)(yt).pipe((0,ne.n)(Rn=>{const di=this.transitions?.getValue();return this.events.next(new yn(Rn.id,this.urlSerializer.serialize(Rn.extractedUrl),Rn.source,Rn.restoredState)),di!==this.transitions?.getValue()?h.w:Promise.resolve(Rn)}),function wo(m,F,_,B,fe,Fe){return(0,ae.Z)(Ye=>function Us(m,F,_,B,fe,Fe,Ye="emptyOnly"){return new Io(m,F,_,B,fe,Ye,Fe).recognize()}(m,F,_,B,Ye.extractedUrl,fe,Fe).pipe((0,W.T)(({state:Et,tree:yt})=>({...Ye,targetSnapshot:Et,urlAfterRedirects:yt}))))}(this.environmentInjector,this.configLoader,this.rootComponentType,_.config,this.urlSerializer,this.paramsInheritanceStrategy),(0,Ce.M)(Rn=>{Fe.targetSnapshot=Rn.targetSnapshot,Fe.urlAfterRedirects=Rn.urlAfterRedirects,this.currentNavigation={...this.currentNavigation,finalUrl:Rn.urlAfterRedirects};const di=new ze(Rn.id,this.urlSerializer.serialize(Rn.extractedUrl),this.urlSerializer.serialize(Rn.urlAfterRedirects),Rn.targetSnapshot);this.events.next(di)}));if(Yt&&this.urlHandlingStrategy.shouldProcessUrl(yt.currentRawUrl)){const{id:Rn,extractedUrl:di,source:bi,restoredState:qi,extras:Xr}=yt,Sr=new yn(Rn,this.urlSerializer.serialize(di),bi,qi);this.events.next(Sr);const uo=ro(this.rootComponentType).snapshot;return this.currentTransition=Fe={...yt,targetSnapshot:uo,urlAfterRedirects:di,extras:{...Xr,skipLocationChange:!1,replaceUrl:!1}},this.currentNavigation.finalUrl=di,(0,d.of)(Fe)}{const Rn="";return this.events.next(new In(yt.id,this.urlSerializer.serialize(yt.extractedUrl),Rn,qt.IgnoredByUrlHandlingStrategy)),yt.resolve(!1),h.w}}),(0,Ce.M)(yt=>{const Yt=new Ge(yt.id,this.urlSerializer.serialize(yt.extractedUrl),this.urlSerializer.serialize(yt.urlAfterRedirects),yt.targetSnapshot);this.events.next(Yt)}),(0,W.T)(yt=>(this.currentTransition=Fe={...yt,guards:ks(yt.targetSnapshot,yt.currentSnapshot,this.rootContexts)},Fe)),function he(m,F){return(0,ae.Z)(_=>{const{targetSnapshot:B,currentSnapshot:fe,guards:{canActivateChecks:Fe,canDeactivateChecks:Ye}}=_;return 0===Ye.length&&0===Fe.length?(0,d.of)({..._,guardsResult:!0}):function pe(m,F,_,B){return(0,O.H)(m).pipe((0,ae.Z)(fe=>function Dr(m,F,_,B,fe){const Fe=F&&F.routeConfig?F.routeConfig.canDeactivate:null;if(!Fe||0===Fe.length)return(0,d.of)(!0);const Ye=Fe.map(Et=>{const yt=pr(F)??fe,Yt=Fr(Et,yt);return Y(function Oi(m){return m&&Fn(m.canDeactivate)}(Yt)?Yt.canDeactivate(m,F,_,B):(0,o.N4e)(yt,()=>Yt(m,F,_,B))).pipe((0,Le.$)())});return(0,d.of)(Ye).pipe(Ji())}(fe.component,fe.route,_,F,B)),(0,Le.$)(fe=>!0!==fe,!0))}(Ye,B,fe,m).pipe((0,ae.Z)(Et=>Et&&function Zi(m){return"boolean"==typeof m}(Et)?function U(m,F,_,B){return(0,O.H)(F).pipe((0,_e.H)(fe=>(0,D.x)(function st(m,F){return null!==m&&F&&F(new sn(m)),(0,d.of)(!0)}(fe.route.parent,B),function Ne(m,F){return null!==m&&F&&F(new $t(m)),(0,d.of)(!0)}(fe.route,B),function On(m,F,_){const B=F[F.length-1],Fe=F.slice(0,F.length-1).reverse().map(Ye=>function Bi(m){const F=m.routeConfig?m.routeConfig.canActivateChild:null;return F&&0!==F.length?{node:m,guards:F}:null}(Ye)).filter(Ye=>null!==Ye).map(Ye=>(0,p.v)(()=>{const Et=Ye.guards.map(yt=>{const Yt=pr(Ye.node)??_,xn=Fr(yt,Yt);return Y(function Zr(m){return m&&Fn(m.canActivateChild)}(xn)?xn.canActivateChild(B,m):(0,o.N4e)(Yt,()=>xn(B,m))).pipe((0,Le.$)())});return(0,d.of)(Et).pipe(Ji())}));return(0,d.of)(Fe).pipe(Ji())}(m,fe.path,_),function fn(m,F,_){const B=F.routeConfig?F.routeConfig.canActivate:null;if(!B||0===B.length)return(0,d.of)(!0);const fe=B.map(Fe=>(0,p.v)(()=>{const Ye=pr(F)??_,Et=Fr(Fe,Ye);return Y(function jo(m){return m&&Fn(m.canActivate)}(Et)?Et.canActivate(F,m):(0,o.N4e)(Ye,()=>Et(F,m))).pipe((0,Le.$)())}));return(0,d.of)(fe).pipe(Ji())}(m,fe.route,_))),(0,Le.$)(fe=>!0!==fe,!0))}(B,Fe,m,F):(0,d.of)(Et)),(0,W.T)(Et=>({..._,guardsResult:Et})))})}(this.environmentInjector,yt=>this.events.next(yt)),(0,Ce.M)(yt=>{if(Fe.guardsResult=yt.guardsResult,yt.guardsResult&&"boolean"!=typeof yt.guardsResult)throw Ti(0,yt.guardsResult);const Yt=new gt(yt.id,this.urlSerializer.serialize(yt.extractedUrl),this.urlSerializer.serialize(yt.urlAfterRedirects),yt.targetSnapshot,!!yt.guardsResult);this.events.next(Yt)}),(0,Z.p)(yt=>!!yt.guardsResult||(this.cancelNavigationTransition(yt,"",Mn.GuardRejected),!1)),Ws(yt=>{if(yt.guards.canActivateChecks.length)return(0,d.of)(yt).pipe((0,Ce.M)(Yt=>{const xn=new wt(Yt.id,this.urlSerializer.serialize(Yt.extractedUrl),this.urlSerializer.serialize(Yt.urlAfterRedirects),Yt.targetSnapshot);this.events.next(xn)}),(0,ne.n)(Yt=>{let xn=!1;return(0,d.of)(Yt).pipe(function Jl(m,F){return(0,ae.Z)(_=>{const{targetSnapshot:B,guards:{canActivateChecks:fe}}=_;if(!fe.length)return(0,d.of)(_);const Fe=new Set(fe.map(yt=>yt.route)),Ye=new Set;for(const yt of Fe)if(!Ye.has(yt))for(const Yt of js(yt))Ye.add(Yt);let Et=0;return(0,O.H)(Ye).pipe((0,_e.H)(yt=>Fe.has(yt)?function La(m,F,_,B){const fe=m.routeConfig,Fe=m._resolve;return void 0!==fe?.title&&!mr(fe)&&(Fe[M]=fe.title),function ql(m,F,_,B){const fe=se(m);if(0===fe.length)return(0,d.of)({});const Fe={};return(0,O.H)(fe).pipe((0,ae.Z)(Ye=>function ec(m,F,_,B){const fe=pr(F)??B,Fe=Fr(m,fe);return Y(Fe.resolve?Fe.resolve(F,_):(0,o.N4e)(fe,()=>Fe(F,_)))}(m[Ye],F,_,B).pipe((0,Le.$)(),(0,Ce.M)(Et=>{if(Et instanceof Ci)throw Ti(new le,Et);Fe[Ye]=Et}))),z(1),(0,W.T)(()=>Fe),(0,Ae.W)(Ye=>gi(Ye)?h.w:(0,y.$)(Ye)))}(Fe,m,F,B).pipe((0,W.T)(Ye=>(m._resolvedData=Ye,m.data=Wi(m,m.parent,_).resolve,null)))}(yt,B,m,F):(yt.data=Wi(yt,yt.parent,m).resolve,(0,d.of)(void 0))),(0,Ce.M)(()=>Et++),z(1),(0,ae.Z)(yt=>Et===Ye.size?(0,d.of)(_):h.w))})}(this.paramsInheritanceStrategy,this.environmentInjector),(0,Ce.M)({next:()=>xn=!0,complete:()=>{xn||this.cancelNavigationTransition(Yt,"",Mn.NoDataFromResolver)}}))}),(0,Ce.M)(Yt=>{const xn=new Wt(Yt.id,this.urlSerializer.serialize(Yt.extractedUrl),this.urlSerializer.serialize(Yt.urlAfterRedirects),Yt.targetSnapshot);this.events.next(xn)}))}),Ws(yt=>{const Yt=xn=>{const Rn=[];xn.routeConfig?.loadComponent&&!xn.routeConfig._loadedComponent&&Rn.push(this.configLoader.loadComponent(xn.routeConfig).pipe((0,Ce.M)(di=>{xn.component=di}),(0,W.T)(()=>{})));for(const di of xn.children)Rn.push(...Yt(di));return Rn};return(0,C.z)(Yt(yt.targetSnapshot.root)).pipe((0,ye.U)(null),(0,de.s)(1))}),Ws(()=>this.afterPreactivation()),(0,ne.n)(()=>{const{currentSnapshot:yt,targetSnapshot:Yt}=Fe,xn=this.createViewTransition?.(this.environmentInjector,yt.root,Yt.root);return xn?(0,O.H)(xn).pipe((0,W.T)(()=>Fe)):(0,d.of)(Fe)}),(0,W.T)(yt=>{const Yt=function Si(m,F,_){const B=yi(m,F._root,_?_._root:void 0);return new br(B,F)}(_.routeReuseStrategy,yt.targetSnapshot,yt.currentRouterState);return this.currentTransition=Fe={...yt,targetRouterState:Yt},this.currentNavigation.targetRouterState=Yt,Fe}),(0,Ce.M)(()=>{this.events.next(new hi)}),((m,F,_,B)=>(0,W.T)(fe=>(new Co(F,fe.targetRouterState,fe.currentRouterState,_,B).activate(m),fe)))(this.rootContexts,_.routeReuseStrategy,yt=>this.events.next(yt),this.inputBindingEnabled),(0,de.s)(1),(0,Ce.M)({next:yt=>{Ye=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new _n(yt.id,this.urlSerializer.serialize(yt.extractedUrl),this.urlSerializer.serialize(yt.urlAfterRedirects))),this.titleStrategy?.updateTitle(yt.targetRouterState.snapshot),yt.resolve(!0)},complete:()=>{Ye=!0}}),(0,K.Q)(this.transitionAbortSubject.pipe((0,Ce.M)(yt=>{throw yt}))),(0,J.j)(()=>{!Ye&&!Et&&this.cancelNavigationTransition(Fe,"",Mn.SupersededByNewNavigation),this.currentTransition?.id===Fe.id&&(this.currentNavigation=null,this.currentTransition=null)}),(0,Ae.W)(yt=>{if(this.destroyed)return Fe.resolve(!1),h.w;if(Et=!0,Ai(yt))this.events.next(new gn(Fe.id,this.urlSerializer.serialize(Fe.extractedUrl),yt.message,yt.cancellationCode)),function ci(m){return Ai(m)&&ct(m.url)}(yt)?this.events.next(new Kn(yt.url,yt.navigationBehaviorOptions)):Fe.resolve(!1);else{const Yt=new Ve(Fe.id,this.urlSerializer.serialize(Fe.extractedUrl),yt,Fe.targetSnapshot??void 0);try{const xn=(0,o.N4e)(this.environmentInjector,()=>this.navigationErrorHandler?.(Yt));if(!(xn instanceof Ci))throw this.events.next(Yt),yt;{const{message:Rn,cancellationCode:di}=Ti(0,xn);this.events.next(new gn(Fe.id,this.urlSerializer.serialize(Fe.extractedUrl),Rn,di)),this.events.next(new Kn(xn.redirectTo,xn.navigationBehaviorOptions))}}catch(xn){this.options.resolveNavigationPromiseOnError?Fe.resolve(!1):Fe.reject(xn)}}return h.w}))}))}cancelNavigationTransition(_,B,fe){const Fe=new gn(_.id,this.urlSerializer.serialize(_.extractedUrl),B,fe);this.events.next(Fe),_.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){const _=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),B=this.currentNavigation?.targetBrowserUrl??this.currentNavigation?.extractedUrl;return _.toString()!==B?.toString()&&!this.currentNavigation?.extras.skipLocationChange}static \u0275fac=function(B){return new(B||m)};static \u0275prov=o.jDH({token:m,factory:m.\u0275fac,providedIn:"root"})}return m})();function Xe(m){return m!==un}let Dt=(()=>{class m{static \u0275fac=function(B){return new(B||m)};static \u0275prov=o.jDH({token:m,factory:()=>(0,o.WQX)(cn),providedIn:"root"})}return m})();class Rt{shouldDetach(F){return!1}store(F,_){}shouldAttach(F){return!1}retrieve(F){return null}shouldReuseRoute(F,_){return F.routeConfig===_.routeConfig}}let cn=(()=>{class m extends Rt{static \u0275fac=(()=>{let _;return function(fe){return(_||(_=o.xGo(m)))(fe||m)}})();static \u0275prov=o.jDH({token:m,factory:m.\u0275fac,providedIn:"root"})}return m})(),$n=(()=>{class m{static \u0275fac=function(B){return new(B||m)};static \u0275prov=o.jDH({token:m,factory:()=>(0,o.WQX)(Gn),providedIn:"root"})}return m})(),Gn=(()=>{class m extends $n{location=(0,o.WQX)(E.aZ);urlSerializer=(0,o.WQX)(ft);options=(0,o.WQX)(Hn,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";urlHandlingStrategy=(0,o.WQX)(Xn);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new rt;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}currentPageId=0;lastSuccessfulId=-1;restoredState(){return this.location.getState()}get browserPageId(){return"computed"!==this.canceledNavigationResolution?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}routerState=ro(null);getRouterState(){return this.routerState}stateMemento=this.createStateMemento();createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(_){return this.location.subscribe(B=>{"popstate"===B.type&&_(B.url,B.state)})}handleRouterEvent(_,B){if(_ instanceof yn)this.stateMemento=this.createStateMemento();else if(_ instanceof In)this.rawUrlTree=B.initialUrl;else if(_ instanceof ze){if("eager"===this.urlUpdateStrategy&&!B.extras.skipLocationChange){const fe=this.urlHandlingStrategy.merge(B.finalUrl,B.initialUrl);this.setBrowserUrl(B.targetBrowserUrl??fe,B)}}else _ instanceof hi?(this.currentUrlTree=B.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(B.finalUrl,B.initialUrl),this.routerState=B.targetRouterState,"deferred"===this.urlUpdateStrategy&&!B.extras.skipLocationChange&&this.setBrowserUrl(B.targetBrowserUrl??this.rawUrlTree,B)):_ instanceof gn&&(_.code===Mn.GuardRejected||_.code===Mn.NoDataFromResolver)?this.restoreHistory(B):_ instanceof Ve?this.restoreHistory(B,!0):_ instanceof _n&&(this.lastSuccessfulId=_.id,this.currentPageId=this.browserPageId)}setBrowserUrl(_,B){const fe=_ instanceof rt?this.urlSerializer.serialize(_):_;if(this.location.isCurrentPathEqualTo(fe)||B.extras.replaceUrl){const Ye={...B.extras.state,...this.generateNgRouterState(B.id,this.browserPageId)};this.location.replaceState(fe,"",Ye)}else{const Fe={...B.extras.state,...this.generateNgRouterState(B.id,this.browserPageId+1)};this.location.go(fe,"",Fe)}}restoreHistory(_,B=!1){if("computed"===this.canceledNavigationResolution){const Fe=this.currentPageId-this.browserPageId;0!==Fe?this.location.historyGo(Fe):this.currentUrlTree===_.finalUrl&&0===Fe&&(this.resetState(_),this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(B&&this.resetState(_),this.resetUrlToCurrentUrlTree())}resetState(_){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,_.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(_,B){return"computed"===this.canceledNavigationResolution?{navigationId:_,\u0275routerPageId:B}:{navigationId:_}}static \u0275fac=(()=>{let _;return function(fe){return(_||(_=o.xGo(m)))(fe||m)}})();static \u0275prov=o.jDH({token:m,factory:m.\u0275fac,providedIn:"root"})}return m})();function Yn(m,F){m.events.pipe((0,Z.p)(_=>_ instanceof _n||_ instanceof gn||_ instanceof Ve||_ instanceof In),(0,W.T)(_=>_ instanceof _n||_ instanceof In?0:_ instanceof gn&&(_.code===Mn.Redirect||_.code===Mn.SupersededByNewNavigation)?2:1),(0,Z.p)(_=>2!==_),(0,de.s)(1)).subscribe(()=>{F()})}const Pn={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},Vn={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let Vt=(()=>{class m{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=(0,o.WQX)(o.H3F);stateManager=(0,o.WQX)($n);options=(0,o.WQX)(Hn,{optional:!0})||{};pendingTasks=(0,o.WQX)(o.Ua0);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=(0,o.WQX)(ue);urlSerializer=(0,o.WQX)(ft);location=(0,o.WQX)(E.aZ);urlHandlingStrategy=(0,o.WQX)(Xn);_events=new P.B;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=(0,o.WQX)(Dt);onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=(0,o.WQX)(ii,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!(0,o.WQX)(Cr,{optional:!0});constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:_=>{this.console.warn(_)}}),this.subscribeToNavigationEvents()}eventsSubscription=new T.yU;subscribeToNavigationEvents(){const _=this.navigationTransitions.events.subscribe(B=>{try{const fe=this.navigationTransitions.currentTransition,Fe=this.navigationTransitions.currentNavigation;if(null!==fe&&null!==Fe)if(this.stateManager.handleRouterEvent(B,Fe),B instanceof gn&&B.code!==Mn.Redirect&&B.code!==Mn.SupersededByNewNavigation)this.navigated=!0;else if(B instanceof _n)this.navigated=!0;else if(B instanceof Kn){const Ye=B.navigationBehaviorOptions,Et=this.urlHandlingStrategy.merge(B.url,fe.currentRawUrl),yt={browserUrl:fe.extras.browserUrl,info:fe.extras.info,skipLocationChange:fe.extras.skipLocationChange,replaceUrl:fe.extras.replaceUrl||"eager"===this.urlUpdateStrategy||Xe(fe.source),...Ye};this.scheduleNavigation(Et,un,null,yt,{resolve:fe.resolve,reject:fe.reject,promise:fe.promise})}(function Ui(m){return!(m instanceof hi||m instanceof Kn)})(B)&&this._events.next(B)}catch(fe){this.navigationTransitions.transitionAbortSubject.next(fe)}});this.eventsSubscription.add(_)}resetRootComponentType(_){this.routerState.root.component=_,this.navigationTransitions.rootComponentType=_}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),un,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((_,B)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(_,"popstate",B)},0)})}navigateToSyncWithBrowser(_,B,fe){const Fe={replaceUrl:!0},Ye=fe?.navigationId?fe:null;if(fe){const yt={...fe};delete yt.navigationId,delete yt.\u0275routerPageId,0!==Object.keys(yt).length&&(Fe.state=yt)}const Et=this.parseUrl(_);this.scheduleNavigation(Et,B,Ye,Fe)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(_){this.config=_.map(vn),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(_,B={}){const{relativeTo:fe,queryParams:Fe,fragment:Ye,queryParamsHandling:Et,preserveFragment:yt}=B,Yt=yt?this.currentUrlTree.fragment:Ye;let Rn,xn=null;switch(Et??this.options.defaultQueryParamsHandling){case"merge":xn={...this.currentUrlTree.queryParams,...Fe};break;case"preserve":xn=this.currentUrlTree.queryParams;break;default:xn=Fe||null}null!==xn&&(xn=this.removeEmptyProps(xn));try{Rn=k(fe?fe.snapshot:this.routerState.snapshot.root)}catch{("string"!=typeof _[0]||"/"!==_[0][0])&&(_=[]),Rn=this.currentUrlTree.root}return A(Rn,_,xn,Yt??null)}navigateByUrl(_,B={skipLocationChange:!1}){const fe=ct(_)?_:this.parseUrl(_),Fe=this.urlHandlingStrategy.merge(fe,this.rawUrlTree);return this.scheduleNavigation(Fe,un,null,B)}navigate(_,B={skipLocationChange:!1}){return function pi(m){for(let F=0;F(null!=Fe&&(B[fe]=Fe),B),{})}scheduleNavigation(_,B,fe,Fe,Ye){if(this.disposed)return Promise.resolve(!1);let Et,yt,Yt;Ye?(Et=Ye.resolve,yt=Ye.reject,Yt=Ye.promise):Yt=new Promise((Rn,di)=>{Et=Rn,yt=di});const xn=this.pendingTasks.add();return Yn(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(xn))}),this.navigationTransitions.handleNavigationRequest({source:B,restoredState:fe,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:_,extras:Fe,resolve:Et,reject:yt,promise:Yt,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),Yt.catch(Rn=>Promise.reject(Rn))}static \u0275fac=function(B){return new(B||m)};static \u0275prov=o.jDH({token:m,factory:m.\u0275fac,providedIn:"root"})}return m})(),mi=(()=>{class m{router;route;tabIndexAttribute;renderer;el;locationStrategy;href=null;target;queryParams;fragment;queryParamsHandling;state;info;relativeTo;isAnchorElement;subscription;onChanges=new P.B;constructor(_,B,fe,Fe,Ye,Et){this.router=_,this.route=B,this.tabIndexAttribute=fe,this.renderer=Fe,this.el=Ye,this.locationStrategy=Et;const yt=Ye.nativeElement.tagName?.toLowerCase();this.isAnchorElement="a"===yt||"area"===yt,this.isAnchorElement?this.subscription=_.events.subscribe(Yt=>{Yt instanceof _n&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}preserveFragment=!1;skipLocationChange=!1;replaceUrl=!1;setTabIndexIfNotOnNativeEl(_){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",_)}ngOnChanges(_){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}routerLinkInput=null;set routerLink(_){null==_?(this.routerLinkInput=null,this.setTabIndexIfNotOnNativeEl(null)):(this.routerLinkInput=ct(_)||Array.isArray(_)?_:[_],this.setTabIndexIfNotOnNativeEl("0"))}onClick(_,B,fe,Fe,Ye){const Et=this.urlTree;return!!(null===Et||this.isAnchorElement&&(0!==_||B||fe||Fe||Ye||"string"==typeof this.target&&"_self"!=this.target))||(this.router.navigateByUrl(Et,{skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info}),!this.isAnchorElement)}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){const _=this.urlTree;this.href=null!==_&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(_)):null;const B=null===this.href?null:(0,o.n$t)(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",B)}applyAttributeValue(_,B){const fe=this.renderer,Fe=this.el.nativeElement;null!==B?fe.setAttribute(Fe,_,B):fe.removeAttribute(Fe,_)}get urlTree(){return null===this.routerLinkInput?null:ct(this.routerLinkInput)?this.routerLinkInput:this.router.createUrlTree(this.routerLinkInput,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static \u0275fac=function(B){return new(B||m)(o.rXU(Vt),o.rXU(Yi),o.kS0("tabindex"),o.rXU(o.sFG),o.rXU(o.aKT),o.rXU(E.hb))};static \u0275dir=o.FsC({type:m,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(B,fe){1&B&&o.bIt("click",function(Ye){return fe.onClick(Ye.button,Ye.ctrlKey,Ye.shiftKey,Ye.altKey,Ye.metaKey)}),2&B&&o.BMQ("target",fe.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",o.L39],skipLocationChange:[2,"skipLocationChange","skipLocationChange",o.L39],replaceUrl:[2,"replaceUrl","replaceUrl",o.L39],routerLink:"routerLink"},features:[o.GFd,o.OA$]})}return m})();class ei{}let So=(()=>{class m{router;injector;preloadingStrategy;loader;subscription;constructor(_,B,fe,Fe,Ye){this.router=_,this.injector=fe,this.preloadingStrategy=Fe,this.loader=Ye}setUpPreloading(){this.subscription=this.router.events.pipe((0,Z.p)(_=>_ instanceof _n),(0,_e.H)(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(_,B){const fe=[];for(const Fe of B){Fe.providers&&!Fe._injector&&(Fe._injector=(0,o.Ol2)(Fe.providers,_,`Route: ${Fe.path}`));const Ye=Fe._injector??_,Et=Fe._loadedInjector??Ye;(Fe.loadChildren&&!Fe._loadedRoutes&&void 0===Fe.canLoad||Fe.loadComponent&&!Fe._loadedComponent)&&fe.push(this.preloadConfig(Ye,Fe)),(Fe.children||Fe._loadedRoutes)&&fe.push(this.processRoutes(Et,Fe.children??Fe._loadedRoutes))}return(0,O.H)(fe).pipe((0,N.U)())}preloadConfig(_,B){return this.preloadingStrategy.preload(B,()=>{let fe;fe=B.loadChildren&&void 0===B.canLoad?this.loader.loadChildren(_,B):(0,d.of)(null);const Fe=fe.pipe((0,ae.Z)(Ye=>null===Ye?(0,d.of)(void 0):(B._loadedRoutes=Ye.routes,B._loadedInjector=Ye.injector,this.processRoutes(Ye.injector??_,Ye.routes))));if(B.loadComponent&&!B._loadedComponent){const Ye=this.loader.loadComponent(B);return(0,O.H)([Fe,Ye]).pipe((0,N.U)())}return Fe})}static \u0275fac=function(B){return new(B||m)(o.KVO(Vt),o.KVO(o.Ql9),o.KVO(o.uvJ),o.KVO(ei),o.KVO(Ri))};static \u0275prov=o.jDH({token:m,factory:m.\u0275fac,providedIn:"root"})}return m})();const Vi=new o.nKC("");let ps=(()=>{class m{urlSerializer;transitions;viewportScroller;zone;options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource="imperative";restoredId=0;store={};constructor(_,B,fe,Fe,Ye={}){this.urlSerializer=_,this.transitions=B,this.viewportScroller=fe,this.zone=Fe,this.options=Ye,Ye.scrollPositionRestoration||="disabled",Ye.anchorScrolling||="disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(_=>{_ instanceof yn?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=_.navigationTrigger,this.restoredId=_.restoredState?_.restoredState.navigationId:0):_ instanceof _n?(this.lastId=_.id,this.scheduleScrollEvent(_,this.urlSerializer.parse(_.urlAfterRedirects).fragment)):_ instanceof In&&_.code===qt.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(_,this.urlSerializer.parse(_.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(_=>{_ instanceof Qn&&(_.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(_.position):_.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(_.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(_,B){this.zone.runOutsideAngular(()=>{setTimeout(()=>{this.zone.run(()=>{this.transitions.events.next(new Qn(_,"popstate"===this.lastSource?this.store[this.restoredId]:null,B))})},0)})}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static \u0275fac=function(B){o.QTQ()};static \u0275prov=o.jDH({token:m,factory:m.\u0275fac})}return m})();function Mr(m,...F){return(0,o.EmA)([{provide:ii,multi:!0,useValue:m},[],{provide:Yi,useFactory:Kr,deps:[Vt]},{provide:o.iLQ,multi:!0,useFactory:ms},F.map(_=>_.\u0275providers)])}function Kr(m){return m.routerState.root}function Ur(m,F){return{\u0275kind:m,\u0275providers:F}}function ms(){const m=(0,o.WQX)(o.zZn);return F=>{const _=m.get(o.o8S);if(F!==_.components[0])return;const B=m.get(Vt),fe=m.get(Wd);1===m.get(tc)&&B.initialNavigation(),m.get(Hd,null,o.$GK.Optional)?.setUpPreloading(),m.get(Vi,null,o.$GK.Optional)?.init(),B.resetRootComponentType(_.componentTypes[0]),fe.closed||(fe.next(),fe.complete(),fe.unsubscribe())}}const Wd=new o.nKC("",{factory:()=>new P.B}),tc=new o.nKC("",{providedIn:"root",factory:()=>1}),Hd=new o.nKC("");function Ap(m){return Ur(0,[{provide:Hd,useExisting:So},{provide:ei,useExisting:m}])}function Rp(m){return Ur(9,[{provide:xr,useValue:S},{provide:En,useValue:{skipNextTransition:!!m?.skipInitialTransition,...m}}])}const Pp=[E.aZ,{provide:ft,useClass:le},Vt,tr,{provide:Yi,useFactory:Kr,deps:[Vt]},Ri,[]];let Np=(()=>{class m{constructor(){}static forRoot(_,B){return{ngModule:m,providers:[Pp,[],{provide:ii,multi:!0,useValue:_},[],B?.errorHandler?{provide:$,useValue:B.errorHandler}:[],{provide:Hn,useValue:B||{}},B?.useHash?{provide:E.hb,useClass:E.fw}:{provide:E.hb,useClass:E.Sm},{provide:Vi,useFactory:()=>{const m=(0,o.WQX)(E.Xr),F=(0,o.WQX)(o.SKi),_=(0,o.WQX)(Hn),B=(0,o.WQX)(ue),fe=(0,o.WQX)(ft);return _.scrollOffset&&m.setOffset(_.scrollOffset),new ps(fe,B,m,F,_)}},B?.preloadingStrategy?Ap(B.preloadingStrategy).\u0275providers:[],B?.initialNavigation?nc(B):[],B?.bindToComponentInputs?Ur(8,[Hr,{provide:Cr,useExisting:Hr}]).\u0275providers:[],B?.enableViewTransitions?Rp().\u0275providers:[],[{provide:Ba,useFactory:ms},{provide:o.iLQ,multi:!0,useExisting:Ba}]]}}static forChild(_){return{ngModule:m,providers:[{provide:ii,multi:!0,useValue:_}]}}static \u0275fac=function(B){return new(B||m)};static \u0275mod=o.$C({type:m});static \u0275inj=o.G2t({})}return m})();function nc(m){return["disabled"===m.initialNavigation?Ur(3,[{provide:o.hnV,multi:!0,useFactory:()=>{const F=(0,o.WQX)(Vt);return()=>{F.setUpLocationChangeListener()}}},{provide:tc,useValue:2}]).\u0275providers:[],"enabledBlocking"===m.initialNavigation?Ur(2,[{provide:tc,useValue:0},{provide:o.hnV,multi:!0,deps:[o.zZn],useFactory:F=>{const _=F.get(E.hj,Promise.resolve());return()=>_.then(()=>new Promise(B=>{const fe=F.get(Vt),Fe=F.get(Wd);Yn(fe,()=>{B(!0)}),F.get(ue).afterPreactivation=()=>(B(!0),Fe.closed?(0,d.of)(void 0):Fe),fe.initialNavigation()}))}}]).\u0275providers:[]]}const Ba=new o.nKC("")},4786:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>x});var o=a(4037),c=a(6832),O=a(4888);class w extends O.Ay{constructor(p,g,y){super(p),this.element=g,this.index=y}}const x=class C extends o.A{constructor(p,g){if(super(),this.unique_=!!(g=g||{}).unique,this.array_=p||[],this.unique_)for(let y=0,h=this.array_.length;y0;)this.pop()}extend(p){for(let g=0,y=p.length;gthis.getLength())throw new Error("Index out of bounds: "+p);this.unique_&&this.assertUnique_(g),this.array_.splice(p,0,g),this.updateLength_(),this.dispatchEvent(new w(c.A.ADD,g,p))}pop(){return this.removeAt(this.getLength()-1)}push(p){this.unique_&&this.assertUnique_(p);const g=this.getLength();return this.insertAt(g,p),this.getLength()}remove(p){const g=this.array_;for(let y=0,h=g.length;y=this.getLength())return;const g=this.array_[p];return this.array_.splice(p,1),this.updateLength_(),this.dispatchEvent(new w(c.A.REMOVE,g,p)),g}setAt(p,g){if(p>=this.getLength())return void this.insertAt(p,g);if(p<0)throw new Error("Index out of bounds: "+p);this.unique_&&this.assertUnique_(g,p);const h=this.array_[p];this.array_[p]=g,this.dispatchEvent(new w(c.A.REMOVE,h,p)),this.dispatchEvent(new w(c.A.ADD,g,p))}updateLength_(){this.set("length",this.array_.length)}assertUnique_(p,g){for(let y=0,h=this.array_.length;y{"use strict";a.d(Ie,{A:()=>o});const o={ADD:"add",REMOVE:"remove"}},1208:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>c});const c=class o{constructor(){this.disposed=!1}dispose(){this.disposed||(this.disposed=!0,this.disposeInternal())}disposeInternal(){}}},4958:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>x});var o=a(4037),c=a(8864),O=a(9791),d=a(7443);class w extends o.A{constructor(p){super(),this.id_=void 0,this.geometryName_="geometry",this.style_=null,this.styleFunction_=void 0,this.geometryChangeKey_=null,this.addChangeListener(this.geometryName_,this.handleGeometryChanged_),p&&("function"==typeof p.getSimplifiedGeometry?this.setGeometry(p):this.setProperties(p))}clone(){const p=new w(this.hasProperties()?this.getProperties():null);p.setGeometryName(this.getGeometryName());const g=this.getGeometry();g&&p.setGeometry(g.clone());const y=this.getStyle();return y&&p.setStyle(y),p}getGeometry(){return this.get(this.geometryName_)}getId(){return this.id_}getGeometryName(){return this.geometryName_}getStyle(){return this.style_}getStyleFunction(){return this.styleFunction_}handleGeometryChange_(){this.changed()}handleGeometryChanged_(){this.geometryChangeKey_&&((0,d.JH)(this.geometryChangeKey_),this.geometryChangeKey_=null);const p=this.getGeometry();p&&(this.geometryChangeKey_=(0,d.KT)(p,c.A.CHANGE,this.handleGeometryChange_,this)),this.changed()}setGeometry(p){this.set(this.geometryName_,p)}setStyle(p){this.style_=p,this.styleFunction_=p?function C(D){if("function"==typeof D)return D;let p;return Array.isArray(D)?p=D:((0,O.v)("function"==typeof D.getZIndex,"Expected an `ol/style/Style` or an array of `ol/style/Style.js`"),p=[D]),function(){return p}}(p):void 0,this.changed()}setId(p){this.id_=p,this.changed()}setGeometryName(p){this.removeChangeListener(this.geometryName_,this.handleGeometryChanged_),this.geometryName_=p,this.addChangeListener(this.geometryName_,this.handleGeometryChanged_),this.handleGeometryChanged_()}}const x=w},8701:(ut,Ie,a)=>{"use strict";a.d(Ie,{Ay:()=>h,D4:()=>y,RA:()=>g,f6:()=>D});var o=a(6339),c=a(8864),O=a(7068),d=a(6656),w=a(7443),C=a(6401);function D(u,P,T){const E=u;let W=!0,ne=!1,de=!1;const ie=[(0,w.Jz)(E,c.A.LOAD,function(){de=!0,ne||P()})];return E.src&&d.DT?(ne=!0,E.decode().then(function(){W&&P()}).catch(function(Z){W&&(de?P():T())})):ie.push((0,w.Jz)(E,c.A.ERROR,T)),function(){W=!1,ie.forEach(w.JH)}}function g(u,P){return P&&(u.src=P),u.src&&d.DT?new Promise((T,E)=>u.decode().then(()=>T(u)).catch(W=>u.complete&&u.width?T(u):E(W))):function p(u,P){return new Promise((T,E)=>{function W(){de(),T(u)}function ne(){de(),E(new Error("Image load error"))}function de(){u.removeEventListener("load",W),u.removeEventListener("error",ne)}u.addEventListener("load",W),u.addEventListener("error",ne),P&&(u.src=P)})}(u)}function y(u,P){return P&&(u.src=P),u.src&&d.DT&&d.XM?u.decode().then(()=>createImageBitmap(u)).catch(T=>{if(u.complete&&u.width)return u;throw T}):g(u)}const h=class x extends o.A{constructor(P,T,E,W){super(),this.extent=P,this.pixelRatio_=E,this.resolution=T,this.state="function"==typeof W?O.A.IDLE:W,this.image_=null,this.loader="function"==typeof W?W:null}changed(){this.dispatchEvent(c.A.CHANGE)}getExtent(){return this.extent}getImage(){return this.image_}getPixelRatio(){return this.pixelRatio_}getResolution(){return this.resolution}getState(){return this.state}load(){if(this.state==O.A.IDLE&&this.loader){this.state=O.A.LOADING,this.changed();const P=this.getResolution(),T=Array.isArray(P)?P[0]:P;(0,C.hq)(()=>this.loader(this.getExtent(),T,this.getPixelRatio())).then(E=>{"image"in E&&(this.image_=E.image),"extent"in E&&(this.extent=E.extent),"resolution"in E&&(this.resolution=E.resolution),"pixelRatio"in E&&(this.pixelRatio_=E.pixelRatio),(E instanceof HTMLImageElement||E instanceof ImageBitmap||E instanceof HTMLCanvasElement||E instanceof HTMLVideoElement)&&(this.image_=E),this.state=O.A.LOADED}).catch(E=>{this.state=O.A.ERROR,console.error(E)}).finally(()=>this.changed())}}setImage(P){this.image_=P}setResolution(P){this.resolution=P}}},7068:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>o});const o={IDLE:0,LOADING:1,LOADED:2,ERROR:3,EMPTY:4}},2234:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>c});var o=a(8864);const c={SINGLECLICK:"singleclick",CLICK:o.A.CLICK,DBLCLICK:o.A.DBLCLICK,POINTERDRAG:"pointerdrag",POINTERMOVE:"pointermove",POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",POINTERCANCEL:"pointercancel"}},4037:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>D});var o=a(4888),c=a(6953),O=a(5935),d=a(8618),w=a(973);class C extends o.Ay{constructor(g,y,h){super(g),this.key=y,this.oldValue=h}}const D=class x extends O.A{constructor(g){super(),(0,d.v6)(this),this.values_=null,void 0!==g&&this.setProperties(g)}get(g){let y;return this.values_&&this.values_.hasOwnProperty(g)&&(y=this.values_[g]),y}getKeys(){return this.values_&&Object.keys(this.values_)||[]}getProperties(){return this.values_&&Object.assign({},this.values_)||{}}getPropertiesInternal(){return this.values_}hasProperties(){return!!this.values_}notify(g,y){let h;h=`change:${g}`,this.hasListener(h)&&this.dispatchEvent(new C(h,g,y)),h=c.A.PROPERTYCHANGE,this.hasListener(h)&&this.dispatchEvent(new C(h,g,y))}addChangeListener(g,y){this.addEventListener(`change:${g}`,y)}removeChangeListener(g,y){this.removeEventListener(`change:${g}`,y)}set(g,y,h){const u=this.values_||(this.values_={});if(h)u[g]=y;else{const P=u[g];u[g]=y,P!==y&&this.notify(g,P)}}setProperties(g,y){for(const h in g)this.set(h,g[h],y)}applyProperties(g){g.values_&&Object.assign(this.values_||(this.values_={}),g.values_)}unset(g,y){if(this.values_&&g in this.values_){const h=this.values_[g];delete this.values_[g],(0,w.p)(this.values_)&&(this.values_=null),y||this.notify(g,h)}}}},6953:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>o});const o={PROPERTYCHANGE:"propertychange"}},5935:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>C,e:()=>w});var o=a(6339),c=a(8864),O=a(7443);function w(x){if(Array.isArray(x))for(let D=0,p=x.length;D{"use strict";a.d(Ie,{Ay:()=>ye});var o=a(4037),c=a(8130),O=a(2698),d=a(8828),w=a(3036),C=a(6401),x=a(1504),D=a(9791),p=a(8092);function g(Se,z,te){return function(L,q,J,X,K){if(!L)return;if(!q&&!z)return L;const N=z?0:J[0]*q,V=z?0:J[1]*q,I=K?K[0]:0,M=K?K[1]:0;let j=Se[0]+N/2+I,ge=Se[2]-N/2+I,Me=Se[1]+V/2+M,oe=Se[3]-V/2+M;j>ge&&(j=(ge+j)/2,ge=j),Me>oe&&(Me=(oe+Me)/2,oe=Me);let R=(0,p.qE)(L[0],j,ge),se=(0,p.qE)(L[1],Me,oe);if(X&&te&&q){const Ee=30*q;R+=-Ee*Math.log(1+Math.max(0,j-L[0])/Ee)+Ee*Math.log(1+Math.max(0,L[0]-ge)/Ee),se+=-Ee*Math.log(1+Math.max(0,Me-L[1])/Ee)+Ee*Math.log(1+Math.max(0,L[1]-oe)/Ee)}return[R,se]}}function y(Se){return Se}var h=a(4378),u=a(9609);function P(Se,z,te,L){const q=(0,h.RG)(z)/te[0],J=(0,h.Oq)(z)/te[1];return L?Math.min(Se,Math.max(q,J)):Math.min(Se,Math.min(q,J))}function T(Se,z,te){let L=Math.min(Se,z);return L*=Math.log(1+50*Math.max(0,Se/z-1))/50+1,te&&(L=Math.max(L,te),L/=Math.log(1+50*Math.max(0,te/Se-1))/50+1),(0,p.qE)(L,te/2,2*z)}function ne(Se,z,te,L,q){return te=void 0===te||te,function(J,X,K,N){if(void 0!==J){const V=L?P(Se,L,K,q):Se;return te&&N?T(J,V,z):(0,p.qE)(J,z,V)}}}var de=a(1947),ie=a(1999),Z=a(3213);function _e(Se,z){setTimeout(function(){Se(z)},0)}function ve(Se,z,te,L,q){const J=Math.cos(-q);let X=Math.sin(-q),K=Se[0]*J-Se[1]*X,N=Se[1]*J+Se[0]*X;return K+=(z[0]/2-te[0])*L,N+=(te[1]-z[1]/2)*L,X=-X,[K*J-N*X,N*J+K*X]}const ye=class Le extends o.A{constructor(z){super(),z=Object.assign({},z),this.hints_=[0,0],this.animations_=[],this.projection_=(0,w.Av)(z.projection,"EPSG:3857"),this.viewportSize_=[100,100],this.targetCenter_=null,this.nextCenter_=null,this.cancelAnchor_=void 0,z.projection&&(0,w.RJ)(),z.center&&(z.center=(0,w.Ad)(z.center,this.projection_)),z.extent&&(z.extent=(0,w.SD)(z.extent,this.projection_)),this.applyOptions_(z)}applyOptions_(z){const te=Object.assign({},z);for(const K in O.A)delete te[K];this.setProperties(te,!0);const L=function Ae(Se){let z,te,L,X=void 0!==Se.minZoom?Se.minZoom:0,K=void 0!==Se.maxZoom?Se.maxZoom:28;const N=void 0!==Se.zoomFactor?Se.zoomFactor:2,V=void 0!==Se.multiWorld&&Se.multiWorld,I=void 0===Se.smoothResolutionConstraint||Se.smoothResolutionConstraint,M=void 0!==Se.showFullExtent&&Se.showFullExtent,j=(0,w.Av)(Se.projection,"EPSG:3857"),ge=j.getExtent();let Me=Se.constrainOnlyCenter,oe=Se.extent;if(!V&&!oe&&j.isGlobal()&&(Me=!1,oe=ge),void 0!==Se.resolutions){const R=Se.resolutions;te=R[X],L=void 0!==R[K]?R[K]:R[R.length-1],z=Se.constrainResolution?function E(Se,z,te,L){return z=void 0===z||z,function(q,J,X,K){if(void 0!==q){const N=Se[0],V=Se[Se.length-1],I=te?P(N,te,X,L):N;if(K)return z?T(q,I,V):(0,p.qE)(q,V,I);const M=Math.min(I,q),j=Math.floor((0,u.FT)(Se,M,J));return Se[j]>I&&j1&&"function"==typeof arguments[te-1]&&(L=arguments[te-1],--te);let q=0;for(;q0}getInteracting(){return this.hints_[c.A.INTERACTING]>0}cancelAnimations(){let z;this.setHint(c.A.ANIMATING,-this.hints_[c.A.ANIMATING]);for(let te=0,L=this.animations_.length;te=0;--L){const q=this.animations_[L];let J=!0;for(let X=0,K=q.length;X0?(z-N.start)/N.duration:1;I>=1?(N.complete=!0,I=1):J=!1;const M=N.easing(I);if(N.sourceCenter){const j=N.sourceCenter[0],ge=N.sourceCenter[1],Me=N.targetCenter[0],oe=N.targetCenter[1];this.nextCenter_=N.targetCenter,this.targetCenter_=[j+M*(Me-j),ge+M*(oe-ge)]}if(N.sourceResolution&&N.targetResolution){const j=1===M?N.targetResolution:N.sourceResolution+M*(N.targetResolution-N.sourceResolution);if(N.anchor){const ge=this.getViewportSize_(this.getRotation()),Me=this.constraints_.resolution(j,0,ge,!0);this.targetCenter_=this.calculateCenterZoom(Me,N.anchor)}this.nextResolution_=N.targetResolution,this.targetResolution_=j,this.applyTargetState_(!0)}if(void 0!==N.sourceRotation&&void 0!==N.targetRotation){const j=1===M?(0,p.xP)(N.targetRotation+Math.PI,2*Math.PI)-Math.PI:N.sourceRotation+M*(N.targetRotation-N.sourceRotation);if(N.anchor){const ge=this.constraints_.rotation(j,!0);this.targetCenter_=this.calculateCenterRotate(ge,N.anchor)}this.nextRotation_=N.targetRotation,this.targetRotation_=j}if(this.applyTargetState_(!0),te=!0,!N.complete)break}if(J){this.animations_[L]=null,this.setHint(c.A.ANIMATING,-1),this.nextCenter_=null,this.nextResolution_=NaN,this.nextRotation_=NaN;const X=q[0].callback;X&&_e(X,!0)}}this.animations_=this.animations_.filter(Boolean),te&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}calculateCenterRotate(z,te){let L;const q=this.getCenterInternal();return void 0!==q&&(L=[q[0]-te[0],q[1]-te[1]],(0,x.e$)(L,z-this.getRotation()),(0,x.WQ)(L,te)),L}calculateCenterZoom(z,te){let L;const q=this.getCenterInternal(),J=this.getResolution();return void 0!==q&&void 0!==J&&(L=[te[0]-z*(te[0]-q[0])/J,te[1]-z*(te[1]-q[1])/J]),L}getViewportSize_(z){const te=this.viewportSize_;if(z){const L=te[0],q=te[1];return[Math.abs(L*Math.cos(z))+Math.abs(q*Math.sin(z)),Math.abs(L*Math.sin(z))+Math.abs(q*Math.cos(z))]}return te}setViewportSize(z){this.viewportSize_=Array.isArray(z)?z.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)}getCenter(){const z=this.getCenterInternal();return z&&(0,w.te)(z,this.getProjection())}getCenterInternal(){return this.get(O.A.CENTER)}getConstraints(){return this.constraints_}getConstrainResolution(){return this.get("constrainResolution")}getHints(z){return void 0!==z?(z[0]=this.hints_[0],z[1]=this.hints_[1],z):this.hints_.slice()}calculateExtent(z){const te=this.calculateExtentInternal(z);return(0,w.JR)(te,this.getProjection())}calculateExtentInternal(z){z=z||this.getViewportSizeMinusPadding_();const te=this.getCenterInternal();(0,D.v)(te,"The view center is not defined");const L=this.getResolution();(0,D.v)(void 0!==L,"The view resolution is not defined");const q=this.getRotation();return(0,D.v)(void 0!==q,"The view rotation is not defined"),(0,h.Bg)(te,L,q,z)}getMaxResolution(){return this.maxResolution_}getMinResolution(){return this.minResolution_}getMaxZoom(){return this.getZoomForResolution(this.minResolution_)}setMaxZoom(z){this.applyOptions_(this.getUpdatedOptions_({maxZoom:z}))}getMinZoom(){return this.getZoomForResolution(this.maxResolution_)}setMinZoom(z){this.applyOptions_(this.getUpdatedOptions_({minZoom:z}))}setConstrainResolution(z){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:z}))}getProjection(){return this.projection_}getResolution(){return this.get(O.A.RESOLUTION)}getResolutions(){return this.resolutions_}getResolutionForExtent(z,te){return this.getResolutionForExtentInternal((0,w.SD)(z,this.getProjection()),te)}getResolutionForExtentInternal(z,te){te=te||this.getViewportSizeMinusPadding_();const L=(0,h.RG)(z)/te[0],q=(0,h.Oq)(z)/te[1];return Math.max(L,q)}getResolutionForValueFunction(z){z=z||2;const te=this.getConstrainedResolution(this.maxResolution_),q=Math.log(te/this.minResolution_)/Math.log(z);return function(J){return te/Math.pow(z,J*q)}}getRotation(){return this.get(O.A.ROTATION)}getValueForResolutionFunction(z){const te=Math.log(z||2),L=this.getConstrainedResolution(this.maxResolution_),J=Math.log(L/this.minResolution_)/te;return function(X){return Math.log(L/X)/te/J}}getViewportSizeMinusPadding_(z){let te=this.getViewportSize_(z);const L=this.padding_;return L&&(te=[te[0]-L[1]-L[3],te[1]-L[0]-L[2]]),te}getState(){const z=this.getProjection(),te=this.getResolution(),L=this.getRotation();let q=this.getCenterInternal();const J=this.padding_;if(J){const X=this.getViewportSizeMinusPadding_();q=ve(q,this.getViewportSize_(),[X[0]/2+J[3],X[1]/2+J[0]],te,L)}return{center:q.slice(0),projection:void 0!==z?z:null,resolution:te,nextCenter:this.nextCenter_,nextResolution:this.nextResolution_,nextRotation:this.nextRotation_,rotation:L,zoom:this.getZoom()}}getViewStateAndExtent(){return{viewState:this.getState(),extent:this.calculateExtent()}}getZoom(){let z;const te=this.getResolution();return void 0!==te&&(z=this.getZoomForResolution(te)),z}getZoomForResolution(z){let L,q,te=this.minZoom_||0;if(this.resolutions_){const J=(0,u.FT)(this.resolutions_,z,1);te=J,L=this.resolutions_[J],q=J==this.resolutions_.length-1?2:L/this.resolutions_[J+1]}else L=this.maxResolution_,q=this.zoomFactor_;return te+Math.log(L/z)/Math.log(q)}getResolutionForZoom(z){if(this.resolutions_){if(this.resolutions_.length<=1)return 0;const te=(0,p.qE)(Math.floor(z),0,this.resolutions_.length-2);return this.resolutions_[te]/Math.pow(this.resolutions_[te]/this.resolutions_[te+1],(0,p.qE)(z-te,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,z-this.minZoom_)}fit(z,te){let L;if((0,D.v)(Array.isArray(z)||"function"==typeof z.getSimplifiedGeometry,"Invalid extent or geometry provided as `geometry`"),Array.isArray(z)){(0,D.v)(!(0,h.Im)(z),"Cannot fit empty extent provided as `geometry`");const q=(0,w.SD)(z,this.getProjection());L=(0,Z.VY)(q)}else if("Circle"===z.getType()){const q=(0,w.SD)(z.getExtent(),this.getProjection());L=(0,Z.VY)(q),L.rotate(this.getRotation(),(0,h.q1)(q))}else{const q=(0,w.Tf)();L=q?z.clone().transform(q,this.getProjection()):z}this.fitInternal(L,te)}rotatedExtentForGeometry(z){const te=this.getRotation(),L=Math.cos(te),q=Math.sin(-te),J=z.getFlatCoordinates(),X=z.getStride();let K=1/0,N=1/0,V=-1/0,I=-1/0;for(let M=0,j=J.length;M{"use strict";a.d(Ie,{A:()=>o});const o={ANIMATING:0,INTERACTING:1}},2698:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>o});const o={CENTER:"center",RESOLUTION:"resolution",ROTATION:"rotation"}},9609:(ut,Ie,a)=>{"use strict";function o(y,h,u){let P,T;u=u||c;let E=0,W=y.length,ne=!1;for(;E>1),T=+u(y[P],h),T<0?E=P+1:(W=P,ne=!T);return ne?E:~E}function c(y,h){return y>h?1:yh?-1:0}function d(y,h,u){if(y[0]<=h)return 0;const P=y.length;if(h<=y[P-1])return P-1;if("function"==typeof u){for(let T=1;T0?T-1:T}return P-1}if(u>0){for(let T=1;T0||u&&0===W)})}a.d(Ie,{El:()=>o,FT:()=>d,V_:()=>c,WC:()=>g,X$:()=>C,aI:()=>D,gI:()=>w,rG:()=>O})},9791:(ut,Ie,a)=>{"use strict";function o(c,O){if(!c)throw new Error(O)}a.d(Ie,{v:()=>o})},642:(ut,Ie,a)=>{"use strict";a.d(Ie,{_j:()=>Ce,oJ:()=>W,sH:()=>_e,$C:()=>Ue,cD:()=>Le,S8:()=>Ae,eE:()=>ae,dI:()=>ke,fu:()=>Z});const c={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]};var O={name:"xyz",min:[0,0,0],channel:["X","Y","Z"],alias:["XYZ","ciexyz","cie1931"],whitepoint:{2:{A:[109.85,100,35.585],C:[98.074,100,118.232],D50:[96.422,100,82.521],D55:[95.682,100,92.149],D65:[95.045592705167,100,108.9057750759878],D75:[94.972,100,122.638],F2:[99.187,100,67.395],F7:[95.044,100,108.755],F11:[100.966,100,64.37],E:[100,100,100]},10:{A:[111.144,100,35.2],C:[97.285,100,116.145],D50:[96.72,100,81.427],D55:[95.799,100,90.926],D65:[94.811,100,107.304],D75:[94.416,100,120.641],F2:[103.28,100,69.026],F7:[95.792,100,107.687],F11:[103.866,100,65.627],E:[100,100,100]}}};O.max=O.whitepoint[2].D65,O.rgb=function(ve,ye){var L,q,J,Se=ve[0]/(ye=ye||O.whitepoint[2].E)[0],z=ve[1]/ye[1],te=ve[2]/ye[2];return q=-.96924363628087*Se+1.87596750150772*z+.041555057407175*te,J=.055630079696993*Se+-.20397695888897*z+1.056971514242878*te,L=(L=3.240969941904521*Se+-1.537383177570093*z+-.498610760293*te)>.0031308?1.055*Math.pow(L,1/2.4)-.055:L*=12.92,q=q>.0031308?1.055*Math.pow(q,1/2.4)-.055:q*=12.92,J=J>.0031308?1.055*Math.pow(J,1/2.4)-.055:J*=12.92,[255*(L=Math.min(Math.max(0,L),1)),255*(q=Math.min(Math.max(0,q),1)),255*(J=Math.min(Math.max(0,J),1))]},c.xyz=function(ve,ye){var Se=ve[0]/255,z=ve[1]/255,te=ve[2]/255;return[(.41239079926595*(Se=Se>.04045?Math.pow((Se+.055)/1.055,2.4):Se/12.92)+.35758433938387*(z=z>.04045?Math.pow((z+.055)/1.055,2.4):z/12.92)+.18048078840183*(te=te>.04045?Math.pow((te+.055)/1.055,2.4):te/12.92))*(ye=ye||O.whitepoint[2].E)[0],(.21263900587151*Se+.71516867876775*z+.072192315360733*te)*ye[1],(.019330818715591*Se+.11919477979462*z+.95053215224966*te)*ye[2]]};const d=O,C={name:"luv",min:[0,-134,-140],max:[100,224,122],channel:["lightness","u","v"],alias:["LUV","cieluv","cie1976"],xyz:function(ve,ye,Se){var z,te,L,K,V,I,M;return 0===(L=ve[0])?[0,0,0]:(z=ve[1]/(13*L)+4*(V=d.whitepoint[Se=Se||2][ye=ye||"D65"][0])/(V+15*(I=d.whitepoint[Se][ye][1])+3*(M=d.whitepoint[Se][ye][2]))||0,te=ve[2]/(13*L)+9*I/(V+15*I+3*M)||0,[9*(K=L>8?I*Math.pow((L+16)/116,3):I*L*.0011070564598794539)*z/(4*te)||0,K,K*(12-3*z-20*te)/(4*te)||0])}};d.luv=function(ve,ye,Se){var z,te,L,X,K,N,V,I,M,j,ge;j=4*(V=d.whitepoint[Se=Se||2][ye=ye||"D65"][0])/(V+15*(I=d.whitepoint[Se][ye][1])+3*(M=d.whitepoint[Se][ye][2])),ge=9*I/(V+15*I+3*M),z=4*(X=ve[0])/(X+15*(K=ve[1])+3*(N=ve[2]))||0,te=9*K/(X+15*K+3*N)||0;var R=K/I;return[L=R<=.008856451679035631?903.2962962962961*R:116*Math.pow(R,1/3)-16,13*L*(z-j),13*L*(te-ge)]};var x={name:"lchuv",channel:["lightness","chroma","hue"],alias:["LCHuv","cielchuv"],min:[0,0,0],max:[100,100,360],luv:function(ve){var q,Se=ve[1];return q=ve[2]/360*2*Math.PI,[ve[0],Se*Math.cos(q),Se*Math.sin(q)]},xyz:function(ve){return C.xyz(x.luv(ve))}};const D=x;C.lchuv=function(ve){var ye=ve[0],Se=ve[1],z=ve[2],te=Math.sqrt(Se*Se+z*z),q=360*Math.atan2(z,Se)/2/Math.PI;return q<0&&(q+=360),[ye,te,q]},d.lchuv=function(ve){return C.lchuv(d.luv(ve))};const p={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},g=function h(ve){var ye,te,Se=[],z=1;if("number"==typeof ve)return{space:"rgb",values:[ve>>>16,(65280&ve)>>>8,255&ve],alpha:1};if("number"==typeof ve)return{space:"rgb",values:[ve>>>16,(65280&ve)>>>8,255&ve],alpha:1};if(ve=String(ve).toLowerCase(),p[ve])Se=p[ve].slice(),te="rgb";else if("transparent"===ve)z=0,te="rgb",Se=[0,0,0];else if("#"===ve[0]){var L=ve.slice(1),q=L.length;z=1,q<=4?(Se=[parseInt(L[0]+L[0],16),parseInt(L[1]+L[1],16),parseInt(L[2]+L[2],16)],4===q&&(z=parseInt(L[3]+L[3],16)/255)):(Se=[parseInt(L[0]+L[1],16),parseInt(L[2]+L[3],16),parseInt(L[4]+L[5],16)],8===q&&(z=parseInt(L[6]+L[7],16)/255)),Se[0]||(Se[0]=0),Se[1]||(Se[1]=0),Se[2]||(Se[2]=0),te="rgb"}else if(ye=/^((?:rgba?|hs[lvb]a?|hwba?|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms|oklch|oklab|color))\s*\(([^\)]*)\)/.exec(ve)){var K="cmyk"===(te=ye[1].replace(/a$/,""))?4:"gray"===te?1:3;Se=ye[2].trim().split(/\s*[,\/]\s*|\s+/),"color"===te&&(te=Se.shift()),z=(Se=Se.map(function(N,V){if("%"===N[N.length-1])return N=parseFloat(N)/100,3===V?N:"rgb"===te?255*N:"h"===te[0]||"l"===te[0]&&!V?100*N:"lab"===te?125*N:"lch"===te?V<2?150*N:360*N:"o"!==te[0]||V?"oklab"===te?.4*N:"oklch"===te?V<2?.4*N:360*N:N:N;if("h"===te[V]||2===V&&"h"===te[te.length-1]){if(void 0!==y[N])return y[N];if(N.endsWith("deg"))return parseFloat(N);if(N.endsWith("turn"))return 360*parseFloat(N);if(N.endsWith("grad"))return 360*parseFloat(N)/400;if(N.endsWith("rad"))return 180*parseFloat(N)/Math.PI}return"none"===N?0:parseFloat(N)})).length>K?Se.pop():1}else/[0-9](?:\s|\/|,)/.test(ve)&&(Se=ve.match(/([0-9]+)/g).map(function(N){return parseFloat(N)}),te=ve.match(/([a-z])/gi)?.join("")?.toLowerCase()||"rgb");return{space:te,values:Se,alpha:z}};var y={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};const P={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(ve){var te,L,q,J,X,ye=ve[0]/360,Se=ve[1]/100,z=ve[2]/100,K=0;if(0===Se)return[X=255*z,X,X];for(te=2*z-(L=z<.5?z*(1+Se):z+Se-z*Se),J=[0,0,0];K<3;)(q=ye+1/3*-(K-1))<0?q++:q>1&&q--,J[K++]=255*(X=6*q<1?te+6*(L-te)*q:2*q<1?L:3*q<2?te+(L-te)*(2/3-q)*6:te);return J}};c.hsl=function(ve){var J,K,ye=ve[0]/255,Se=ve[1]/255,z=ve[2]/255,te=Math.min(ye,Se,z),L=Math.max(ye,Se,z),q=L-te;return L===te?J=0:ye===L?J=(Se-z)/q:Se===L?J=2+(z-ye)/q:z===L&&(J=4+(ye-Se)/q),(J=Math.min(60*J,360))<0&&(J+=360),K=(te+L)/2,[J,100*(L===te?0:K<=.5?q/(L+te):q/(2-L-te)),100*K]};var E=a(8092);function W(ve){return"string"==typeof ve?ve:ke(ve)}const ne=1024,de={};let ie=0;function Z(ve){if(4===ve.length)return ve;const ye=ve.slice();return ye[3]=1,ye}function ae(ve){const ye=d.lchuv(c.xyz(ve));return ye[3]=ve[3],ye}function Le(ve){const ye=d.rgb(D.xyz(ve));return ye[3]=ve[3],ye}function _e(ve){if(de.hasOwnProperty(ve))return de[ve];if(ie>=ne){let Se=0;for(const z in de)3&Se++||(delete de[z],--ie)}const ye=function T(ve){Array.isArray(ve)&&ve.raw&&(ve=String.raw(...arguments)),ve instanceof Number&&(ve=+ve);var ye,te=g(ve);if(!te.space)return[];const L="h"===te.space[0]?P.min:c.min,q="h"===te.space[0]?P.max:c.max;return(ye=Array(3))[0]=Math.min(Math.max(te.values[0],L[0]),q[0]),ye[1]=Math.min(Math.max(te.values[1],L[1]),q[1]),ye[2]=Math.min(Math.max(te.values[2],L[2]),q[2]),"h"===te.space[0]&&(ye=P.rgb(ye)),ye.push(Math.min(Math.max(te.alpha,0),1)),ye}(ve);if(4!==ye.length)throw new Error('Failed to parse "'+ve+'" as color');for(const Se of ye)if(isNaN(Se))throw new Error('Failed to parse "'+ve+'" as color');return Ae(ye),de[ve]=ye,++ie,ye}function Ce(ve){return Array.isArray(ve)?ve:_e(ve)}function Ae(ve){return ve[0]=(0,E.qE)(ve[0]+.5|0,0,255),ve[1]=(0,E.qE)(ve[1]+.5|0,0,255),ve[2]=(0,E.qE)(ve[2]+.5|0,0,255),ve[3]=(0,E.qE)(ve[3],0,1),ve}function ke(ve){let ye=ve[0];ye!=(0|ye)&&(ye=ye+.5|0);let Se=ve[1];Se!=(0|Se)&&(Se=Se+.5|0);let z=ve[2];return z!=(0|z)&&(z=z+.5|0),"rgba("+ye+","+Se+","+z+","+(void 0===ve[3]?1:Math.round(1e3*ve[3])/1e3)+")"}function Ue(ve){try{return _e(ve),!0}catch{return!1}}},8896:(ut,Ie,a)=>{"use strict";a.d(Ie,{F:()=>C});var o=a(7068),c=a(5664),O=a(3436),d=a(7048),w=a(642);function C(D){return D?Array.isArray(D)?(0,w.dI)(D):"object"==typeof D&&"src"in D?function x(D){if(!D.offset||!D.size)return d.ue.getPattern(D.src,"anonymous",D.color);const p=D.src+":"+D.offset,g=d.ue.getPattern(p,void 0,D.color);if(g)return g;const y=d.ue.get(D.src,"anonymous",null);if(y.getImageState()!==o.A.LOADED)return null;const h=(0,c.Y)(D.size[0],D.size[1]);return h.drawImage(y.getImage(1),D.offset[0],D.offset[1],D.size[0],D.size[1],0,0,D.size[0],D.size[1]),(0,O.J)(h.canvas,p,void 0,o.A.LOADED,D.color,!0),d.ue.getPattern(p,void 0,D.color)}(D):D:null}},4205:(ut,Ie,a)=>{"use strict";a.d(Ie,{R8:()=>w});const o={info:1,warn:2,error:3,none:4};let c=o.info;function w(...x){c>o.warn||console.warn(...x)}},1504:(ut,Ie,a)=>{"use strict";a.d(Ie,{$x:()=>u,GP:()=>x,Io:()=>h,Li:()=>E,WQ:()=>c,aI:()=>D,e$:()=>p,hG:()=>y,hs:()=>g,sG:()=>d});var o=a(4378);function c(ne,de){return ne[0]+=+de[0],ne[1]+=+de[1],ne}function d(ne,de){const ae=de[0],Le=de[1],_e=ae[0],Ce=ae[1],Ae=Le[0],ke=Le[1],Ue=Ae-_e,ve=ke-Ce,ye=0===Ue&&0===ve?0:(Ue*(ne[0]-_e)+ve*(ne[1]-Ce))/(Ue*Ue+ve*ve||0);let Se,z;return ye<=0?(Se=_e,z=Ce):ye>=1?(Se=Ae,z=ke):(Se=_e+ye*Ue,z=Ce+ye*ve),[Se,z]}function x(ne,de,ie){return ne?de.replace("{x}",ne[0].toFixed(ie)).replace("{y}",ne[1].toFixed(ie)):""}function D(ne,de){let ie=!0;for(let Z=ne.length-1;Z>=0;--Z)if(ne[Z]!=de[Z]){ie=!1;break}return ie}function p(ne,de){const ie=Math.cos(de),Z=Math.sin(de),Le=ne[1]*ie+ne[0]*Z;return ne[0]=ne[0]*ie-ne[1]*Z,ne[1]=Le,ne}function g(ne,de){return ne[0]*=de,ne[1]*=de,ne}function y(ne,de){const ie=ne[0]-de[0],Z=ne[1]-de[1];return ie*ie+Z*Z}function h(ne,de){return Math.sqrt(y(ne,de))}function u(ne,de){return y(ne,d(ne,de))}function E(ne,de){if(de.canWrapX()){const ie=(0,o.RG)(de.getExtent()),Z=function W(ne,de,ie){const Z=de.getExtent();let ae=0;return de.canWrapX()&&(ne[0]Z[2])&&(ie=ie||(0,o.RG)(Z),ae=Math.floor((ne[0]-Z[0])/ie)),ae}(ne,de,ie);Z&&(ne[0]-=Z*ie)}return ne}},215:(ut,Ie,a)=>{"use strict";a.d(Ie,{$N:()=>w,K5:()=>p,Q5:()=>c,Si:()=>o,Vv:()=>d,XI:()=>O,nT:()=>C});const o="ol-hidden",c="ol-selectable",O="ol-unselectable",d="ol-unsupported",w="ol-control",C="ol-collapsed",x=new RegExp(["^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)","(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?","(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))","(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))","?\\s*([-,\\\"\\'\\sa-z]+?)\\s*$"].join(""),"i"),D=["style","variant","weight","size","lineHeight","family"],p=function(g){const y=g.match(x);if(!y)return null;const h={lineHeight:"normal",size:"1.2em",style:"normal",weight:"normal",variant:"normal"};for(let u=0,P=D.length;u{"use strict";a.d(Ie,{DK:()=>x,Gq:()=>C,WM:()=>y,Y:()=>c,Yg:()=>w,bf:()=>p,fo:()=>D,gS:()=>g,lr:()=>d});var o=a(6656);function c(h,u,P,T){let E;return E=P&&P.length?P.shift():o.Wl?new OffscreenCanvas(h||300,u||300):document.createElement("canvas"),h&&(E.width=h),u&&(E.height=u),E.getContext("2d",T)}let O;function d(){return O||(O=c(1,1)),O}function w(h){const u=h.canvas;u.width=1,u.height=1,h.clearRect(0,0,1,1)}function C(h){let u=h.offsetWidth;const P=getComputedStyle(h);return u+=parseInt(P.marginLeft,10)+parseInt(P.marginRight,10),u}function x(h){let u=h.offsetHeight;const P=getComputedStyle(h);return u+=parseInt(P.marginTop,10)+parseInt(P.marginBottom,10),u}function D(h,u){const P=u.parentNode;P&&P.replaceChild(h,u)}function p(h){return h&&h.parentNode?h.parentNode.removeChild(h):null}function g(h){for(;h.lastChild;)h.removeChild(h.lastChild)}function y(h,u){const P=h.childNodes;for(let T=0;;++T){const E=P[T],W=u[T];if(!E&&!W)break;if(E!==W){if(!E){h.appendChild(W);continue}if(!W){h.removeChild(E),--T;continue}h.insertBefore(W,E)}}}},1999:(ut,Ie,a)=>{"use strict";function o(C){return Math.pow(C,3)}function c(C){return 1-o(1-C)}function O(C){return 3*C*C-2*C*C*C}function d(C){return C}a.d(Ie,{T9:()=>O,a6:()=>o,sn:()=>d,vT:()=>c})},7443:(ut,Ie,a)=>{"use strict";a.d(Ie,{JH:()=>d,Jz:()=>O,KT:()=>c});var o=a(973);function c(w,C,x,D,p){if(D&&D!==w&&(x=x.bind(D)),p){const y=x;x=function(){w.removeEventListener(C,x),y.apply(this,arguments)}}const g={target:w,type:C,listener:x};return w.addEventListener(C,x),g}function O(w,C,x,D){return c(w,C,x,D,!0)}function d(w){w&&w.target&&(w.target.removeEventListener(w.type,w.listener),(0,o.I)(w))}},4888:(ut,Ie,a)=>{"use strict";a.d(Ie,{Ay:()=>d});const d=class o{constructor(C){this.type=C,this.target=null}preventDefault(){this.defaultPrevented=!0}stopPropagation(){this.propagationStopped=!0}}},8864:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>o});const o={CHANGE:"change",ERROR:"error",BLUR:"blur",CLEAR:"clear",CONTEXTMENU:"contextmenu",CLICK:"click",DBLCLICK:"dblclick",DRAGENTER:"dragenter",DRAGOVER:"dragover",DROP:"drop",FOCUS:"focus",KEYDOWN:"keydown",KEYPRESS:"keypress",LOAD:"load",RESIZE:"resize",TOUCHMOVE:"touchmove",WHEEL:"wheel"}},6339:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>C});var o=a(1208),c=a(4888),O=a(6401),d=a(973);const C=class w extends o.A{constructor(D){super(),this.eventTarget_=D,this.pendingRemovals_=null,this.dispatching_=null,this.listeners_=null}addEventListener(D,p){if(!D||!p)return;const g=this.listeners_||(this.listeners_={}),y=g[D]||(g[D]=[]);y.includes(p)||y.push(p)}dispatchEvent(D){const p="string"==typeof D,g=p?D:D.type,y=this.listeners_&&this.listeners_[g];if(!y)return;const h=p?new c.Ay(D):D;h.target||(h.target=this.eventTarget_||this);const u=this.dispatching_||(this.dispatching_={}),P=this.pendingRemovals_||(this.pendingRemovals_={});let T;g in u||(u[g]=0,P[g]=0),++u[g];for(let E=0,W=y.length;E0)}removeEventListener(D,p){if(!this.listeners_)return;const g=this.listeners_[D];if(!g)return;const y=g.indexOf(p);-1!==y&&(this.pendingRemovals_&&D in this.pendingRemovals_?(g[y]=O.tV,++this.pendingRemovals_[D]):(g.splice(y,1),0===g.length&&delete this.listeners_[D]))}}},3301:(ut,Ie,a)=>{"use strict";a.d(Ie,{A4:()=>ae,GB:()=>de,Gk:()=>g,IO:()=>x,Js:()=>C,Kg:()=>ie,Q7:()=>w,TS:()=>W,Zm:()=>u,at:()=>h,eL:()=>p,fs:()=>Ce,t5:()=>T,tE:()=>Z});var o=a(2234),c=a(6401),O=a(6656),d=a(9791);function w(Ae){const ke=arguments;return function(Ue){let ve=!0;for(let ye=0,Se=ke.length;ye{"use strict";a.d(Ie,{DG:()=>ne,Fq:()=>p,SR:()=>de,T8:()=>w,Xj:()=>E,Ye:()=>I,ZD:()=>ae,_D:()=>W,cT:()=>x,go:()=>u,ho:()=>T,j:()=>d,mE:()=>D,qg:()=>Z,wl:()=>C});var o=a(9609),c=a(642);let O=0;const d=0,w=1<",GreaterThanOrEqualTo:">=",LessThan:"<",LessThanOrEqualTo:"<=",Multiply:"*",Divide:"/",Add:"+",Subtract:"-",Clamp:"clamp",Mod:"%",Pow:"^",Abs:"abs",Floor:"floor",Ceil:"ceil",Round:"round",Sin:"sin",Cos:"cos",Atan:"atan",Sqrt:"sqrt",Match:"match",Between:"between",Interpolate:"interpolate",Coalesce:"coalesce",Case:"case",In:"in",Number:"number",String:"string",Array:"array",Color:"color",Id:"id",Band:"band",Palette:"palette"},Le={[ae.Get]:N(([M,j])=>void 0!==j?function ie(M){switch(M){case"string":return x;case"color":return D;case"number":return C;case"boolean":return w;case"number[]":return p;default:throw new Error(`Unrecognized type hint: ${M}`)}}(j.value):g,ve(1,2),function _e(M,j){const ge=Z(M[1],j);if(!(ge instanceof W))throw new Error("Expected a literal argument for get operation");if("string"!=typeof ge.value)throw new Error("Expected a string argument for get operation");return j.properties.add(ge.value),3===M.length?[ge,Z(M[2],j)]:[ge]}),[ae.Var]:N(([M])=>M.type,ve(1,1),function Ce(M,j,ge,Me){const oe=M[1];if("string"!=typeof oe)throw new Error("Expected a string argument for var operation");if(j.variables.add(oe),!("variables"in j.style)||void 0===j.style.variables[oe])return[new W(g,oe)];const se=Z(j.style.variables[oe],j);if(se.value=oe,Me&&!T(Me,se.type))throw new Error(`The variable ${oe} has type ${u(se.type)} but the following type was expected: ${u(Me)}`);return[se]}),[ae.Id]:N(C|x,Ue,function Ae(M,j){j.featureId=!0}),[ae.Concat]:N(x,ve(2,1/0),ye(g)),[ae.GeometryType]:N(x,Ue,function ke(M,j){j.geometryType=!0}),[ae.Resolution]:N(C,Ue),[ae.Zoom]:N(C,Ue),[ae.Time]:N(C,Ue),[ae.Any]:N(w,ve(2,1/0),ye(w)),[ae.All]:N(w,ve(2,1/0),ye(w)),[ae.Not]:N(w,ve(1,1),ye(w)),[ae.Equal]:N(w,ve(2,2),ye(g),Se),[ae.NotEqual]:N(w,ve(2,2),ye(g),Se),[ae.GreaterThan]:N(w,ve(2,2),ye(g),Se),[ae.GreaterThanOrEqualTo]:N(w,ve(2,2),ye(g),Se),[ae.LessThan]:N(w,ve(2,2),ye(g),Se),[ae.LessThanOrEqualTo]:N(w,ve(2,2),ye(g),Se),[ae.Multiply]:N(M=>{let j=C|D;for(let ge=0;ge{let j=g;for(let ge=1;ge{let j=g;for(let ge=2;ge{let j=D|C;for(let ge=3;ge{let j=g;for(let ge=1;ge3===M.length||4===M.length?p|D:p,ve(1,1/0),ye(C)),[ae.Color]:N(D,ve(1,4),ye(C)),[ae.Band]:N(C,ve(1,3),ye(C)),[ae.Palette]:N(D,ve(2,2),function K(M,j){const ge=Z(M[1],j,C);if(ge.type!==C)throw new Error(`The first argument of palette must be an number, got ${u(ge.type)} instead`);const Me=M[2];if(!Array.isArray(Me))throw new Error("The second argument of palette must be an array");const oe=new Array(Me.length);for(let R=0;Rj)throw new Error(`Expected ${j===1/0?`${M} or more`:`${M} to ${j}`} arguments for ${oe}, got ${R}`)}}function ye(M){return function(j,ge){const Me=j[0],oe=j.length-1,R=new Array(oe);for(let se=0;se{"use strict";a.d(Ie,{$C:()=>Z,$u:()=>Me,Af:()=>oe,Bg:()=>te,HY:()=>j,Im:()=>ge,Ld:()=>C,Li:()=>Ee,Mx:()=>R,N:()=>h,NW:()=>se,Oq:()=>q,Py:()=>V,QJ:()=>tt,R:()=>Ue,R8:()=>Le,RG:()=>M,Rj:()=>p,S5:()=>y,Tr:()=>c,UG:()=>ke,Vy:()=>E,WU:()=>I,X$:()=>ie,Ym:()=>x,Yw:()=>L,_N:()=>X,aI:()=>ne,aZ:()=>u,dP:()=>P,k_:()=>ve,ms:()=>D,o8:()=>w,q1:()=>ye,qF:()=>Se,r:()=>d,sB:()=>Ae,vz:()=>g});var o=a(5479);function c(Y){const Re=[1/0,1/0,-1/0,-1/0];for(let De=0,nt=Y.length;DeY[2]&&(ln|=o.A.RIGHT),onY[3]&&(ln|=o.A.ABOVE),ln===o.A.UNKNOWN&&(ln=o.A.INTERSECTING),ln}function y(){return[1/0,1/0,-1/0,-1/0]}function h(Y,Re,De,nt,ht){return ht?(ht[0]=Y,ht[1]=Re,ht[2]=De,ht[3]=nt,ht):[Y,Re,De,nt]}function u(Y){return h(1/0,1/0,-1/0,-1/0,Y)}function P(Y,Re){const De=Y[0],nt=Y[1];return h(De,nt,De,nt,Re)}function E(Y,Re,De,nt,ht){return Le(u(ht),Y,Re,De,nt)}function ne(Y,Re){return Y[0]==Re[0]&&Y[2]==Re[2]&&Y[1]==Re[1]&&Y[3]==Re[3]}function ie(Y,Re){return Re[0]Y[2]&&(Y[2]=Re[2]),Re[1]Y[3]&&(Y[3]=Re[3]),Y}function Z(Y,Re){Re[0]Y[2]&&(Y[2]=Re[0]),Re[1]Y[3]&&(Y[3]=Re[1])}function Le(Y,Re,De,nt,ht){for(;DeRe[0]?Y[0]:Re[0],nt[1]=Y[1]>Re[1]?Y[1]:Re[1],nt[2]=Y[2]=Re[0]&&Y[1]<=Re[3]&&Y[3]>=Re[1]}function ge(Y){return Y[2]=Nt&&Ke<=ln),!nt&&jt&o.A.RIGHT&&!(ht&o.A.RIGHT)&&(ft=re-(ee-ln)*be,nt=ft>=on&&ft<=Ot),!nt&&jt&o.A.BELOW&&!(ht&o.A.BELOW)&&(Ke=ee-(re-on)/be,nt=Ke>=Nt&&Ke<=ln),!nt&&jt&o.A.LEFT&&!(ht&o.A.LEFT)&&(ft=re-(ee-Nt)*be,nt=ft>=on&&ft<=Ot)}return nt}function se(Y,Re,De,nt){if(ge(Y))return u(De);let ht=[];if(nt>1){const on=Y[2]-Y[0],ln=Y[3]-Y[1];for(let Ot=0;Ot=De[2])){const ht=M(De),Nt=Math.floor((nt[0]-De[0])/ht)*ht;Y[0]-=Nt,Y[2]-=Nt}return Y}function tt(Y,Re){if(Re.canWrapX()){const De=Re.getExtent();if(!isFinite(Y[0])||!isFinite(Y[2]))return[[De[0],Y[1],De[2],Y[3]]];Ee(Y,Re);const nt=M(De);if(M(Y)>nt)return[[De[0],Y[1],De[2],Y[3]]];if(Y[0]De[2])return[[Y[0],Y[1],De[2],Y[3]],[De[0],Y[1],Y[2]-nt,Y[3]]]}return[Y]}},5479:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>o});const o={UNKNOWN:0,INTERSECTING:1,ABOVE:2,RIGHT:4,BELOW:8,LEFT:16}},6401:(ut,Ie,a)=>{"use strict";a.d(Ie,{B4:()=>w,W8:()=>O,hq:()=>C,rT:()=>c,tV:()=>d});var o=a(9609);function c(){return!0}function O(){return!1}function d(){}function w(x){let p,g,y,D=!1;return function(){const h=Array.prototype.slice.call(arguments);return(!D||this!==y||!(0,o.aI)(h,g))&&(D=!0,y=this,g=h,p=x.apply(this,arguments)),p}}function C(x){return function D(){let p;try{p=x()}catch(g){return Promise.reject(g)}return p instanceof Promise?p:Promise.resolve(p)}()}},7469:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>g});var o=a(4037),c=a(8618),O=a(9984),d=a(4378),w=a(3036),C=a(6401),x=a(7133);const D=(0,O.vt)(),g=class p extends o.A{constructor(){super(),this.extent_=(0,d.S5)(),this.extentRevision_=-1,this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=0,this.simplifyTransformedInternal=(0,C.B4)((h,u,P)=>{if(!P)return this.getSimplifiedGeometry(u);const T=this.clone();return T.applyTransform(P),T.getSimplifiedGeometry(u)})}simplifyTransformed(h,u){return this.simplifyTransformedInternal(this.getRevision(),h,u)}clone(){return(0,c.b0)()}closestPointXY(h,u,P,T){return(0,c.b0)()}containsXY(h,u){const P=this.getClosestPoint([h,u]);return P[0]===h&&P[1]===u}getClosestPoint(h,u){return this.closestPointXY(h[0],h[1],u=u||[NaN,NaN],1/0),u}intersectsCoordinate(h){return this.containsXY(h[0],h[1])}computeExtent(h){return(0,c.b0)()}getExtent(h){if(this.extentRevision_!=this.getRevision()){const u=this.computeExtent(this.extent_);(isNaN(u[0])||isNaN(u[1]))&&(0,d.aZ)(u),this.extentRevision_=this.getRevision()}return(0,d.$u)(this.extent_,h)}rotate(h,u){(0,c.b0)()}scale(h,u,P){(0,c.b0)()}simplify(h){return this.getSimplifiedGeometry(h*h)}getSimplifiedGeometry(h){return(0,c.b0)()}getType(){return(0,c.b0)()}applyTransform(h){(0,c.b0)()}intersectsExtent(h){return(0,c.b0)()}translate(h,u){(0,c.b0)()}transform(h,u){const P=(0,w.Jt)(h),T="tile-pixels"==P.getUnits()?function(E,W,ne){const de=P.getExtent(),ie=P.getWorldExtent(),Z=(0,d.Oq)(ie)/(0,d.Oq)(de);return(0,O.Zz)(D,ie[0],ie[3],Z,-Z,0,0,0),(0,x.Rc)(E,0,E.length,ne,D,W),(0,w.RG)(P,u)(E,W,ne)}:(0,w.RG)(P,u);return this.applyTransform(T),this}}},6558:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>u});var o=a(9179),c=a(6522),O=a(4378),d=a(7910),w=a(6022),C=a(9609),x=a(2191),D=a(822),p=a(3578),g=a(8183),y=a(5545);class h extends o.Ay{constructor(T,E){super(),this.flatMidpoint_=null,this.flatMidpointRevision_=-1,this.maxDelta_=-1,this.maxDeltaRevision_=-1,void 0===E||Array.isArray(T[0])?this.setCoordinates(T,E):this.setFlatCoordinates(E,T)}appendCoordinate(T){(0,C.X$)(this.flatCoordinates,T),this.changed()}clone(){const T=new h(this.flatCoordinates.slice(),this.layout);return T.applyProperties(this),T}closestPointXY(T,E,W,ne){return ne<(0,O.Ld)(this.getExtent(),T,E)?ne:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt((0,c.MD)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),(0,c.n)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,this.maxDelta_,!1,T,E,W,ne))}forEachSegment(T){return(0,x.j)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,T)}getCoordinateAtM(T,E){return"XYM"!=this.layout&&"XYZM"!=this.layout?null:(0,p.gr)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,T,E=void 0!==E&&E)}getCoordinates(){return(0,D.n2)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getCoordinateAt(T,E){return(0,p.SH)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,T,E,this.stride)}getLength(){return(0,y.k)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getFlatMidpoint(){return this.flatMidpointRevision_!=this.getRevision()&&(this.flatMidpoint_=this.getCoordinateAt(.5,this.flatMidpoint_??void 0),this.flatMidpointRevision_=this.getRevision()),this.flatMidpoint_}getSimplifiedGeometryInternal(T){const E=[];return E.length=(0,w.P4)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,T,E,0),new h(E,"XY")}getType(){return"LineString"}intersectsExtent(T){return(0,g.gp)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,T)}setCoordinates(T,E){this.setLayout(E,T,1),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=(0,d.z2)(this.flatCoordinates,0,T,this.stride),this.changed()}}const u=h},8791:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>C});var o=a(9179),c=a(4378),O=a(7910),d=a(8092);class w extends o.Ay{constructor(D,p){super(),this.setCoordinates(D,p)}clone(){const D=new w(this.flatCoordinates.slice(),this.layout);return D.applyProperties(this),D}closestPointXY(D,p,g,y){const h=this.flatCoordinates,u=(0,d.hG)(D,p,h[0],h[1]);if(u{"use strict";a.d(Ie,{Ay:()=>ne,nD:()=>Z,VY:()=>ie});var o=a(9179),c=a(6522),O=a(4378),d=a(7910),w=a(6022),C=a(822),x=a(7356);class D extends o.Ay{constructor(_e,Ce){super(),this.maxDelta_=-1,this.maxDeltaRevision_=-1,void 0===Ce||Array.isArray(_e[0])?this.setCoordinates(_e,Ce):this.setFlatCoordinates(Ce,_e)}clone(){return new D(this.flatCoordinates.slice(),this.layout)}closestPointXY(_e,Ce,Ae,ke){return ke<(0,O.Ld)(this.getExtent(),_e,Ce)?ke:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt((0,c.MD)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),(0,c.n)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,this.maxDelta_,!0,_e,Ce,Ae,ke))}getArea(){return(0,x.eN)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getCoordinates(){return(0,C.n2)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getSimplifiedGeometryInternal(_e){const Ce=[];return Ce.length=(0,w.P4)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,_e,Ce,0),new D(Ce,"XY")}getType(){return"LinearRing"}intersectsExtent(_e){return!1}setCoordinates(_e,Ce){this.setLayout(Ce,_e,1),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=(0,d.z2)(this.flatCoordinates,0,_e,this.stride),this.changed()}}const p=D;var g=a(8791),y=a(9609),h=a(6603),u=a(8183),P=a(3939),T=a(1372),E=a(8092);class W extends o.Ay{constructor(_e,Ce,Ae){super(),this.ends_=[],this.flatInteriorPointRevision_=-1,this.flatInteriorPoint_=null,this.maxDelta_=-1,this.maxDeltaRevision_=-1,this.orientedRevision_=-1,this.orientedFlatCoordinates_=null,void 0!==Ce&&Ae?(this.setFlatCoordinates(Ce,_e),this.ends_=Ae):this.setCoordinates(_e,Ce)}appendLinearRing(_e){this.flatCoordinates?(0,y.X$)(this.flatCoordinates,_e.getFlatCoordinates()):this.flatCoordinates=_e.getFlatCoordinates().slice(),this.ends_.push(this.flatCoordinates.length),this.changed()}clone(){const _e=new W(this.flatCoordinates.slice(),this.layout,this.ends_.slice());return _e.applyProperties(this),_e}closestPointXY(_e,Ce,Ae,ke){return ke<(0,O.Ld)(this.getExtent(),_e,Ce)?ke:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt((0,c.HX)(this.flatCoordinates,0,this.ends_,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),(0,c.oW)(this.flatCoordinates,0,this.ends_,this.stride,this.maxDelta_,!0,_e,Ce,Ae,ke))}containsXY(_e,Ce){return(0,T.zb)(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride,_e,Ce)}getArea(){return(0,x.PK)(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride)}getCoordinates(_e){let Ce;return void 0!==_e?(Ce=this.getOrientedFlatCoordinates().slice(),(0,P.ug)(Ce,0,this.ends_,this.stride,_e)):Ce=this.flatCoordinates,(0,C.cD)(Ce,0,this.ends_,this.stride)}getEnds(){return this.ends_}getFlatInteriorPoint(){if(this.flatInteriorPointRevision_!=this.getRevision()){const _e=(0,O.q1)(this.getExtent());this.flatInteriorPoint_=(0,h.J)(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride,_e,0),this.flatInteriorPointRevision_=this.getRevision()}return this.flatInteriorPoint_}getInteriorPoint(){return new g.A(this.getFlatInteriorPoint(),"XYM")}getLinearRingCount(){return this.ends_.length}getLinearRing(_e){return _e<0||this.ends_.length<=_e?null:new p(this.flatCoordinates.slice(0===_e?0:this.ends_[_e-1],this.ends_[_e]),this.layout)}getLinearRings(){const _e=this.layout,Ce=this.flatCoordinates,Ae=this.ends_,ke=[];let Ue=0;for(let ve=0,ye=Ae.length;ve{"use strict";a.d(Ie,{Ay:()=>p,dn:()=>x,v7:()=>D});var o=a(7469),c=a(8618),O=a(4378),d=a(7133);function x(g){let y;return"XY"==g?y=2:"XYZ"==g||"XYM"==g?y=3:"XYZM"==g&&(y=4),y}function D(g,y,h){const u=g.getFlatCoordinates();if(!u)return null;const P=g.getStride();return(0,d.Rc)(u,0,u.length,P,y,h)}const p=class w extends o.A{constructor(){super(),this.layout="XY",this.stride=2}computeExtent(y){return(0,O.Vy)(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,y)}getCoordinates(){return(0,c.b0)()}getFirstCoordinate(){return this.flatCoordinates.slice(0,this.stride)}getFlatCoordinates(){return this.flatCoordinates}getLastCoordinate(){return this.flatCoordinates.slice(this.flatCoordinates.length-this.stride)}getLayout(){return this.layout}getSimplifiedGeometry(y){if(this.simplifiedGeometryRevision!==this.getRevision()&&(this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=this.getRevision()),y<0||0!==this.simplifiedGeometryMaxMinSquaredTolerance&&y<=this.simplifiedGeometryMaxMinSquaredTolerance)return this;const h=this.getSimplifiedGeometryInternal(y);return h.getFlatCoordinates().length{"use strict";function o(d,w,C,x){let D=0,p=d[C-x],g=d[C-x+1];for(;wO,PK:()=>c,eN:()=>o})},2052:(ut,Ie,a)=>{"use strict";a.d(Ie,{C:()=>c});var o=a(4378);function c(O,d,w,C){const x=[];let D=(0,o.S5)();for(let p=0,g=w.length;p{"use strict";a.d(Ie,{HX:()=>d,MD:()=>O,c:()=>w,n:()=>C,oW:()=>x,te:()=>D});var o=a(8092);function c(p,g,y,h,u,P,T){const E=p[g],W=p[g+1],ne=p[y]-E,de=p[y+1]-W;let ie;if(0===ne&&0===de)ie=g;else{const Z=((u-E)*ne+(P-W)*de)/(ne*ne+de*de);if(Z>1)ie=y;else{if(Z>0){for(let ae=0;aeu&&(u=ne),P=E,T=W}return u}function d(p,g,y,h,u){for(let P=0,T=y.length;P{"use strict";a.d(Ie,{Gd:()=>w,a_:()=>O,t7:()=>c,zb:()=>d});var o=a(4378);function c(C,x,D,p,g){return!(0,o.sB)(g,function(h){return!O(C,x,D,p,h[0],h[1])})}function O(C,x,D,p,g,y){let h=0,u=C[D-p],P=C[D-p+1];for(;xy&&(T-u)*(y-P)-(g-u)*(E-P)>0&&h++:E<=y&&(T-u)*(y-P)-(g-u)*(E-P)<0&&h--,u=T,P=E}return 0!==h}function d(C,x,D,p,g,y){if(0===D.length||!O(C,x,D[0],p,g,y))return!1;for(let h=1,u=D.length;h{"use strict";function o(w,C,x,D){for(let p=0,g=x.length;pO,_n:()=>o,d6:()=>d,z2:()=>c})},822:(ut,Ie,a)=>{"use strict";function o(d,w,C,x,D){D=void 0!==D?D:[];let p=0;for(let g=w;gO,cD:()=>c,n2:()=>o})},6603:(ut,Ie,a)=>{"use strict";a.d(Ie,{J:()=>O,p:()=>d});var o=a(9609),c=a(1372);function O(w,C,x,D,p,g,y){let h,u,P,T,E,W,ne;const de=p[g+1],ie=[];for(let Le=0,_e=x.length;Le<_e;++Le){const Ce=x[Le];for(T=w[Ce-D],W=w[Ce-D+1],h=C;hae&&(P=(T+E)/2,(0,c.zb)(w,C,x,D,P,de)&&(Z=P,ae=Le)),T=E}return isNaN(Z)&&(Z=p[g]),y?(y.push(Z,de,ae),y):[Z,de,ae]}function d(w,C,x,D,p){let g=[];for(let y=0,h=x.length;y{"use strict";a.d(Ie,{L8:()=>w,SH:()=>O,gr:()=>d});var o=a(9609),c=a(8092);function O(C,x,D,p,g,y,h){let u,P;const T=(D-x)/p;if(1===T)u=x;else if(2===T)u=x,P=g;else if(0!==T){let E=C[x],W=C[x+1],ne=0;const de=[0];for(let ae=x+p;ae1?h:2,y=y||new Array(h);for(let E=0;E>1;g{"use strict";a.d(Ie,{HT:()=>x,Wp:()=>D,fB:()=>w,gp:()=>d,sj:()=>C});var o=a(4378),c=a(2191),O=a(1372);function d(p,g,y,h,u){const P=(0,o.R8)((0,o.S5)(),p,g,y,h);return!!(0,o.HY)(u,P)&&(!!((0,o.ms)(u,P)||P[0]>=u[0]&&P[2]<=u[2]||P[1]>=u[1]&&P[3]<=u[3])||(0,c.j)(p,g,y,h,function(T,E){return(0,o.Mx)(u,T,E)}))}function w(p,g,y,h,u){for(let P=0,T=y.length;P{"use strict";function o(O,d,w,C){let x=O[d],D=O[d+1],p=0;for(let g=d+C;go})},3939:(ut,Ie,a)=>{"use strict";function o(D,p,g,y){for(;p0}function O(D,p,g,y,h){h=void 0!==h&&h;for(let u=0,P=g.length;ux,PA:()=>O,mb:()=>d,ug:()=>w,NK:()=>C})},2191:(ut,Ie,a)=>{"use strict";function o(c,O,d,w,C){let x;for(O+=w;Oo})},6022:(ut,Ie,a)=>{"use strict";a.d(Ie,{AL:()=>d,Hg:()=>p,P4:()=>O,n$:()=>x,sx:()=>g});var o=a(8092);function O(y,h,u,P,T,E,W){const ne=(u-h)/P;if(ne<3){for(;h0;){const ae=ie.pop(),Le=ie.pop();let _e=0;const Ce=y[Le],Ae=y[Le+1],ke=y[ae],Ue=y[ae+1];for(let ve=Le+P;ve_e&&(Z=ve,_e=z)}_e>T&&(de[(Z-h)/P]=1,Le+P0&&Ae>_e)&&(Ce<0&&ke0&&ke>Ce)?(ie=ae,Z=Le):(E[W++]=ie,E[W++]=Z,ne=ie,de=Z,ie=ae,Z=Le)}return E[W++]=ie,E[W++]=Z,W}function p(y,h,u,P,T,E,W,ne){for(let de=0,ie=u.length;de{"use strict";function o(w,C,x,D,p,g){g=g||[];let y=0;for(let h=C;ho,Tl:()=>d,e$:()=>c,hs:()=>O})},6656:(ut,Ie,a)=>{"use strict";a.d(Ie,{DT:()=>p,FT:()=>y,Wl:()=>D,XM:()=>g,_p:()=>c,cr:()=>x,ew:()=>C,j:()=>w,oF:()=>d});const o=typeof navigator<"u"&&typeof navigator.userAgent<"u"?navigator.userAgent.toLowerCase():"",c=o.includes("firefox"),d=o.includes("safari")&&!o.includes("chrom")&&(o.includes("version/15.4")||/cpu (os|iphone os) 15_4 like mac os x/.test(o)),w=o.includes("webkit")&&!o.includes("edge"),C=o.includes("macintosh"),x=typeof devicePixelRatio<"u"?devicePixelRatio:1,D=typeof WorkerGlobalScope<"u"&&typeof OffscreenCanvas<"u"&&self instanceof WorkerGlobalScope,p=typeof Image<"u"&&Image.prototype.decode,g="function"==typeof createImageBitmap,y=function(){let h=!1;try{const u=Object.defineProperty({},"passive",{get:function(){h=!0}});window.addEventListener("_",null,u),window.removeEventListener("_",null,u)}catch{}return h}()},9539:(ut,Ie,a)=>{"use strict";a.d(Ie,{Ay:()=>x,D2:()=>C,e4:()=>w});var o=a(4037),c=a(8222),O=a(1999);function w(D,p,g){const y=D.getCenterInternal();y&&D.animateInternal({duration:void 0!==g?g:250,easing:O.sn,center:D.getConstrainedCenter([y[0]+p[0],y[1]+p[1]])})}function C(D,p,g,y){const h=D.getZoom();if(void 0===h)return;const u=D.getConstrainedZoom(h+p),P=D.getResolutionForZoom(u);D.getAnimating()&&D.cancelAnimations(),D.animate({resolution:P,anchor:g,duration:void 0!==y?y:250,easing:O.vT})}const x=class d extends o.A{constructor(p){super(),p&&p.handleEvent&&(this.handleEvent=p.handleEvent),this.map_=null,this.setActive(!0)}getActive(){return this.get(c.A.ACTIVE)}getMap(){return this.map_}handleEvent(p){return!0}setActive(p){this.set(c.A.ACTIVE,p)}setMap(p){this.map_=p}}},5493:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>z});var o=a(4786),c=a(6832),O=a(4888),d=a(8864),w=a(4958),C=a(2234),x=a(8791),D=a(3382),p=a(549),g=a(7345),y=a(6210),h=a(5862),u=a(3301),P=a(4378),T=a(1504),E=a(1043),W=a(9609),ne=a(3213),de=a(3036),ie=a(8618);const Le=[0,0,0,0],_e=[];class Ae extends O.Ay{constructor(L,q,J){super(L),this.features=q,this.mapBrowserEvent=J}}function Ue(te,L){return te.index-L.index}function ve(te,L,q){const J=L.geometry;if("Circle"===J.getType()){let K=J;if(1===L.index){const N=(0,de.Tf)();N&&(K=K.clone().transform(N,q));const V=(0,T.hG)(K.getCenter(),(0,de.Ad)(te,q)),I=Math.sqrt(V)-K.getRadius();return I*I}}const X=(0,de.Ad)(te,q);return _e[0]=(0,de.Ad)(L.segment[0],q),_e[1]=(0,de.Ad)(L.segment[1],q),(0,T.$x)(X,_e)}function ye(te,L,q){const J=L.geometry;if("Circle"===J.getType()&&1===L.index){let K=J;const N=(0,de.Tf)();return N&&(K=K.clone().transform(N,q)),(0,de.te)(K.getClosestPoint((0,de.Ad)(te,q)),q)}const X=(0,de.Ad)(te,q);return _e[0]=(0,de.Ad)(L.segment[0],q),_e[1]=(0,de.Ad)(L.segment[1],q),(0,de.te)((0,T.sG)(X,_e),q)}function Se(){const te=(0,E.mY)();return function(L,q){return te.Point}}const z=class ke extends D.A{constructor(L){let q;if(super(L),this.boundHandleFeatureChange_=this.handleFeatureChange_.bind(this),this.condition_=L.condition?L.condition:u.fs,this.defaultDeleteCondition_=function(J){return(0,u.Js)(J)&&(0,u.t5)(J)},this.deleteCondition_=L.deleteCondition?L.deleteCondition:this.defaultDeleteCondition_,this.insertVertexCondition_=L.insertVertexCondition?L.insertVertexCondition:u.Gk,this.vertexFeature_=null,this.vertexSegments_=null,this.lastPixel_=[0,0],this.ignoreNextSingleClick_=!1,this.featuresBeingModified_=null,this.rBush_=new p.A,this.pixelTolerance_=void 0!==L.pixelTolerance?L.pixelTolerance:10,this.snappedToVertex_=!1,this.changingFeature_=!1,this.dragSegments_=[],this.overlay_=new y.A({source:new h.A({useSpatialIndex:!1,wrapX:!!L.wrapX}),style:L.style?L.style:Se(),updateWhileAnimating:!0,updateWhileInteracting:!0}),this.SEGMENT_WRITERS_={Point:this.writePointGeometry_.bind(this),LineString:this.writeLineStringGeometry_.bind(this),LinearRing:this.writeLineStringGeometry_.bind(this),Polygon:this.writePolygonGeometry_.bind(this),MultiPoint:this.writeMultiPointGeometry_.bind(this),MultiLineString:this.writeMultiLineStringGeometry_.bind(this),MultiPolygon:this.writeMultiPolygonGeometry_.bind(this),Circle:this.writeCircleGeometry_.bind(this),GeometryCollection:this.writeGeometryCollectionGeometry_.bind(this)},this.source_=null,this.hitDetection_=null,L.features?q=L.features:L.source&&(this.source_=L.source,q=new o.A(this.source_.getFeatures()),this.source_.addEventListener(g.A.ADDFEATURE,this.handleSourceAdd_.bind(this)),this.source_.addEventListener(g.A.REMOVEFEATURE,this.handleSourceRemove_.bind(this))),!q)throw new Error("The modify interaction requires features, a source or a layer");L.hitDetection&&(this.hitDetection_=L.hitDetection),this.features_=q,this.features_.forEach(this.addFeature_.bind(this)),this.features_.addEventListener(c.A.ADD,this.handleFeatureAdd_.bind(this)),this.features_.addEventListener(c.A.REMOVE,this.handleFeatureRemove_.bind(this)),this.lastPointerEvent_=null,this.delta_=[0,0],this.snapToPointer_=void 0===L.snapToPointer?!this.hitDetection_:L.snapToPointer}addFeature_(L){const q=L.getGeometry();if(q){const X=this.SEGMENT_WRITERS_[q.getType()];X&&X(L,q)}const J=this.getMap();J&&J.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(this.lastPixel_,J),L.addEventListener(d.A.CHANGE,this.boundHandleFeatureChange_)}willModifyFeatures_(L,q){if(!this.featuresBeingModified_){this.featuresBeingModified_=new o.A;const J=this.featuresBeingModified_.getArray();for(let X=0,K=q.length;X=0;--X){const K=J[X];for(let N=this.dragSegments_.length-1;N>=0;--N)this.dragSegments_[N][0]===K&&this.dragSegments_.splice(N,1);q.remove(K)}}setActive(L){this.vertexFeature_&&!L&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),super.setActive(L)}setMap(L){this.overlay_.setMap(L),super.setMap(L)}getOverlay(){return this.overlay_}handleSourceAdd_(L){L.feature&&this.features_.push(L.feature)}handleSourceRemove_(L){L.feature&&this.features_.remove(L.feature)}handleFeatureAdd_(L){this.addFeature_(L.element)}handleFeatureChange_(L){if(!this.changingFeature_){const q=L.target;this.removeFeature_(q),this.addFeature_(q)}}handleFeatureRemove_(L){this.removeFeature_(L.element)}writePointGeometry_(L,q){const J=q.getCoordinates(),X={feature:L,geometry:q,segment:[J,J]};this.rBush_.insert(q.getExtent(),X)}writeMultiPointGeometry_(L,q){const J=q.getCoordinates();for(let X=0,K=J.length;X=0;--j)this.insertVertex_(K[j],N)}return!!this.vertexFeature_}handleUpEvent(L){for(let q=this.dragSegments_.length-1;q>=0;--q){const J=this.dragSegments_[q][0],X=J.geometry;if("Circle"===X.getType()){const K=X.getCenter(),N=J.featureSegments[0],V=J.featureSegments[1];N.segment[0]=K,N.segment[1]=K,V.segment[0]=K,V.segment[1]=K,this.rBush_.update((0,P.dP)(K),N);let I=X;const M=(0,de.Tf)();if(M){const j=L.map.getView().getProjection();I=I.clone().transform(M,j),I=(0,ne.nD)(I).transform(j,M)}this.rBush_.update(I.getExtent(),V)}else this.rBush_.update((0,P.Tr)(J.segment),J)}return this.featuresBeingModified_&&(this.dispatchEvent(new Ae("modifyend",this.featuresBeingModified_,L)),this.featuresBeingModified_=null),!1}handlePointerMove_(L){this.lastPixel_=L.pixel,this.handlePointerAtPixel_(L.pixel,L.map,L.coordinate)}handlePointerAtPixel_(L,q,J){const X=J||q.getCoordinateFromPixel(L),K=q.getView().getProjection(),N=function(M,j){return ve(X,M,K)-ve(X,j,K)};let V,I;if(this.hitDetection_&&q.forEachFeatureAtPixel(L,(j,ge,Me)=>{Me&&"Point"===Me.getType()&&(Me=new x.A((0,de.te)(Me.getCoordinates(),K)));const oe=Me||j.getGeometry();if(j instanceof w.A&&this.features_.getArray().includes(j)){I=oe;const R=j.getGeometry().getFlatCoordinates().slice(0,2);V=[{feature:j,geometry:I,segment:[R,R]}]}return!0},{layerFilter:"object"==typeof this.hitDetection_?j=>j===this.hitDetection_:void 0}),!V){const M=(0,de.SD)((0,P.dP)(X,Le),K),j=q.getView().getResolution()*this.pixelTolerance_,ge=(0,de.JR)((0,P.r)(M,j,Le),K);V=this.rBush_.getInExtent(ge)}if(V&&V.length>0){const M=V.sort(N)[0],j=M.segment;let ge=ye(X,M,K);const Me=q.getPixelFromCoordinate(ge);let oe=(0,T.Io)(L,Me);if(I||oe<=this.pixelTolerance_){const R={};if(R[(0,ie.v6)(j)]=!0,this.snapToPointer_||(this.delta_[0]=ge[0]-X[0],this.delta_[1]=ge[1]-X[1]),"Circle"===M.geometry.getType()&&1===M.index)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(ge,[M.feature],[M.geometry]);else{const se=q.getPixelFromCoordinate(j[0]),Ee=q.getPixelFromCoordinate(j[1]),tt=(0,T.hG)(Me,se),Y=(0,T.hG)(Me,Ee);oe=Math.sqrt(Math.min(tt,Y)),this.snappedToVertex_=oe<=this.pixelTolerance_,this.snappedToVertex_&&(ge=tt>Y?j[1]:j[0]),this.createOrUpdateVertexFeature_(ge,[M.feature],[M.geometry]);const Re={};Re[(0,ie.v6)(M.geometry)]=!0;for(let De=1,nt=V.length;De=0;--I)N=L[I],oe=N[0],R=(0,ie.v6)(oe.feature),oe.depth&&(R+="-"+oe.depth.join("-")),R in q||(q[R]={}),0===N[1]?(q[R].right=oe,q[R].index=oe.index):1==N[1]&&(q[R].left=oe,q[R].index=oe.index+1);for(R in q){switch(Me=q[R].right,j=q[R].left,M=q[R].index,ge=M-1,oe=void 0!==j?j:Me,ge<0&&(ge=0),V=oe.geometry,K=V.getCoordinates(),X=K,J=!1,V.getType()){case"MultiLineString":K[oe.depth[0]].length>2&&(K[oe.depth[0]].splice(M,1),J=!0);break;case"LineString":K.length>2&&(K.splice(M,1),J=!0);break;case"MultiPolygon":X=X[oe.depth[1]];case"Polygon":X=X[oe.depth[0]],X.length>4&&(M==X.length-1&&(M=0),X.splice(M,1),J=!0,0===M&&(X.pop(),X.push(X[0]),ge=X.length-1))}if(J){this.setGeometryCoordinates_(V,K);const se=[];if(void 0!==j&&(this.rBush_.remove(j),se.push(j.segment[0])),void 0!==Me&&(this.rBush_.remove(Me),se.push(Me.segment[1])),void 0!==j&&void 0!==Me){const Ee={depth:oe.depth,feature:oe.feature,geometry:oe.geometry,index:ge,segment:se};this.rBush_.insert((0,P.Tr)(Ee.segment),Ee)}this.updateSegmentIndices_(V,M,oe.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),L.length=0}}return J}setGeometryCoordinates_(L,q){this.changingFeature_=!0,L.setCoordinates(q),this.changingFeature_=!1}updateSegmentIndices_(L,q,J,X){this.rBush_.forEachInExtent(L.getExtent(),function(K){K.geometry===L&&(void 0===J||void 0===K.depth||(0,W.aI)(K.depth,J))&&K.index>q&&(K.index+=X)})}}},3382:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>w,v:()=>d});var o=a(9539),c=a(2234);function d(C){const x=C.length;let D=0,p=0;for(let g=0;g0}}else if(x.type==c.A.POINTERDOWN){const p=this.handleDownEvent(x);this.handlingDownUpSequence=p,D=this.stopDown(p)}else x.type==c.A.POINTERMOVE&&this.handleMoveEvent(x);return!D}handleMoveEvent(x){}handleUpEvent(x){return!1}stopDown(x){return x}updateTrackedPointers_(x){x.activePointers&&(this.targetPointers=x.activePointers)}}},8222:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>o});const o={ACTIVE:"active"}},8945:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>x});var o=a(4037),c=a(5157),O=a(8618),d=a(9791),w=a(8092);const x=class C extends o.A{constructor(p){super(),this.background_=p.background;const g=Object.assign({},p);"object"==typeof p.properties&&(delete g.properties,Object.assign(g,p.properties)),g[c.A.OPACITY]=void 0!==p.opacity?p.opacity:1,(0,d.v)("number"==typeof g[c.A.OPACITY],"Layer opacity must be a number"),g[c.A.VISIBLE]=void 0===p.visible||p.visible,g[c.A.Z_INDEX]=p.zIndex,g[c.A.MAX_RESOLUTION]=void 0!==p.maxResolution?p.maxResolution:1/0,g[c.A.MIN_RESOLUTION]=void 0!==p.minResolution?p.minResolution:0,g[c.A.MIN_ZOOM]=void 0!==p.minZoom?p.minZoom:-1/0,g[c.A.MAX_ZOOM]=void 0!==p.maxZoom?p.maxZoom:1/0,this.className_=void 0!==g.className?g.className:"ol-layer",delete g.className,this.setProperties(g),this.state_=null}getBackground(){return this.background_}getClassName(){return this.className_}getLayerState(p){const g=this.state_||{layer:this,managed:void 0===p||p},y=this.getZIndex();return g.opacity=(0,w.qE)(Math.round(100*this.getOpacity())/100,0,1),g.visible=this.getVisible(),g.extent=this.getExtent(),g.zIndex=void 0!==y||g.managed?y:1/0,g.maxResolution=this.getMaxResolution(),g.minResolution=Math.max(this.getMinResolution(),0),g.minZoom=this.getMinZoom(),g.maxZoom=this.getMaxZoom(),this.state_=g,g}getLayersArray(p){return(0,O.b0)()}getLayerStatesArray(p){return(0,O.b0)()}getExtent(){return this.get(c.A.EXTENT)}getMaxResolution(){return this.get(c.A.MAX_RESOLUTION)}getMinResolution(){return this.get(c.A.MIN_RESOLUTION)}getMinZoom(){return this.get(c.A.MIN_ZOOM)}getMaxZoom(){return this.get(c.A.MAX_ZOOM)}getOpacity(){return this.get(c.A.OPACITY)}getSourceState(){return(0,O.b0)()}getVisible(){return this.get(c.A.VISIBLE)}getZIndex(){return this.get(c.A.Z_INDEX)}setBackground(p){this.background_=p,this.changed()}setExtent(p){this.set(c.A.EXTENT,p)}setMaxResolution(p){this.set(c.A.MAX_RESOLUTION,p)}setMinResolution(p){this.set(c.A.MIN_RESOLUTION,p)}setMaxZoom(p){this.set(c.A.MAX_ZOOM,p)}setMinZoom(p){this.set(c.A.MIN_ZOOM,p)}setOpacity(p){(0,d.v)("number"==typeof p,"Layer opacity must be a number"),this.set(c.A.OPACITY,p)}setVisible(p){this.set(c.A.VISIBLE,p)}setZIndex(p){this.set(c.A.Z_INDEX,p)}disposeInternal(){this.state_&&(this.state_.layer=null,this.state_=null),super.disposeInternal()}}},2512:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>ft});var o=a(6523),c=a(9995),O=a(1043),d=a(2872),w=a(5637),C=a(3117),x=a(1633),D=a(4688),p=a(8443);class y{constructor(Q){this.font_=(Q=Q||{}).font,this.rotation_=Q.rotation,this.rotateWithView_=Q.rotateWithView,this.scale_=Q.scale,this.scaleArray_=(0,p.xq)(void 0!==Q.scale?Q.scale:1),this.text_=Q.text,this.textAlign_=Q.textAlign,this.justify_=Q.justify,this.repeat_=Q.repeat,this.textBaseline_=Q.textBaseline,this.fill_=void 0!==Q.fill?Q.fill:new w.A({color:"#333"}),this.maxAngle_=void 0!==Q.maxAngle?Q.maxAngle:Math.PI/4,this.placement_=void 0!==Q.placement?Q.placement:"point",this.overflow_=!!Q.overflow,this.stroke_=void 0!==Q.stroke?Q.stroke:null,this.offsetX_=void 0!==Q.offsetX?Q.offsetX:0,this.offsetY_=void 0!==Q.offsetY?Q.offsetY:0,this.backgroundFill_=Q.backgroundFill?Q.backgroundFill:null,this.backgroundStroke_=Q.backgroundStroke?Q.backgroundStroke:null,this.padding_=void 0===Q.padding?null:Q.padding,this.declutterMode_=Q.declutterMode}clone(){const Q=this.getScale();return new y({font:this.getFont(),placement:this.getPlacement(),repeat:this.getRepeat(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(Q)?Q.slice():Q,text:this.getText(),textAlign:this.getTextAlign(),justify:this.getJustify(),textBaseline:this.getTextBaseline(),fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()||void 0,declutterMode:this.getDeclutterMode()})}getOverflow(){return this.overflow_}getFont(){return this.font_}getMaxAngle(){return this.maxAngle_}getPlacement(){return this.placement_}getRepeat(){return this.repeat_}getOffsetX(){return this.offsetX_}getOffsetY(){return this.offsetY_}getFill(){return this.fill_}getRotateWithView(){return this.rotateWithView_}getRotation(){return this.rotation_}getScale(){return this.scale_}getScaleArray(){return this.scaleArray_}getStroke(){return this.stroke_}getText(){return this.text_}getTextAlign(){return this.textAlign_}getJustify(){return this.justify_}getTextBaseline(){return this.textBaseline_}getBackgroundFill(){return this.backgroundFill_}getBackgroundStroke(){return this.backgroundStroke_}getPadding(){return this.padding_}getDeclutterMode(){return this.declutterMode_}setOverflow(Q){this.overflow_=Q}setFont(Q){this.font_=Q}setMaxAngle(Q){this.maxAngle_=Q}setOffsetX(Q){this.offsetX_=Q}setOffsetY(Q){this.offsetY_=Q}setPlacement(Q){this.placement_=Q}setRepeat(Q){this.repeat_=Q}setRotateWithView(Q){this.rotateWithView_=Q}setFill(Q){this.fill_=Q}setRotation(Q){this.rotation_=Q}setScale(Q){this.scale_=Q,this.scaleArray_=(0,p.xq)(void 0!==Q?Q:1)}setStroke(Q){this.stroke_=Q}setText(Q){this.text_=Q}setTextAlign(Q){this.textAlign_=Q}setJustify(Q){this.justify_=Q}setTextBaseline(Q){this.textBaseline_=Q}setBackgroundFill(Q){this.backgroundFill_=Q}setBackgroundStroke(Q){this.backgroundStroke_=Q}setPadding(Q){this.padding_=Q}}const h=y;var u=a(2046),P=a(642);function E(le,Q,Be){const Je=(0,u.qg)(le,Be);if(!(0,u.ho)(Q,Je.type)){const qe=(0,u.go)(Q),ot=(0,u.go)(Je.type);throw new Error(`Expected expression to be of type ${qe}, got ${ot}`)}return W(Je,Be)}function W(le,Q){if(le instanceof u._D){if(le.type===u.mE&&"string"==typeof le.value){const Je=(0,P.sH)(le.value);return function(){return Je}}return function(){return le.value}}const Be=le.operator;switch(Be){case u.ZD.Number:case u.ZD.String:case u.ZD.Coalesce:return function ne(le,Q){const Be=le.operator,Je=le.args.length,qe=new Array(Je);for(let ot=0;ot{for(let It=0;It{for(let It=0;Itqe.properties[Je];case u.ZD.Var:return qe=>qe.variables[Je];default:throw new Error(`Unsupported accessor operator ${le.operator}`)}}(le);case u.ZD.Id:return Je=>Je.featureId;case u.ZD.GeometryType:return Je=>Je.geometryType;case u.ZD.Concat:{const Je=le.args.map(qe=>W(qe,Q));return qe=>"".concat(...Je.map(ot=>ot(qe).toString()))}case u.ZD.Resolution:return Je=>Je.resolution;case u.ZD.Any:case u.ZD.All:case u.ZD.Not:return function Z(le,Q){const Be=le.operator,Je=le.args.length,qe=new Array(Je);for(let ot=0;ot{for(let It=0;It{for(let It=0;It!qe[0](ot);default:throw new Error(`Unsupported logical operator ${Be}`)}}(le,Q);case u.ZD.Equal:case u.ZD.NotEqual:case u.ZD.LessThan:case u.ZD.LessThanOrEqualTo:case u.ZD.GreaterThan:case u.ZD.GreaterThanOrEqualTo:return function ie(le,Q){const Be=le.operator,Je=W(le.args[0],Q),qe=W(le.args[1],Q);switch(Be){case u.ZD.Equal:return ot=>Je(ot)===qe(ot);case u.ZD.NotEqual:return ot=>Je(ot)!==qe(ot);case u.ZD.LessThan:return ot=>Je(ot)Je(ot)<=qe(ot);case u.ZD.GreaterThan:return ot=>Je(ot)>qe(ot);case u.ZD.GreaterThanOrEqualTo:return ot=>Je(ot)>=qe(ot);default:throw new Error(`Unsupported comparison operator ${Be}`)}}(le,Q);case u.ZD.Multiply:case u.ZD.Divide:case u.ZD.Add:case u.ZD.Subtract:case u.ZD.Clamp:case u.ZD.Mod:case u.ZD.Pow:case u.ZD.Abs:case u.ZD.Floor:case u.ZD.Ceil:case u.ZD.Round:case u.ZD.Sin:case u.ZD.Cos:case u.ZD.Atan:case u.ZD.Sqrt:return function ae(le,Q){const Be=le.operator,Je=le.args.length,qe=new Array(Je);for(let ot=0;ot{let It=1;for(let Ft=0;Ftqe[0](ot)/qe[1](ot);case u.ZD.Add:return ot=>{let It=0;for(let Ft=0;Ftqe[0](ot)-qe[1](ot);case u.ZD.Clamp:return ot=>{const It=qe[0](ot),Ft=qe[1](ot);if(Itkt?kt:It};case u.ZD.Mod:return ot=>qe[0](ot)%qe[1](ot);case u.ZD.Pow:return ot=>Math.pow(qe[0](ot),qe[1](ot));case u.ZD.Abs:return ot=>Math.abs(qe[0](ot));case u.ZD.Floor:return ot=>Math.floor(qe[0](ot));case u.ZD.Ceil:return ot=>Math.ceil(qe[0](ot));case u.ZD.Round:return ot=>Math.round(qe[0](ot));case u.ZD.Sin:return ot=>Math.sin(qe[0](ot));case u.ZD.Cos:return ot=>Math.cos(qe[0](ot));case u.ZD.Atan:return 2===Je?ot=>Math.atan2(qe[0](ot),qe[1](ot)):ot=>Math.atan(qe[0](ot));case u.ZD.Sqrt:return ot=>Math.sqrt(qe[0](ot));default:throw new Error(`Unsupported numeric operator ${Be}`)}}(le,Q);case u.ZD.Case:return function Le(le,Q){const Be=le.args.length,Je=new Array(Be);for(let qe=0;qe{for(let ot=0;ot{const ot=Je[0](qe);for(let It=1;It{const ot=Je[0](qe),It=Je[1](qe);let Ft,kt;for(let Qt=2;Qt=It)return 2===Qt?nn:$e?ke(ot,It,Ft,kt,rn,nn):Ae(ot,It,Ft,kt,rn,nn);Ft=rn,kt=nn}return kt}}(le,Q);default:throw new Error(`Unsupported operator ${Be}`)}}function Ae(le,Q,Be,Je,qe,ot){const It=qe-Be;if(0===It)return Je;const Ft=Q-Be;return Je+(1===le?Ft/It:(Math.pow(le,Ft)-1)/(Math.pow(le,It)-1))*(ot-Je)}function ke(le,Q,Be,Je,qe,ot){if(qe-Be==0)return Je;const Ft=(0,P.eE)(Je),kt=(0,P.eE)(ot);let Qt=kt[2]-Ft[2];Qt>180?Qt-=360:Qt<-180&&(Qt+=360);const rn=[Ae(le,Q,Be,Ft[0],qe,kt[0]),Ae(le,Q,Be,Ft[1],qe,kt[1]),Ft[2]+Ae(le,Q,Be,0,qe,Qt),Ae(le,Q,Be,Je[3],qe,ot[3])];return(0,P.S8)((0,P.cD)(rn))}var Ue=a(973);function ve(le){return!0}function Se(le){const Q=(0,u.SR)(),Be=le.length,Je=new Array(Be);for(let It=0;It4)throw new Error(`Expected a color with 3 or 4 values for ${Q}`);return Be}function ce(le,Q){const Be=on(le,Q);if(2!==Be.length)throw new Error(`Expected an array of two numbers for ${Q}`);return Be}const ft=class be extends o.A{constructor(Q){Q=Q||{};const Be=Object.assign({},Q);delete Be.style,delete Be.renderBuffer,delete Be.updateWhileAnimating,delete Be.updateWhileInteracting,super(Be),this.declutter_=Q.declutter?String(Q.declutter):void 0,this.renderBuffer_=void 0!==Q.renderBuffer?Q.renderBuffer:100,this.style_=null,this.styleFunction_=void 0,this.setStyle(Q.style),this.updateWhileAnimating_=void 0!==Q.updateWhileAnimating&&Q.updateWhileAnimating,this.updateWhileInteracting_=void 0!==Q.updateWhileInteracting&&Q.updateWhileInteracting}getDeclutter(){return this.declutter_}getFeatures(Q){return super.getFeatures(Q)}getRenderBuffer(){return this.renderBuffer_}getRenderOrder(){return this.get("renderOrder")}getStyle(){return this.style_}getStyleFunction(){return this.styleFunction_}getUpdateWhileAnimating(){return this.updateWhileAnimating_}getUpdateWhileInteracting(){return this.updateWhileInteracting_}renderDeclutter(Q,Be){const Je=this.getDeclutter();Je in Q.declutter||(Q.declutter[Je]=new c(9)),this.getRenderer().renderDeclutter(Q,Be)}setRenderOrder(Q){this.set("renderOrder",Q)}setStyle(Q){this.style_=function Ke(le){if(void 0===le)return O.d1;if(!le)return null;if("function"==typeof le||le instanceof O.Ay)return le;if(!Array.isArray(le))return Se([le]);if(0===le.length)return[];const Q=le.length,Be=le[0];if(Be instanceof O.Ay){const qe=new Array(Q);for(let ot=0;ot{"use strict";a.d(Ie,{A:()=>y,l:()=>g});var o=a(8945),c=a(8864),O=a(5157),d=a(8933),w=a(6601),C=a(9791),x=a(4378),D=a(7443);function g(h,u){if(!h.visible)return!1;const P=u.resolution;if(P=h.maxResolution)return!1;const T=u.zoom;return T>h.minZoom&&T<=h.maxZoom}const y=class p extends o.A{constructor(u){const P=Object.assign({},u);delete P.source,super(P),this.mapPrecomposeKey_=null,this.mapRenderKey_=null,this.sourceChangeKey_=null,this.renderer_=null,this.sourceReady_=!1,this.rendered=!1,u.render&&(this.render=u.render),u.map&&this.setMap(u.map),this.addChangeListener(O.A.SOURCE,this.handleSourcePropertyChange_),this.setSource(u.source?u.source:null)}getLayersArray(u){return(u=u||[]).push(this),u}getLayerStatesArray(u){return(u=u||[]).push(this.getLayerState()),u}getSource(){return this.get(O.A.SOURCE)||null}getRenderSource(){return this.getSource()}getSourceState(){const u=this.getSource();return u?u.getState():"undefined"}handleSourceChange_(){this.changed(),!this.sourceReady_&&"ready"===this.getSource().getState()&&(this.sourceReady_=!0,this.dispatchEvent("sourceready"))}handleSourcePropertyChange_(){this.sourceChangeKey_&&((0,D.JH)(this.sourceChangeKey_),this.sourceChangeKey_=null),this.sourceReady_=!1;const u=this.getSource();u&&(this.sourceChangeKey_=(0,D.KT)(u,c.A.CHANGE,this.handleSourceChange_,this),"ready"===u.getState()&&(this.sourceReady_=!0,setTimeout(()=>{this.dispatchEvent("sourceready")},0))),this.changed()}getFeatures(u){return this.renderer_?this.renderer_.getFeatures(u):Promise.resolve([])}getData(u){return this.renderer_&&this.rendered?this.renderer_.getData(u):null}isVisible(u){let P;const T=this.getMapInternal();let E;!u&&T&&(u=T.getView()),P=u instanceof w.Ay?{viewState:u.getState(),extent:u.calculateExtent()}:u,!P.layerStatesArray&&T&&(P.layerStatesArray=T.getLayerGroup().getLayerStatesArray()),E=P.layerStatesArray?P.layerStatesArray.find(ne=>ne.layer===this):this.getLayerState();const W=this.getExtent();return g(E,P.viewState)&&(!W||(0,x.HY)(W,P.extent))}getAttributions(u){if(!this.isVisible(u))return[];let P;const T=this.getSource();if(T&&(P=T.getAttributions()),!P)return[];let W=P(u instanceof w.Ay?u.getViewStateAndExtent():u);return Array.isArray(W)||(W=[W]),W}render(u,P){const T=this.getRenderer();return T.prepareFrame(u)?(this.rendered=!0,T.renderFrame(u,P)):null}unrender(){this.rendered=!1}getDeclutter(){}renderDeclutter(u,P){}renderDeferred(u){const P=this.getRenderer();P&&P.renderDeferred(u)}setMapInternal(u){u||this.unrender(),this.set(O.A.MAP,u)}getMapInternal(){return this.get(O.A.MAP)}setMap(u){this.mapPrecomposeKey_&&((0,D.JH)(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),u||this.changed(),this.mapRenderKey_&&((0,D.JH)(this.mapRenderKey_),this.mapRenderKey_=null),u&&(this.mapPrecomposeKey_=(0,D.KT)(u,d.A.PRECOMPOSE,function(P){const E=P.frameState.layerStatesArray,W=this.getLayerState(!1);(0,C.v)(!E.some(function(ne){return ne.layer===W.layer}),"A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both."),E.push(W)},this),this.mapRenderKey_=(0,D.KT)(this,c.A.CHANGE,u.render,u),this.changed())}setSource(u){this.set(O.A.SOURCE,u)}getRenderer(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_}hasRenderer(){return!!this.renderer_}createRenderer(){return null}disposeInternal(){this.renderer_&&(this.renderer_.dispose(),delete this.renderer_),this.setSource(null),super.disposeInternal()}}},5157:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>o});const o={OPACITY:"opacity",VISIBLE:"visible",EXTENT:"extent",Z_INDEX:"zIndex",MAX_RESOLUTION:"maxResolution",MIN_RESOLUTION:"minResolution",MAX_ZOOM:"maxZoom",MIN_ZOOM:"minZoom",SOURCE:"source",MAP:"map"}},6210:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>bt});var o=a(2512);const c={BEGIN_GEOMETRY:0,BEGIN_PATH:1,CIRCLE:2,CLOSE_PATH:3,CUSTOM:4,DRAW_CHARS:5,DRAW_IMAGE:6,END_GEOMETRY:7,FILL:8,MOVE_TO_LINE_TO:9,SET_FILL_STYLE:10,SET_STROKE_STYLE:11,STROKE:12},O=[c.FILL],d=[c.STROKE],w=[c.BEGIN_PATH],C=[c.CLOSE_PATH],x=c;var D=a(5479);const g=class p{drawCustom(b,k,A,H,xe){}drawGeometry(b){}setStyle(b){}drawCircle(b,k,A){}drawFeature(b,k,A){}drawGeometryCollection(b,k,A){}drawLineString(b,k,A){}drawMultiLineString(b,k,A){}drawMultiPoint(b,k,A){}drawMultiPolygon(b,k,A){}drawPoint(b,k,A){}drawPolygon(b,k,A){}drawText(b,k,A){}setFillStrokeStyle(b,k){}setImageStyle(b,k){}setTextStyle(b,k){}};var y=a(8896),h=a(4378),u=a(8045),P=a(9609),T=a(822);const W=class E extends g{constructor(b,k,A,H){super(),this.tolerance=b,this.maxExtent=k,this.pixelRatio=H,this.maxLineWidth=0,this.resolution=A,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_=null,this.bufferedMaxExtent_=null,this.instructions=[],this.coordinates=[],this.tmpCoordinate_=[],this.hitDetectionInstructions=[],this.state={}}applyPixelRatio(b){const k=this.pixelRatio;return 1==k?b:b.map(function(A){return A*k})}appendFlatPointCoordinates(b,k){const A=this.getBufferedMaxExtent(),H=this.tmpCoordinate_,xe=this.coordinates;let Oe=xe.length;for(let je=0,Ze=b.length;jeZe&&(this.instructions.push([x.CUSTOM,Ze,_t,b,A,T.n2,xe]),this.hitDetectionInstructions.push([x.CUSTOM,Ze,_t,b,H||A,T.n2,xe]));break;case"Point":dt=b.getFlatCoordinates(),this.coordinates.push(dt[0],dt[1]),_t=this.coordinates.length,this.instructions.push([x.CUSTOM,Ze,_t,b,A,void 0,xe]),this.hitDetectionInstructions.push([x.CUSTOM,Ze,_t,b,H||A,void 0,xe])}this.endGeometry(k)}beginGeometry(b,k,A){this.beginGeometryInstruction1_=[x.BEGIN_GEOMETRY,k,0,b,A],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[x.BEGIN_GEOMETRY,k,0,b,A],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)}finish(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}}reverseHitDetectionInstructions(){const b=this.hitDetectionInstructions;let k;b.reverse();const A=b.length;let H,xe,Oe=-1;for(k=0;kthis.maxLineWidth&&(this.maxLineWidth=A.lineWidth,this.bufferedMaxExtent_=null)}else A.strokeStyle=void 0,A.lineCap=void 0,A.lineDash=null,A.lineDashOffset=void 0,A.lineJoin=void 0,A.lineWidth=void 0,A.miterLimit=void 0}createFill(b){const k=b.fillStyle,A=[x.SET_FILL_STYLE,k];return"string"!=typeof k&&A.push(b.fillPatternScale),A}applyStroke(b){this.instructions.push(this.createStroke(b))}createStroke(b){return[x.SET_STROKE_STYLE,b.strokeStyle,b.lineWidth*this.pixelRatio,b.lineCap,b.lineJoin,b.miterLimit,this.applyPixelRatio(b.lineDash),b.lineDashOffset*this.pixelRatio]}updateFillStyle(b,k){const A=b.fillStyle;("string"!=typeof A||b.currentFillStyle!=A)&&(void 0!==A&&this.instructions.push(k.call(this,b)),b.currentFillStyle=A)}updateStrokeStyle(b,k){const A=b.strokeStyle,H=b.lineCap,xe=b.lineDash,Oe=b.lineDashOffset,je=b.lineJoin,Ze=b.lineWidth,dt=b.miterLimit;(b.currentStrokeStyle!=A||b.currentLineCap!=H||xe!=b.currentLineDash&&!(0,P.aI)(b.currentLineDash,xe)||b.currentLineDashOffset!=Oe||b.currentLineJoin!=je||b.currentLineWidth!=Ze||b.currentMiterLimit!=dt)&&(void 0!==A&&k.call(this,b),b.currentStrokeStyle=A,b.currentLineCap=H,b.currentLineDash=xe,b.currentLineDashOffset=Oe,b.currentLineJoin=je,b.currentLineWidth=Ze,b.currentMiterLimit=dt)}endGeometry(b){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;const k=[x.END_GEOMETRY,b];this.instructions.push(k),this.hitDetectionInstructions.push(k)}getBufferedMaxExtent(){return!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=(0,h.o8)(this.maxExtent),this.maxLineWidth>0)&&(0,h.r)(this.bufferedMaxExtent_,this.resolution*(this.maxLineWidth+1)/2,this.bufferedMaxExtent_),this.bufferedMaxExtent_}};var ae=a(6022);const _e=class Le extends W{constructor(b,k,A,H){super(b,k,A,H)}drawFlatCoordinatess_(b,k,A,H){const xe=this.state,Oe=void 0!==xe.fillStyle,je=void 0!==xe.strokeStyle,Ze=A.length;this.instructions.push(w),this.hitDetectionInstructions.push(w);for(let dt=0;dt=ct){const Bt=(ct-je+St)/St,Tt=(0,Ae.Cc)(dt,Ct,Bt),Gt=(0,Ae.Cc)(_t,At,Bt);Ze.push(Tt,Gt),xe.push(Ze),Ze=[Tt,Gt],je==ct&&(Oe+=H),je=0}else if(je0&&xe.push(Ze),xe}function Ue(ct,b,k,A,H){let _t,Ct,At,St,Bt,Tt,Gt,zt,Jt,en,xe=k,Oe=k,je=0,Ze=0,dt=k;for(Ct=k;Ctct&&(Ze>je&&(je=Ze,xe=dt,Oe=Ct),Ze=0,dt=Ct-H)),At=St,Gt=Jt,zt=en),Bt=dn,Tt=un}return Ze+=St,Ze>je?[dt,Ct]:[xe,Oe]}const ve={left:0,center:.5,right:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},z={Circle:_e,Default:W,Image:class ne extends W{constructor(b,k,A,H){super(b,k,A,H),this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.anchorX_=void 0,this.anchorY_=void 0,this.height_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.scale_=void 0,this.width_=void 0,this.declutterMode_=void 0,this.declutterImageWithText_=void 0}drawPoint(b,k,A){if(!this.image_||this.maxExtent&&!(0,h.Ym)(this.maxExtent,b.getFlatCoordinates()))return;this.beginGeometry(b,k,A);const H=b.getFlatCoordinates(),xe=b.getStride(),Oe=this.coordinates.length,je=this.appendFlatPointCoordinates(H,xe);this.instructions.push([x.DRAW_IMAGE,Oe,je,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_*this.imagePixelRatio_,this.originY_*this.imagePixelRatio_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterMode_,this.declutterImageWithText_]),this.hitDetectionInstructions.push([x.DRAW_IMAGE,Oe,je,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,1,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterMode_,this.declutterImageWithText_]),this.endGeometry(k)}drawMultiPoint(b,k,A){if(!this.image_)return;this.beginGeometry(b,k,A);const H=b.getFlatCoordinates(),xe=[];for(let Ze=0,dt=H.length;Ze{const un=je[2*(Jt+dn)]===_t[dn*Ct]&&je[2*(Jt+dn)+1]===_t[dn*Ct+1];return un||--Jt,un})}this.saveTextStates_(),(Oe.backgroundFill||Oe.backgroundStroke)&&(this.setFillStrokeStyle(Oe.backgroundFill,Oe.backgroundStroke),Oe.backgroundFill&&this.updateFillStyle(this.state,this.createFill),Oe.backgroundStroke&&(this.updateStrokeStyle(this.state,this.applyStroke),this.hitDetectionInstructions.push(this.createStroke(this.state)))),this.beginGeometry(b,k,A);let Bt=Oe.padding;if(Bt!=u.Tq&&(Oe.scale[0]<0||Oe.scale[1]<0)){let Jt=Oe.padding[0],en=Oe.padding[1],dn=Oe.padding[2],un=Oe.padding[3];Oe.scale[0]<0&&(en=-en,un=-un),Oe.scale[1]<0&&(Jt=-Jt,dn=-dn),Bt=[Jt,en,dn,un]}const Tt=this.pixelRatio;this.instructions.push([x.DRAW_IMAGE,Ze,St,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[1,1],NaN,this.declutterMode_,this.declutterImageWithText_,Bt==u.Tq?u.Tq:Bt.map(function(Jt){return Jt*Tt}),!!Oe.backgroundFill,!!Oe.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_,this.textOffsetX_,this.textOffsetY_,At]);const Gt=1/Tt,zt=this.state.fillStyle;Oe.backgroundFill&&(this.state.fillStyle=u.qY,this.hitDetectionInstructions.push(this.createFill(this.state))),this.hitDetectionInstructions.push([x.DRAW_IMAGE,Ze,St,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[Gt,Gt],NaN,this.declutterMode_,this.declutterImageWithText_,Bt,!!Oe.backgroundFill,!!Oe.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_?u.qY:this.fillKey_,this.textOffsetX_,this.textOffsetY_,At]),Oe.backgroundFill&&(this.state.fillStyle=zt,this.hitDetectionInstructions.push(this.createFill(this.state))),this.endGeometry(k)}else{if(!(0,h.HY)(this.maxExtent,b.getExtent()))return;let At;if(_t=b.getFlatCoordinates(),"LineString"==dt)At=[_t.length];else if("MultiLineString"==dt)At=b.getEnds();else if("Polygon"==dt)At=b.getEnds().slice(0,1);else if("MultiPolygon"==dt){const Gt=b.getEndss();At=[];for(let zt=0,Jt=Gt.length;ztGe[2]}else qt=dn>_n;const gn=Math.PI,In=[],Ve=tn+A===b;let ze;if(Gt=0,zt=mn,At=ct[b=tn],St=ct[b+1],Ve)return Jt(),ze=Math.atan2(St-Tt,At-Bt),qt&&(ze+=ze>0?-gn:gn),In[0]=[(_n+dn)/2,(Mn+un)/2,(yn-xe)/2,ze,H],In;for(let Ge=0,gt=(H=H.replace(/\n/g," ")).length;Ge0?-gn:gn),void 0!==ze){let $t=wt-ze;if($t+=$t>gn?-2*gn:$t<-gn?2*gn:0,Math.abs($t)>Oe)return null}ze=wt;const Wt=Ge;let Ht=0;for(;Ge0&&ct.push("\n",""),ct.push(b,""),ct}const Y=class tt{constructor(b,k,A,H,xe){this.overlaps=A,this.pixelRatio=k,this.resolution=b,this.instructions=H.instructions,this.coordinates=H.coordinates,this.coordinateCache_={},this.renderedTransform_=(0,X.vt)(),this.hitDetectionInstructions=H.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=H.fillStates||{},this.strokeStates=H.strokeStates||{},this.textStates=H.textStates||{},this.widths_={},this.labels_={},this.zIndexContext_=xe?new J.A:null}getZIndexContext(){return this.zIndexContext_}createLabel(b,k,A,H){const xe=b+k+A+H;if(this.labels_[xe])return this.labels_[xe];const Oe=H?this.strokeStates[H]:null,je=A?this.fillStates[A]:null,Ze=this.textStates[k],dt=this.pixelRatio,_t=[Ze.scale[0]*dt,Ze.scale[1]*dt],Ct=Array.isArray(b),At=Ze.justify?ve[Ze.justify]:se(Array.isArray(b)?b[0]:b,Ze.textAlign||u.MY),St=H&&Oe.lineWidth?Oe.lineWidth:0,Bt=Ct?b:b.split("\n").reduce(Ee,[]),{width:Tt,height:Gt,widths:zt,heights:Jt,lineWidths:en}=(0,u.jT)(Ze,Bt),dn=Tt+St,un=[],tn=(dn+2)*_t[0],mn=(Gt+St)*_t[1],yn={width:tn<0?Math.floor(tn):Math.ceil(tn),height:mn<0?Math.floor(mn):Math.ceil(mn),contextInstructions:un};(1!=_t[0]||1!=_t[1])&&un.push("scale",_t),H&&(un.push("strokeStyle",Oe.strokeStyle),un.push("lineWidth",St),un.push("lineCap",Oe.lineCap),un.push("lineJoin",Oe.lineJoin),un.push("miterLimit",Oe.miterLimit),un.push("setLineDash",[Oe.lineDash]),un.push("lineDashOffset",Oe.lineDashOffset)),A&&un.push("fillStyle",je.fillStyle),un.push("textBaseline","middle"),un.push("textAlign","center");const _n=.5-At;let Mn=At*dn+_n*St;const qt=[],gn=[];let gt,In=0,Ve=0,ze=0,Ge=0;for(let wt=0,Wt=Bt.length;wtb?b-dt:xe,dn=Oe+_t>k?k-_t:Oe,un=Bt[3]+en*At[0]+Bt[1],tn=Bt[0]+dn*At[1]+Bt[2],mn=zt-Bt[3],yn=Jt-Bt[0];let _n;return(Tt||0!==Ct)&&(M[0]=mn,Me[0]=mn,M[1]=yn,j[1]=yn,j[0]=mn+un,ge[0]=j[0],ge[1]=yn+tn,Me[1]=ge[1]),0!==Ct?(_n=(0,X.Zz)((0,X.vt)(),A,H,1,1,Ct,-A,-H),(0,X.Bb)(_n,M),(0,X.Bb)(_n,j),(0,X.Bb)(_n,ge),(0,X.Bb)(_n,Me),(0,h.N)(Math.min(M[0],j[0],ge[0],Me[0]),Math.min(M[1],j[1],ge[1],Me[1]),Math.max(M[0],j[0],ge[0],Me[0]),Math.max(M[1],j[1],ge[1],Me[1]),I)):(0,h.N)(Math.min(mn,mn+un),Math.min(yn,yn+tn),Math.max(mn,mn+un),Math.max(yn,yn+tn),I),St&&(zt=Math.round(zt),Jt=Math.round(Jt)),{drawImageX:zt,drawImageY:Jt,drawImageW:en,drawImageH:dn,originX:dt,originY:_t,declutterBox:{minX:I[0],minY:I[1],maxX:I[2],maxY:I[3],value:Gt},canvasTransform:_n,scale:At}}replayImageOrLabel_(b,k,A,H,xe,Oe,je){const dt=H.declutterBox,_t=je?je[2]*H.scale[0]/2:0;return dt.minX-_t<=k[0]&&dt.maxX+_t>=0&&dt.minY-_t<=k[1]&&dt.maxY+_t>=0&&(!(!Oe&&!je)&&this.replayTextBackground_(b,M,j,ge,Me,Oe,je),(0,u.Jw)(b,H.canvasTransform,xe,A,H.originX,H.originY,H.drawImageW,H.drawImageH,H.drawImageX,H.drawImageY,H.scale)),!0}fill_(b){const k=this.alignAndScaleFill_;if(k){const A=(0,X.Bb)(this.renderedTransform_,[0,0]),H=512*this.pixelRatio;b.save(),b.translate(A[0]%H,A[1]%H),1!==k&&b.scale(k,k),b.rotate(this.viewRotation_)}b.fill(),k&&b.restore()}setStrokeStyle_(b,k){b.strokeStyle=k[1],b.lineWidth=k[2],b.lineCap=k[3],b.lineJoin=k[4],b.miterLimit=k[5],b.lineDashOffset=k[7],b.setLineDash(k[6])}drawLabelWithPointPlacement_(b,k,A,H){const xe=this.textStates[k],Oe=this.createLabel(b,k,H,A),je=this.strokeStates[A],Ze=this.pixelRatio,dt=se(Array.isArray(b)?b[0]:b,xe.textAlign||u.MY),_t=ve[xe.textBaseline||u.M8],Ct=je&&je.lineWidth?je.lineWidth:0;return{label:Oe,anchorX:dt*(Oe.width/Ze-2*xe.scale[0])+2*(.5-dt)*Ct,anchorY:_t*Oe.height/Ze+2*(.5-_t)*Ct}}execute_(b,k,A,H,xe,Oe,je,Ze){const dt=this.zIndexContext_;let _t;this.pixelCoordinates_&&(0,P.aI)(A,this.renderedTransform_)?_t=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),_t=(0,K.Rc)(this.coordinates,0,this.coordinates.length,2,A,this.pixelCoordinates_),(0,X.k3)(this.renderedTransform_,A));let Ct=0;const At=H.length;let Bt,Tt,Gt,zt,Jt,en,dn,un,tn,mn,yn,_n,Mn,St=0,qt=0,gn=0,In=null,Ve=null;const ze=this.coordinateCache_,Ge=this.viewRotation_,gt=Math.round(1e12*Math.atan2(-A[1],A[0]))/1e12,wt={context:b,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:Ge},Wt=this.instructions!=H||this.overlaps?0:200;let Ht,hn,sn,Ln;for(;CtWt&&(this.fill_(b),qt=0),gn>Wt&&(b.stroke(),gn=0),!qt&&!gn&&(b.beginPath(),Jt=NaN,en=NaN),++Ct;break;case x.CIRCLE:St=$t[1];const Qn=_t[St],hi=_t[St+1],Wn=_t[St+2]-Qn,pn=_t[St+3]-hi,wn=Math.sqrt(Wn*Wn+pn*pn);b.moveTo(Qn+wn,hi),b.arc(Qn,hi,wn,0,2*Math.PI,!0),++Ct;break;case x.CLOSE_PATH:b.closePath(),++Ct;break;case x.CUSTOM:St=$t[1],Bt=$t[2];const sr=$t[4],hr=$t[5];wt.geometry=$t[3],wt.feature=Ht,Ct in ze||(ze[Ct]=[]);const Li=ze[Ct];hr?hr(_t,St,Bt,2,Li):(Li[0]=_t[St],Li[1]=_t[St+1],Li.length=2),dt&&(dt.zIndex=$t[6]),sr(Li,wt),++Ct;break;case x.DRAW_IMAGE:St=$t[1],Bt=$t[2],tn=$t[3],Tt=$t[4],Gt=$t[5];let fr=$t[6];const Rr=$t[7],bn=$t[8],Wr=$t[9],pr=$t[10];let li=$t[11];const tr=$t[12];let Pr=$t[13];zt=$t[14]||"declutter";const ar=$t[15];if(!tn&&$t.length>=20){mn=$t[19],yn=$t[20],_n=$t[21],Mn=$t[22];const Si=this.drawLabelWithPointPlacement_(mn,yn,_n,Mn);tn=Si.label,$t[3]=tn,Tt=(Si.anchorX-$t[23])*this.pixelRatio,$t[4]=Tt,Gt=(Si.anchorY-$t[24])*this.pixelRatio,$t[5]=Gt,fr=tn.height,$t[6]=fr,Pr=tn.width,$t[13]=Pr}let ji,oi,wi,br;$t.length>25&&(ji=$t[25]),$t.length>17?(oi=$t[16],wi=$t[17],br=$t[18]):(oi=u.Tq,wi=!1,br=!1),pr&>?li+=Ge:!pr&&!gt&&(li-=Ge);let ro=0;for(;St!ht.includes(ct)),on={},Ot=class Nt{constructor(b,k,A,H,xe,Oe,je){this.maxExtent_=b,this.overlaps_=H,this.pixelRatio_=A,this.resolution_=k,this.renderBuffer_=Oe,this.executorsByZIndex_={},this.hitDetectionContext_=null,this.hitDetectionTransform_=(0,X.vt)(),this.renderedContext_=null,this.deferredZIndexContexts_=[],this.createExecutors_(xe,je)}clip(b,k){const A=this.getClipCoords(k);b.beginPath(),b.moveTo(A[0],A[1]),b.lineTo(A[2],A[3]),b.lineTo(A[4],A[5]),b.lineTo(A[6],A[7]),b.clip()}createExecutors_(b,k){for(const A in b){let H=this.executorsByZIndex_[A];void 0===H&&(H={},this.executorsByZIndex_[A]=H);const xe=b[A];for(const Oe in xe)H[Oe]=new Y(this.resolution_,this.pixelRatio_,this.overlaps_,xe[Oe],k)}}hasExecutors(b){for(const k in this.executorsByZIndex_){const A=this.executorsByZIndex_[k];for(let H=0,xe=b.length;Hk)break;let Ze=A[je];Ze||(Ze=[],A[je]=Ze),Ze.push(4*((ct+xe)*b+(ct+Oe))+3),xe>0&&Ze.push(4*((ct-xe)*b+(ct+Oe))+3),Oe>0&&(Ze.push(4*((ct+xe)*b+(ct-Oe))+3),xe>0&&Ze.push(4*((ct-xe)*b+(ct-Oe))+3))}const H=[];for(let xe=0,Oe=A.length;xe0){if(!Oe||"Image"!==St&&"Text"!==St||Oe.includes(un)){const Mn=(At[yn]-3)/4,qt=H-Mn%je,gn=H-(Mn/je|0),In=xe(un,tn,qt*qt+gn*gn);if(In)return In}_t.clearRect(0,0,je,je);break}}const Tt=Object.keys(this.executorsByZIndex_).map(Number);let Gt,zt,Jt,en,dn;for(Tt.sort(P.V_),Gt=Tt.length-1;Gt>=0;--Gt){const un=Tt[Gt].toString();for(Jt=this.executorsByZIndex_[un],zt=nt.length-1;zt>=0;--zt)if(St=nt[zt],en=Jt[St],void 0!==en&&(dn=en.executeHitDetection(_t,Ze,A,Bt,Ct),dn))return dn}}getClipCoords(b){const k=this.maxExtent_;if(!k)return null;const A=k[0],H=k[1],xe=k[2],Oe=k[3],je=[A,H,A,Oe,xe,Oe,xe,H];return(0,K.Rc)(je,0,8,2,b,je),je}isEmpty(){return(0,De.p)(this.executorsByZIndex_)}execute(b,k,A,H,xe,Oe,je){const Ze=Object.keys(this.executorsByZIndex_).map(Number);let dt,_t,Ct,At,St,Bt;for(Ze.sort(P.V_),Oe=Oe||nt,je&&Ze.reverse(),dt=0,_t=Ze.length;dt<_t;++dt){const Tt=Ze[dt].toString();for(St=this.executorsByZIndex_[Tt],Ct=0,At=Oe.length;Ct{b.forEach(k=>{k.draw(this.renderedContext_),k.clear()})})}};var rt=a(8933),ce=a(8130),ee=a(9179);const be=class re extends g{constructor(b,k,A,H,xe,Oe,je){super(),this.context_=b,this.pixelRatio_=k,this.extent_=A,this.transform_=H,this.transformRotation_=H?(0,Ae.Mg)(Math.atan2(H[1],H[0]),10):0,this.viewRotation_=xe,this.squaredTolerance_=Oe,this.userTransform_=je,this.contextFillState_=null,this.contextStrokeState_=null,this.contextTextState_=null,this.fillState_=null,this.strokeState_=null,this.image_=null,this.imageAnchorX_=0,this.imageAnchorY_=0,this.imageHeight_=0,this.imageOpacity_=0,this.imageOriginX_=0,this.imageOriginY_=0,this.imageRotateWithView_=!1,this.imageRotation_=0,this.imageScale_=[0,0],this.imageWidth_=0,this.text_="",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=!1,this.textRotation_=0,this.textScale_=[0,0],this.textFillState_=null,this.textStrokeState_=null,this.textState_=null,this.pixelCoordinates_=[],this.tmpLocalTransform_=(0,X.vt)()}drawImages_(b,k,A,H){if(!this.image_)return;const xe=(0,K.Rc)(b,k,A,H,this.transform_,this.pixelCoordinates_),Oe=this.context_,je=this.tmpLocalTransform_,Ze=Oe.globalAlpha;1!=this.imageOpacity_&&(Oe.globalAlpha=Ze*this.imageOpacity_);let dt=this.imageRotation_;0===this.transformRotation_&&(dt-=this.viewRotation_),this.imageRotateWithView_&&(dt+=this.viewRotation_);for(let _t=0,Ct=xe.length;_tCt*this.pixelRatio_),lineDashOffset:(Oe||u.vk)*this.pixelRatio_,lineJoin:void 0!==je?je:u._K,lineWidth:(void 0!==Ze?Ze:u.aq)*this.pixelRatio_,miterLimit:void 0!==dt?dt:u.eL,strokeStyle:(0,y.F)(A||u.NT)}}else this.strokeState_=null}setImageStyle(b){let k;if(!b||!(k=b.getSize()))return void(this.image_=null);const A=b.getPixelRatio(this.pixelRatio_),H=b.getAnchor(),xe=b.getOrigin();this.image_=b.getImage(this.pixelRatio_),this.imageAnchorX_=H[0]*A,this.imageAnchorY_=H[1]*A,this.imageHeight_=k[1]*A,this.imageOpacity_=b.getOpacity(),this.imageOriginX_=xe[0],this.imageOriginY_=xe[1],this.imageRotateWithView_=b.getRotateWithView(),this.imageRotation_=b.getRotation();const Oe=b.getScaleArray();this.imageScale_=[Oe[0]*this.pixelRatio_/A,Oe[1]*this.pixelRatio_/A],this.imageWidth_=k[0]*A}setTextStyle(b){if(b){const k=b.getFill();if(k){const St=k.getColor();this.textFillState_={fillStyle:(0,y.F)(St||u.qY)}}else this.textFillState_=null;const A=b.getStroke();if(A){const St=A.getColor(),Bt=A.getLineCap(),Tt=A.getLineDash(),Gt=A.getLineDashOffset(),zt=A.getLineJoin(),Jt=A.getWidth(),en=A.getMiterLimit();this.textStrokeState_={lineCap:void 0!==Bt?Bt:u._m,lineDash:Tt||u.Oq,lineDashOffset:Gt||u.vk,lineJoin:void 0!==zt?zt:u._K,lineWidth:void 0!==Jt?Jt:u.aq,miterLimit:void 0!==en?en:u.eL,strokeStyle:(0,y.F)(St||u.NT)}}else this.textStrokeState_=null;const H=b.getFont(),xe=b.getOffsetX(),Oe=b.getOffsetY(),je=b.getRotateWithView(),Ze=b.getRotation(),dt=b.getScaleArray(),_t=b.getText(),Ct=b.getTextAlign(),At=b.getTextBaseline();this.textState_={font:void 0!==H?H:u.ZV,textAlign:void 0!==Ct?Ct:u.MY,textBaseline:void 0!==At?At:u.M8},this.text_=void 0!==_t?Array.isArray(_t)?_t.reduce((St,Bt,Tt)=>St+(Tt%2?" ":Bt),""):_t:"",this.textOffsetX_=void 0!==xe?this.pixelRatio_*xe:0,this.textOffsetY_=void 0!==Oe?this.pixelRatio_*Oe:0,this.textRotateWithView_=void 0!==je&&je,this.textRotation_=void 0!==Ze?Ze:0,this.textScale_=[this.pixelRatio_*dt[0],this.pixelRatio_*dt[1]]}else this.text_=""}};var Ke=a(3117),ft=a(3036);const le=.5;var Je=a(7068);const ot={Point:function Lt(ct,b,k,A,H,xe){const Oe=k.getImage(),je=k.getText(),Ze=je&&je.getText(),dt=xe&&Oe&&Ze?{}:void 0;if(Oe){if(Oe.getImageState()!=Je.A.LOADED)return;const _t=ct.getBuilder(k.getZIndex(),"Image");_t.setImageStyle(Oe,dt),_t.drawPoint(b,A,H)}if(Ze){const _t=ct.getBuilder(k.getZIndex(),"Text");_t.setTextStyle(je,dt),_t.drawText(b,A,H)}},LineString:function Te(ct,b,k,A,H){const xe=k.getStroke();if(xe){const je=ct.getBuilder(k.getZIndex(),"LineString");je.setFillStrokeStyle(null,xe),je.drawLineString(b,A,H)}const Oe=k.getText();if(Oe&&Oe.getText()){const je=ct.getBuilder(k.getZIndex(),"Text");je.setTextStyle(Oe),je.drawText(b,A,H)}},Polygon:function Un(ct,b,k,A,H){const xe=k.getFill(),Oe=k.getStroke();if(xe||Oe){const Ze=ct.getBuilder(k.getZIndex(),"Polygon");Ze.setFillStrokeStyle(xe,Oe),Ze.drawPolygon(b,A,H)}const je=k.getText();if(je&&je.getText()){const Ze=ct.getBuilder(k.getZIndex(),"Text");Ze.setTextStyle(je),Ze.drawText(b,A,H)}},MultiPoint:function Ut(ct,b,k,A,H,xe){const Oe=k.getImage(),je=Oe&&0!==Oe.getOpacity(),Ze=k.getText(),dt=Ze&&Ze.getText(),_t=xe&&je&&dt?{}:void 0;if(je){if(Oe.getImageState()!=Je.A.LOADED)return;const Ct=ct.getBuilder(k.getZIndex(),"Image");Ct.setImageStyle(Oe,_t),Ct.drawMultiPoint(b,A,H)}if(dt){const Ct=ct.getBuilder(k.getZIndex(),"Text");Ct.setTextStyle(Ze,_t),Ct.drawText(b,A,H)}},MultiLineString:function He(ct,b,k,A,H){const xe=k.getStroke();if(xe){const je=ct.getBuilder(k.getZIndex(),"LineString");je.setFillStrokeStyle(null,xe),je.drawMultiLineString(b,A,H)}const Oe=k.getText();if(Oe&&Oe.getText()){const je=ct.getBuilder(k.getZIndex(),"Text");je.setTextStyle(Oe),je.drawText(b,A,H)}},MultiPolygon:function at(ct,b,k,A,H){const xe=k.getFill(),Oe=k.getStroke();if(Oe||xe){const Ze=ct.getBuilder(k.getZIndex(),"Polygon");Ze.setFillStrokeStyle(xe,Oe),Ze.drawMultiPolygon(b,A,H)}const je=k.getText();if(je&&je.getText()){const Ze=ct.getBuilder(k.getZIndex(),"Text");Ze.setTextStyle(je),Ze.drawText(b,A,H)}},GeometryCollection:function lt(ct,b,k,A,H,xe){const Oe=b.getGeometriesArray();let je,Ze;for(je=0,Ze=Oe.length;je0;return Ct&&Promise.all(Ze).then(()=>H(null)),function nn(ct,b,k,A,H,xe,Oe){const je=k.getGeometryFunction()(b);if(!je)return;const Ze=je.simplifyTransformed(A,H);k.getRenderer()?$e(ct,Ze,k,b,Oe):(0,ot[Ze.getType()])(ct,Ze,k,b,Oe,xe)}(ct,b,k,A,xe,Oe,je),Ct}function $e(ct,b,k,A,H){if("GeometryCollection"!=b.getType())ct.getBuilder(k.getZIndex(),"Default").drawCustom(b,A,k.getRenderer(),k.getHitDetectionRenderer(),H);else{const Oe=b.getGeometries();for(let je=0,Ze=Oe.length;je{if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){const A=[this.context.canvas.width,this.context.canvas.height];(0,X.Bb)(this.pixelTransform,A);const H=this.renderedCenter_,xe=this.renderedResolution_,Oe=this.renderedRotation_,je=this.renderedProjection_,Ze=this.wrappedRenderedExtent_,dt=this.getLayer(),_t=[],Ct=A[0]*le,At=A[1]*le;_t.push(this.getRenderTransform(H,xe,Oe,le,Ct,At,0).slice());const St=dt.getSource(),Bt=je.getExtent();if(St.getWrapX()&&je.canWrapX()&&!(0,h.ms)(Bt,Ze)){let Gt=Ze[0];const zt=(0,h.RG)(Bt);let en,Jt=0;for(;GtBt[2];)++Jt,en=zt*Jt,_t.push(this.getRenderTransform(H,xe,Oe,le,Ct,At,en).slice()),Gt-=zt}const Tt=(0,ft.Tf)();this.hitDetectionImageData_=function Q(ct,b,k,A,H,xe,Oe,je,Ze){const dt=Ze?(0,ft.JR)(H,Ze):H,At=(0,Re.Y)(ct[0]*le,ct[1]*le);At.imageSmoothingEnabled=!1;const St=At.canvas,Bt=new be(At,le,H,null,Oe,je,Ze?(0,ft.FO)((0,ft.Tf)(),Ze):null),Tt=k.length,Gt=Math.floor(16777215/Tt),zt={};for(let en=1;en<=Tt;++en){const dn=k[en-1],un=dn.getStyleFunction()||A;if(!un)continue;let tn=un(dn,xe);if(!tn)continue;Array.isArray(tn)||(tn=[tn]);const yn=(en*Gt).toString(16).padStart(7,"#00000");for(let _n=0,Mn=tn.length;_nCt=Bt.forEachFeatureAtCoordinate(b,Oe,je,A,_t,St&&k.declutter[St]?k.declutter[St].all().map(Tt=>Tt.value):null)),Ct}handleFontsChanged(){const b=this.getLayer();b.getVisible()&&this.replayGroup_&&b.changed()}handleStyleImageChange_(b){this.renderIfReadyAndVisible()}prepareFrame(b){const k=this.getLayer(),A=k.getSource();if(!A)return!1;const H=b.viewHints[ce.A.ANIMATING],xe=b.viewHints[ce.A.INTERACTING],Oe=k.getUpdateWhileAnimating(),je=k.getUpdateWhileInteracting();if(this.ready&&!Oe&&H||!je&&xe)return this.animatingOrInteracting_=!0,!0;this.animatingOrInteracting_=!1;const Ze=b.extent,dt=b.viewState,_t=dt.projection,Ct=dt.resolution,At=b.pixelRatio,St=k.getRevision(),Bt=k.getRenderBuffer();let Tt=k.getRenderOrder();void 0===Tt&&(Tt=It);const Gt=dt.center.slice(),zt=(0,h.r)(Ze,Bt*Ct),Jt=zt.slice(),en=[zt.slice()],dn=_t.getExtent();if(A.getWrapX()&&_t.canWrapX()&&!(0,h.ms)(dn,b.extent)){const ze=(0,h.RG)(dn),Ge=Math.max((0,h.RG)(zt)/2,ze);zt[0]=dn[0]-Ge,zt[2]=dn[2]+Ge,(0,pt.Li)(Gt,_t);const gt=(0,h.Li)(en[0],_t);gt[0]dn[0]&>[2]>dn[2]&&en.push([gt[0]-ze,gt[1],gt[2]-ze,gt[3]])}if(this.ready&&this.renderedResolution_==Ct&&this.renderedRevision_==St&&this.renderedRenderOrder_==Tt&&(0,h.ms)(this.wrappedRenderedExtent_,zt))return(0,P.aI)(this.renderedExtent_,Jt)||(this.hitDetectionImageData_=null,this.renderedExtent_=Jt),this.renderedCenter_=Gt,this.replayGroupChanged=!1,!0;this.replayGroup_=null;const un=new L(kt(Ct,At),zt,Ct,At),tn=(0,ft.Tf)();let mn;if(tn){for(let ze=0,Ge=en.length;ze{let gt;const wt=ze.getStyleFunction()||k.getStyleFunction();if(wt&&(gt=wt(ze,Ct)),gt){const Wt=this.renderFeature(ze,yn,gt,un,mn,this.getLayer().getDeclutter(),Ge);_n=_n&&!Wt}},qt=(0,ft.JR)(zt,_t),gn=A.getFeaturesInExtent(qt);Tt&&gn.sort(Tt);for(let ze=0,Ge=gn.length;ze{"use strict";function o(u,P,T){return Math.min(Math.max(u,P),T)}function c(u,P,T,E,W,ne){const de=W-T,ie=ne-E;if(0!==de||0!==ie){const Z=((u-T)*de+(P-E)*ie)/(de*de+ie*ie);Z>1?(T=W,E=ne):Z>0&&(T+=de*Z,E+=ie*Z)}return O(u,P,T,E)}function O(u,P,T,E){const W=T-u,ne=E-P;return W*W+ne*ne}function d(u){const P=u.length;for(let E=0;Ene&&(ne=Z,W=ie)}if(0===ne)return null;const de=u[W];u[W]=u[E],u[E]=de;for(let ie=E+1;ie=0;E--){T[E]=u[E][P]/u[E][E];for(let W=E-1;W>=0;W--)u[W][P]-=u[W][E]*T[E]}return T}function C(u){return u*Math.PI/180}function x(u,P){const T=u%P;return T*P<0?T+P:T}function D(u,P,T){return u+T*(P-u)}function p(u,P){const T=Math.pow(10,P);return Math.round(u*T)/T}function y(u,P){return Math.floor(p(u,P))}function h(u,P){return Math.ceil(p(u,P))}a.d(Ie,{Cc:()=>D,KU:()=>d,Mg:()=>p,Q1:()=>c,RI:()=>y,eh:()=>C,hG:()=>O,mk:()=>h,qE:()=>o,xP:()=>x})},973:(ut,Ie,a)=>{"use strict";function o(O){for(const d in O)delete O[d]}function c(O){let d;for(d in O)return!1;return!d}a.d(Ie,{I:()=>o,p:()=>c})},3036:(ut,Ie,a)=>{"use strict";a.d(Ie,{Ig:()=>O,MF:()=>w,Av:()=>ge,RJ:()=>L,tI:()=>Ee,Ad:()=>rt,SD:()=>ee,Jt:()=>N,hO:()=>V,RG:()=>Y,FO:()=>tt,Tf:()=>on,R6:()=>J,te:()=>Ot,JR:()=>ce,vN:()=>re,pd:()=>Re});const O={radians:6370997/(2*Math.PI),degrees:2*Math.PI*6370997/360,ft:.3048,m:1,"us-ft":1200/3937},w=class d{constructor(Q){this.code_=Q.code,this.units_=Q.units,this.extent_=void 0!==Q.extent?Q.extent:null,this.worldExtent_=void 0!==Q.worldExtent?Q.worldExtent:null,this.axisOrientation_=void 0!==Q.axisOrientation?Q.axisOrientation:"enu",this.global_=void 0!==Q.global&&Q.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=Q.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=Q.metersPerUnit}canWrapX(){return this.canWrapX_}getCode(){return this.code_}getExtent(){return this.extent_}getUnits(){return this.units_}getMetersPerUnit(){return this.metersPerUnit_||O[this.units_]}getWorldExtent(){return this.worldExtent_}getAxisOrientation(){return this.axisOrientation_}isGlobal(){return this.global_}setGlobal(Q){this.global_=Q,this.canWrapX_=!(!Q||!this.extent_)}getDefaultTileGrid(){return this.defaultTileGrid_}setDefaultTileGrid(Q){this.defaultTileGrid_=Q}setExtent(Q){this.extent_=Q,this.canWrapX_=!(!this.global_||!Q)}setWorldExtent(Q){this.worldExtent_=Q}setGetPointResolution(Q){this.getPointResolutionFunc_=Q}getPointResolutionFunc(){return this.getPointResolutionFunc_}},C=6378137,x=Math.PI*C,D=[-x,-x,x,x],p=[-180,-85,180,85],g=C*Math.log(Math.tan(Math.PI/2));class y extends w{constructor(Q){super({code:Q,units:"m",extent:D,global:!0,worldExtent:p,getPointResolution:function(Be,Je){return Be/Math.cosh(Je[1]/C)}})}}const h=[new y("EPSG:3857"),new y("EPSG:102100"),new y("EPSG:102113"),new y("EPSG:900913"),new y("http://www.opengis.net/def/crs/EPSG/0/3857"),new y("http://www.opengis.net/gml/srs/epsg.xml#3857")];function u(le,Q,Be){const Je=le.length;Be=Be>1?Be:2,void 0===Q&&(Q=Be>2?le.slice():new Array(Je));for(let qe=0;qeg?ot=g:ot<-g&&(ot=-g),Q[qe+1]=ot}return Q}function P(le,Q,Be){const Je=le.length;Be=Be>1?Be:2,void 0===Q&&(Q=Be>2?le.slice():new Array(Je));for(let qe=0;qe=-180&&le[0]<=180&&le[1]>=-90&&le[1]<=90&&(te=!1,(0,z.R8)("Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.")),le)}function ce(le,Q){return ht?De(le,Q,ht):le}function ee(le,Q){return ht?De(le,ht,Q):le}function re(le,Q){if(!ht)return le;const Be=N(Q).getMetersPerUnit(),Je=ht.getMetersPerUnit();return Be&&Je?le*Be/Je:le}!function ft(){I(h),I(de),function M(le,Q,Be,Je){le.forEach(function(qe){Q.forEach(function(ot){Ae(qe,ot,Be),Ae(ot,qe,Je)})})}(de,h,u,P)}()},8133:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>O});var o=a(4888);const O=class c extends o.Ay{constructor(w,C,x,D){super(w),this.inversePixelTransform=C,this.frameState=x,this.context=D}}},8933:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>o});const o={PRERENDER:"prerender",POSTRENDER:"postrender",PRECOMPOSE:"precompose",POSTCOMPOSE:"postcompose",RENDERCOMPLETE:"rendercomplete"}},8045:(ut,Ie,a)=>{"use strict";a.d(Ie,{Jw:()=>ve,M8:()=>T,MY:()=>P,NT:()=>u,Oq:()=>p,TA:()=>Ae,Tq:()=>E,ZV:()=>C,_K:()=>y,_m:()=>D,aq:()=>W,eL:()=>h,fZ:()=>ae,jT:()=>ke,qY:()=>x,vk:()=>g,yY:()=>ne});var o=a(4037),c=a(6656),O=a(973),d=a(5664),w=a(215);const C="10px sans-serif",x="#000",D="round",p=[],g=0,y="round",h=10,u="#000",P="center",T="middle",E=[0,0,0,0],W=1,ne=new o.A;let ie,de=null;const Z={},ae=function(){const z="32px ",te=["monospace","serif"],L=te.length,q="wmytzilWMYTZIL@#/&?$%10\uf013";let J,X;function K(V,I,M){let j=!0;for(let ge=0;geMath.max(q,Ce(Se,J)),0);return te[z]=L,L}function ke(Se,z){const te=[],L=[],q=[];let J=0,X=0,K=0,N=0;for(let V=0,I=z.length;V<=I;V+=2){const M=z[V];if("\n"===M||V===I){J=Math.max(J,X),q.push(X),X=0,K+=N;continue}const j=z[V+1]||Se.font,ge=Ce(j,M);te.push(ge),X+=ge;const Me=Le(j);L.push(Me),N=Math.max(N,Me)}return{width:J,height:K,widths:te,heights:L,lineWidths:q}}function ve(Se,z,te,L,q,J,X,K,N,V,I){Se.save(),1!==te&&(void 0===Se.globalAlpha?Se.globalAlpha=M=>M.globalAlpha*=te:Se.globalAlpha*=te),z&&Se.transform.apply(Se,z),L.contextInstructions?(Se.translate(N,V),Se.scale(I[0],I[1]),function ye(Se,z){const te=Se.contextInstructions;for(let L=0,q=te.length;L{"use strict";a.d(Ie,{A:()=>O});var o=a(5664);const O=class c{constructor(){this.instructions_=[],this.zIndex=0,this.offset_=0,this.context_=new Proxy(CanvasRenderingContext2D.prototype,{get:(w,C)=>{if("function"==typeof(0,o.lr)()[C])return this.instructions_[this.zIndex+this.offset_]||(this.instructions_[this.zIndex+this.offset_]=[]),this.instructions_[this.zIndex+this.offset_].push(C),this.pushMethodArgs_},set:(w,C,x)=>(this.instructions_[this.zIndex+this.offset_]||(this.instructions_[this.zIndex+this.offset_]=[]),this.instructions_[this.zIndex+this.offset_].push(C,x),!0)})}pushMethodArgs_=(...w)=>(this.instructions_[this.zIndex+this.offset_].push(w),this);getContext(){return this.context_}draw(w){this.instructions_.forEach(C=>{for(let x=0,D=C.length;x{"use strict";a.d(Ie,{A:()=>C});var o=a(8864),c=a(7068),O=a(5935),d=a(8618);const C=class w extends O.A{constructor(D){super(),this.ready=!0,this.boundHandleImageChange_=this.handleImageChange_.bind(this),this.layer_=D,this.declutterExecutorGroup=null}getFeatures(D){return(0,d.b0)()}getData(D){return null}prepareFrame(D){return(0,d.b0)()}renderFrame(D,p){return(0,d.b0)()}loadedTileCallback(D,p,g){D[p]||(D[p]={}),D[p][g.tileCoord.toString()]=g}createLoadedTileFinder(D,p,g){return(y,h)=>{const u=this.loadedTileCallback.bind(this,g,y);return D.forEachLoadedTile(p,y,h,u)}}forEachFeatureAtCoordinate(D,p,g,y,h){}getLayer(){return this.layer_}handleFontsChanged(){}handleImageChange_(D){const p=D.target;(p.getState()===c.A.LOADED||p.getState()===c.A.ERROR)&&this.renderIfReadyAndVisible()}loadImage(D){let p=D.getState();return p!=c.A.LOADED&&p!=c.A.ERROR&&D.addEventListener(o.A.CHANGE,this.boundHandleImageChange_),p==c.A.IDLE&&(D.load(),p=D.getState()),p==c.A.LOADED}renderIfReadyAndVisible(){const D=this.getLayer();D&&D.getVisible()&&"ready"===D.getSourceState()&&D.changed()}renderDeferred(D){}disposeInternal(){delete this.layer_,super.disposeInternal()}}},7350:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>P,B:()=>g});var o=a(403),c=a(8133),O=a(8933),d=a(4059),w=a(9984),C=a(642),x=a(5664),D=a(9609),p=a(4378);const g=[];let y=null;const P=class u extends o.A{constructor(E){super(E),this.container=null,this.tempTransform=(0,w.vt)(),this.pixelTransform=(0,w.vt)(),this.inversePixelTransform=(0,w.vt)(),this.context=null,this.deferredContext_=null,this.containerReused=!1,this.pixelContext_=null,this.frameState=null}getImageData(E,W,ne){let de;y||function h(){y=(0,x.Y)(1,1,void 0,{willReadFrequently:!0})}(),y.clearRect(0,0,1,1);try{y.drawImage(E,W,ne,1,1,0,0,1,1),de=y.getImageData(0,0,1,1).data}catch{return y=null,null}return de}getBackground(E){let ne=this.getLayer().getBackground();return"function"==typeof ne&&(ne=ne(E.viewState.resolution)),ne||void 0}useContainer(E,W,ne){const de=this.getLayer().getClassName();let ie,Z;if(E&&E.className===de&&(!ne||E&&E.style.backgroundColor&&(0,D.aI)((0,C._j)(E.style.backgroundColor),(0,C._j)(ne)))){const ae=E.firstElementChild;ae instanceof HTMLCanvasElement&&(Z=ae.getContext("2d"))}if(Z&&Z.canvas.style.transform===W?(this.container=E,this.context=Z,this.containerReused=!0):this.containerReused?(this.container=null,this.context=null,this.containerReused=!1):this.container&&(this.container.style.backgroundColor=null),!this.container){ie=document.createElement("div"),ie.className=de;let ae=ie.style;ae.position="absolute",ae.width="100%",ae.height="100%",Z=(0,x.Y)();const Le=Z.canvas;ie.appendChild(Le),ae=Le.style,ae.position="absolute",ae.left="0",ae.transformOrigin="top left",this.container=ie,this.context=Z}!this.containerReused&&ne&&!this.container.style.backgroundColor&&(this.container.style.backgroundColor=ne)}clipUnrotated(E,W,ne){const de=(0,p.Py)(ne),ie=(0,p.WU)(ne),Z=(0,p.k_)(ne),ae=(0,p.R)(ne);(0,w.Bb)(W.coordinateToPixelTransform,de),(0,w.Bb)(W.coordinateToPixelTransform,ie),(0,w.Bb)(W.coordinateToPixelTransform,Z),(0,w.Bb)(W.coordinateToPixelTransform,ae);const Le=this.inversePixelTransform;(0,w.Bb)(Le,de),(0,w.Bb)(Le,ie),(0,w.Bb)(Le,Z),(0,w.Bb)(Le,ae),E.save(),E.beginPath(),E.moveTo(Math.round(de[0]),Math.round(de[1])),E.lineTo(Math.round(ie[0]),Math.round(ie[1])),E.lineTo(Math.round(Z[0]),Math.round(Z[1])),E.lineTo(Math.round(ae[0]),Math.round(ae[1])),E.clip()}dispatchRenderEvent_(E,W,ne){const de=this.getLayer();if(de.hasListener(E)){const ie=new c.A(E,this.inversePixelTransform,ne,W);de.dispatchEvent(ie)}}preRender(E,W){this.frameState=W,!W.declutter&&this.dispatchRenderEvent_(O.A.PRERENDER,E,W)}postRender(E,W){W.declutter||this.dispatchRenderEvent_(O.A.POSTRENDER,E,W)}renderDeferredInternal(E){}getRenderContext(E){return E.declutter&&!this.deferredContext_&&(this.deferredContext_=new d.A),E.declutter?this.deferredContext_.getContext():this.context}renderDeferred(E){E.declutter&&(this.dispatchRenderEvent_(O.A.PRERENDER,this.context,E),E.declutter&&this.deferredContext_&&(this.deferredContext_.draw(this.context),this.deferredContext_.clear()),this.renderDeferredInternal(E),this.dispatchRenderEvent_(O.A.POSTRENDER,this.context,E))}getRenderTransform(E,W,ne,de,ie,Z,ae){const Ce=de/W;return(0,w.Zz)(this.tempTransform,ie/2,Z/2,Ce,-Ce,-ne,-E[0]+ae,-E[1])}disposeInternal(){delete this.frameState,super.disposeInternal()}}},1947:(ut,Ie,a)=>{"use strict";a.d(Ie,{a$:()=>d,b8:()=>c,cq:()=>w,dv:()=>O});var o=a(8092);function c(C){if(void 0!==C)return 0}function O(C){if(void 0!==C)return C}function d(C){const x=2*Math.PI/C;return function(D,p){return p?D:void 0!==D?D=Math.floor(D/x+.5)*x:void 0}}function w(C){const x=void 0===C?(0,o.eh)(5):C;return function(D,p){return p||void 0===D?D:Math.abs(D)<=x?0:D}}},8443:(ut,Ie,a)=>{"use strict";function c(w){return w[0]>0&&w[1]>0}function O(w,C,x){return void 0===x&&(x=[0,0]),x[0]=w[0]*C+.5|0,x[1]=w[1]*C+.5|0,x}function d(w,C){return Array.isArray(w)?w:(void 0===C?C=[w,w]:(C[0]=w,C[1]=w),C)}a.d(Ie,{Ie:()=>c,hs:()=>O,xq:()=>d})},8343:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>w});var o=a(4037),c=a(3036);function d(C){return C?Array.isArray(C)?function(x){return C}:"function"==typeof C?C:function(x){return[C]}:null}const w=class O extends o.A{constructor(x){super(),this.projection=(0,c.Jt)(x.projection),this.attributions_=d(x.attributions),this.attributionsCollapsible_=void 0===x.attributionsCollapsible||x.attributionsCollapsible,this.loading=!1,this.state_=void 0!==x.state?x.state:"ready",this.wrapX_=void 0!==x.wrapX&&x.wrapX,this.interpolate_=!!x.interpolate,this.viewResolver=null,this.viewRejector=null;const D=this;this.viewPromise_=new Promise(function(p,g){D.viewResolver=p,D.viewRejector=g})}getAttributions(){return this.attributions_}getAttributionsCollapsible(){return this.attributionsCollapsible_}getProjection(){return this.projection}getResolutions(x){return null}getView(){return this.viewPromise_}getState(){return this.state_}getWrapX(){return this.wrapX_}getInterpolate(){return this.interpolate_}refresh(){this.changed()}setAttributions(x){this.attributions_=d(x),this.changed()}setState(x){this.state_=x,this.changed()}}},5862:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>K});var o=a(4786),c=a(6832),O=a(4888),d=a(8864),w=a(6953),C=a(549),x=a(9984),D=a(4378),p=a(6022),g=a(9609),y=a(6603),h=a(3036),u=a(3939),P=a(3578),T=a(2052),E=a(6401),W=a(7133);const ne=(0,x.vt)();class de{constructor(V,I,M,j,ge,Me){this.id_=Me,this.type_=V,this.flatCoordinates_=I,this.flatInteriorPoints_=null,this.flatMidpoints_=null,this.ends_=M||null,this.properties_=ge,this.stride_=j}get(V){return this.properties_[V]}getExtent(){return this.extent_||(this.extent_="Point"===this.type_?(0,D.dP)(this.flatCoordinates_):(0,D.Vy)(this.flatCoordinates_,0,this.flatCoordinates_.length,2)),this.extent_}getFlatInteriorPoint(){if(!this.flatInteriorPoints_){const V=(0,D.q1)(this.getExtent());this.flatInteriorPoints_=(0,y.J)(this.flatCoordinates_,0,this.ends_,2,V,0)}return this.flatInteriorPoints_}getFlatInteriorPoints(){if(!this.flatInteriorPoints_){const V=(0,u.yJ)(this.flatCoordinates_,this.ends_),I=(0,T.C)(this.flatCoordinates_,0,V,2);this.flatInteriorPoints_=(0,y.p)(this.flatCoordinates_,0,V,2,I)}return this.flatInteriorPoints_}getFlatMidpoint(){return this.flatMidpoints_||(this.flatMidpoints_=(0,P.SH)(this.flatCoordinates_,0,this.flatCoordinates_.length,2,.5)),this.flatMidpoints_}getFlatMidpoints(){if(!this.flatMidpoints_){this.flatMidpoints_=[];const V=this.flatCoordinates_;let I=0;const M=this.ends_;for(let j=0,ge=M.length;j{if(V===this.squaredTolerance_)return this.simplifiedGeometry_;this.simplifiedGeometry_=this.clone(),I&&this.simplifiedGeometry_.applyTransform(I);const M=this.simplifiedGeometry_.getFlatCoordinates();let j;switch(this.type_){case"LineString":M.length=(0,p.P4)(M,0,this.simplifiedGeometry_.flatCoordinates_.length,this.simplifiedGeometry_.stride_,V,M,0),j=[M.length];break;case"MultiLineString":j=[],M.length=(0,p.AL)(M,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,V,M,0,j);break;case"Polygon":j=[],M.length=(0,p.Hg)(M,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,Math.sqrt(V),M,0,j)}return j&&(this.simplifiedGeometry_=new de(this.type_,M,j,2,this.properties_,this.id_)),this.squaredTolerance_=V,this.simplifiedGeometry_}),this}}de.prototype.getFlatCoordinates=de.prototype.getOrientedFlatCoordinates;const ae=de;var Le=a(8343),_e=a(7345);function Ce(N,V){return[[-1/0,-1/0,1/0,1/0]]}var Ue=a(9791),ve=a(8618),ye=a(973),Se=a(7443);function L(N,V){return function(I,M,j,ge,Me){const oe=this;!function te(N,V,I,M,j,ge,Me){const oe=new XMLHttpRequest;oe.open("GET","function"==typeof N?N(I,M,j):N,!0),"arraybuffer"==V.getType()&&(oe.responseType="arraybuffer"),oe.withCredentials=false,oe.onload=function(R){if(!oe.status||oe.status>=200&&oe.status<300){const se=V.getType();let Ee;"json"==se?Ee=JSON.parse(oe.responseText):"text"==se?Ee=oe.responseText:"xml"==se?(Ee=oe.responseXML,Ee||(Ee=(new DOMParser).parseFromString(oe.responseText,"application/xml"))):"arraybuffer"==se&&(Ee=oe.response),Ee?ge(V.readFeatures(Ee,{extent:I,featureProjection:j}),V.readProjection(Ee)):Me()}else Me()},oe.onerror=Me,oe.send()}(N,V,I,M,j,function(R,se){oe.addFeatures(R),void 0!==ge&&ge(R)},Me||E.tV)}}class J extends O.Ay{constructor(V,I,M){super(V),this.feature=I,this.features=M}}const K=class X extends Le.A{constructor(V){super({attributions:(V=V||{}).attributions,interpolate:!0,projection:void 0,state:"ready",wrapX:void 0===V.wrapX||V.wrapX}),this.loader_=E.tV,this.format_=V.format,this.overlaps_=void 0===V.overlaps||V.overlaps,this.url_=V.url,void 0!==V.loader?this.loader_=V.loader:void 0!==this.url_&&((0,Ue.v)(this.format_,"`format` must be set when `url` is set"),this.loader_=L(this.url_,this.format_)),this.strategy_=void 0!==V.strategy?V.strategy:Ce;const I=void 0===V.useSpatialIndex||V.useSpatialIndex;let M,j;this.featuresRtree_=I?new C.A:null,this.loadedExtentsRtree_=new C.A,this.loadingExtentsCount_=0,this.nullGeometryFeatures_={},this.idIndex_={},this.uidIndex_={},this.featureChangeKeys_={},this.featuresCollection_=null,Array.isArray(V.features)?j=V.features:V.features&&(M=V.features,j=M.getArray()),!I&&void 0===M&&(M=new o.A(j)),void 0!==j&&this.addFeaturesInternal(j),void 0!==M&&this.bindFeaturesCollection_(M)}addFeature(V){this.addFeatureInternal(V),this.changed()}addFeatureInternal(V){const I=(0,ve.v6)(V);if(!this.addToIndex_(I,V))return void(this.featuresCollection_&&this.featuresCollection_.remove(V));this.setupChangeEvents_(I,V);const M=V.getGeometry();if(M){const j=M.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(j,V)}else this.nullGeometryFeatures_[I]=V;this.dispatchEvent(new J(_e.A.ADDFEATURE,V))}setupChangeEvents_(V,I){I instanceof ae||(this.featureChangeKeys_[V]=[(0,Se.KT)(I,d.A.CHANGE,this.handleFeatureChange_,this),(0,Se.KT)(I,w.A.PROPERTYCHANGE,this.handleFeatureChange_,this)])}addToIndex_(V,I){let M=!0;if(void 0!==I.getId()){const j=String(I.getId());if(j in this.idIndex_)if(I instanceof ae){const ge=this.idIndex_[j];ge instanceof ae?Array.isArray(ge)?ge.push(I):this.idIndex_[j]=[ge,I]:M=!1}else M=!1;else this.idIndex_[j]=I}return M&&((0,Ue.v)(!(V in this.uidIndex_),"The passed `feature` was already added to the source"),this.uidIndex_[V]=I),M}addFeatures(V){this.addFeaturesInternal(V),this.changed()}addFeaturesInternal(V){const I=[],M=[],j=[];for(let ge=0,Me=V.length;ge{I||(I=!0,this.addFeature(M.element),I=!1)}),V.addEventListener(c.A.REMOVE,M=>{I||(I=!0,this.removeFeature(M.element),I=!1)}),this.featuresCollection_=V}clear(V){if(V){for(const M in this.featureChangeKeys_)this.featureChangeKeys_[M].forEach(Se.JH);this.featuresCollection_||(this.featureChangeKeys_={},this.idIndex_={},this.uidIndex_={})}else if(this.featuresRtree_){this.featuresRtree_.forEach(j=>{this.removeFeatureInternal(j)});for(const j in this.nullGeometryFeatures_)this.removeFeatureInternal(this.nullGeometryFeatures_[j])}this.featuresCollection_&&this.featuresCollection_.clear(),this.featuresRtree_&&this.featuresRtree_.clear(),this.nullGeometryFeatures_={};const I=new J(_e.A.CLEAR);this.dispatchEvent(I),this.changed()}forEachFeature(V){if(this.featuresRtree_)return this.featuresRtree_.forEach(V);this.featuresCollection_&&this.featuresCollection_.forEach(V)}forEachFeatureAtCoordinateDirect(V,I){return this.forEachFeatureInExtent([V[0],V[1],V[0],V[1]],function(j){const ge=j.getGeometry();if(ge instanceof ae||ge.intersectsCoordinate(V))return I(j)})}forEachFeatureInExtent(V,I){if(this.featuresRtree_)return this.featuresRtree_.forEachInExtent(V,I);this.featuresCollection_&&this.featuresCollection_.forEach(I)}forEachFeatureIntersectingExtent(V,I){return this.forEachFeatureInExtent(V,function(M){const j=M.getGeometry();if(j instanceof ae||j.intersectsExtent(V)){const ge=I(M);if(ge)return ge}})}getFeaturesCollection(){return this.featuresCollection_}getFeatures(){let V;return this.featuresCollection_?V=this.featuresCollection_.getArray().slice(0):this.featuresRtree_&&(V=this.featuresRtree_.getAll(),(0,ye.p)(this.nullGeometryFeatures_)||(0,g.X$)(V,Object.values(this.nullGeometryFeatures_))),V}getFeaturesAtCoordinate(V){const I=[];return this.forEachFeatureAtCoordinateDirect(V,function(M){I.push(M)}),I}getFeaturesInExtent(V,I){if(this.featuresRtree_){if(!(I&&I.canWrapX()&&this.getWrapX()))return this.featuresRtree_.getInExtent(V);const j=(0,D.QJ)(V,I);return[].concat(...j.map(ge=>this.featuresRtree_.getInExtent(ge)))}return this.featuresCollection_?this.featuresCollection_.getArray().slice(0):[]}getClosestFeatureToCoordinate(V,I){const M=V[0],j=V[1];let ge=null;const Me=[NaN,NaN];let oe=1/0;const R=[-1/0,-1/0,1/0,1/0];return I=I||E.rT,this.featuresRtree_.forEachInExtent(R,function(se){if(I(se)){const Ee=se.getGeometry(),tt=oe;if(oe=Ee instanceof ae?0:Ee.closestPointXY(M,j,Me,oe),oe{--this.loadingExtentsCount_,this.dispatchEvent(new J(_e.A.FEATURESLOADEND,void 0,Ee))},()=>{--this.loadingExtentsCount_,this.dispatchEvent(new J(_e.A.FEATURESLOADERROR))}),j.insert(R,{extent:R.slice()}))}this.loading=!(this.loader_.length<4)&&this.loadingExtentsCount_>0}refresh(){this.clear(!0),this.loadedExtentsRtree_.clear(),super.refresh()}removeLoadedExtent(V){const I=this.loadedExtentsRtree_;let M;I.forEachInExtent(V,function(j){if((0,D.aI)(j.extent,V))return M=j,!0}),M&&I.remove(M)}removeFeature(V){if(!V)return;const I=(0,ve.v6)(V);I in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[I]:this.featuresRtree_&&this.featuresRtree_.remove(V),this.removeFeatureInternal(V)&&this.changed()}removeFeatureInternal(V){const I=(0,ve.v6)(V),M=this.featureChangeKeys_[I];if(!M)return;M.forEach(Se.JH),delete this.featureChangeKeys_[I];const j=V.getId();return void 0!==j&&delete this.idIndex_[j.toString()],delete this.uidIndex_[I],this.dispatchEvent(new J(_e.A.REMOVEFEATURE,V)),V}removeFromIdIndex_(V){let I=!1;for(const M in this.idIndex_){const j=this.idIndex_[M];if(V instanceof ae&&Array.isArray(j)&&j.includes(V))j.splice(j.indexOf(V),1);else if(this.idIndex_[M]===V){delete this.idIndex_[M],I=!0;break}}return I}setLoader(V){this.loader_=V}setUrl(V){(0,Ue.v)(this.format_,"`format` must be set when `url` is set"),this.url_=V,this.setLoader(L(V,this.format_))}}},7345:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>o});const o={ADDFEATURE:"addfeature",CHANGEFEATURE:"changefeature",CLEAR:"clear",REMOVEFEATURE:"removefeature",FEATURESLOADSTART:"featuresloadstart",FEATURESLOADEND:"featuresloadend",FEATURESLOADERROR:"featuresloaderror"}},9191:(ut,Ie,a)=>{"use strict";a.d(Ie,{R3:()=>w,UG:()=>x,Yf:()=>O});var o=a(8092);const c=6371008.8;function O(p,g,y){y=y||c;const h=(0,o.eh)(p[1]),u=(0,o.eh)(g[1]),P=(u-h)/2,T=(0,o.eh)(g[0]-p[0])/2,E=Math.sin(P)*Math.sin(P)+Math.sin(T)*Math.sin(T)*Math.cos(h)*Math.cos(u);return 2*y*Math.atan2(Math.sqrt(E),Math.sqrt(1-E))}function d(p,g){let y=0;for(let h=0,u=p.length;h{"use strict";a.d(Ie,{A:()=>C});var o=a(9995),c=a(4378),O=a(8618),d=a(973);const C=class w{constructor(D){this.rbush_=new o(D),this.items_={}}insert(D,p){const g={minX:D[0],minY:D[1],maxX:D[2],maxY:D[3],value:p};this.rbush_.insert(g),this.items_[(0,O.v6)(p)]=g}load(D,p){const g=new Array(p.length);for(let y=0,h=p.length;y{"use strict";a.d(Ie,{A:()=>O});var o=a(1633);class c extends o.A{constructor(w){super({points:1/0,fill:(w=w||{radius:5}).fill,radius:w.radius,stroke:w.stroke,scale:void 0!==w.scale?w.scale:1,rotation:void 0!==w.rotation?w.rotation:0,rotateWithView:void 0!==w.rotateWithView&&w.rotateWithView,displacement:void 0!==w.displacement?w.displacement:[0,0],declutterMode:w.declutterMode})}clone(){const w=this.getScale(),C=new c({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),scale:Array.isArray(w)?w.slice():w,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return C.setOpacity(this.getOpacity()),C}setRadius(w){this.radius_=w,this.render()}}const O=c},5637:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>d});var o=a(7068),c=a(3436);class O{constructor(C){C=C||{},this.patternImage_=null,this.color_=null,void 0!==C.color&&this.setColor(C.color)}clone(){const C=this.getColor();return new O({color:Array.isArray(C)?C.slice():C||void 0})}getColor(){return this.color_}setColor(C){if(null!==C&&"object"==typeof C&&"src"in C){const x=(0,c.J)(null,C.src,"anonymous",void 0,C.offset?null:C.color?C.color:null,!(C.offset&&C.size));x.ready().then(()=>{this.patternImage_=null}),x.getImageState()===o.A.IDLE&&x.load(),x.getImageState()===o.A.LOADING&&(this.patternImage_=x)}this.color_=C}loading(){return!!this.patternImage_}ready(){return this.patternImage_?this.patternImage_.ready():Promise.resolve()}}const d=O},3117:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>g});var o=a(8864),c=a(7068),O=a(1967),d=a(642),w=a(9791),C=a(3436),x=a(8618);function D(y,h,u,P){return void 0!==u&&void 0!==P?[u/y,P/h]:void 0!==u?u/y:void 0!==P?P/h:1}class p extends O.A{constructor(h){super({opacity:void 0!==(h=h||{}).opacity?h.opacity:1,rotation:void 0!==h.rotation?h.rotation:0,scale:void 0!==h.scale?h.scale:1,displacement:void 0!==h.displacement?h.displacement:[0,0],rotateWithView:void 0!==h.rotateWithView&&h.rotateWithView,declutterMode:h.declutterMode}),this.anchor_=void 0!==h.anchor?h.anchor:[.5,.5],this.normalizedAnchor_=null,this.anchorOrigin_=void 0!==h.anchorOrigin?h.anchorOrigin:"top-left",this.anchorXUnits_=void 0!==h.anchorXUnits?h.anchorXUnits:"fraction",this.anchorYUnits_=void 0!==h.anchorYUnits?h.anchorYUnits:"fraction",this.crossOrigin_=void 0!==h.crossOrigin?h.crossOrigin:null;const W=void 0!==h.img?h.img:null;let de,ne=h.src;if((0,w.v)(!(void 0!==ne&&W),"`image` and `src` cannot be provided at the same time"),(void 0===ne||0===ne.length)&&W&&(ne=W.src||(0,x.v6)(W)),(0,w.v)(void 0!==ne&&ne.length>0,"A defined and non-empty `src` or `image` must be provided"),(0,w.v)(!((void 0!==h.width||void 0!==h.height)&&void 0!==h.scale),"`width` or `height` cannot be provided together with `scale`"),void 0!==h.src?de=c.A.IDLE:void 0!==W&&(de=W instanceof HTMLImageElement?W.complete?W.src?c.A.LOADED:c.A.IDLE:c.A.LOADING:c.A.LOADED),this.color_=void 0!==h.color?(0,d._j)(h.color):null,this.iconImage_=(0,C.J)(W,ne,this.crossOrigin_,de,this.color_),this.offset_=void 0!==h.offset?h.offset:[0,0],this.offsetOrigin_=void 0!==h.offsetOrigin?h.offsetOrigin:"top-left",this.origin_=null,this.size_=void 0!==h.size?h.size:null,void 0!==h.width||void 0!==h.height){let ie,Z;if(h.size)[ie,Z]=h.size;else{const ae=this.getImage(1);if(ae.width&&ae.height)ie=ae.width,Z=ae.height;else if(ae instanceof HTMLImageElement){this.initialOptions_=h;const Le=()=>{if(this.unlistenImageChange(Le),!this.initialOptions_)return;const _e=this.iconImage_.getSize();this.setScale(D(_e[0],_e[1],h.width,h.height))};return void this.listenImageChange(Le)}}void 0!==ie&&this.setScale(D(ie,Z,h.width,h.height))}}clone(){let h,u,P;return this.initialOptions_?(u=this.initialOptions_.width,P=this.initialOptions_.height):(h=this.getScale(),h=Array.isArray(h)?h.slice():h),new p({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,crossOrigin:this.crossOrigin_,offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:h,width:u,height:P,size:null!==this.size_?this.size_.slice():void 0,src:this.getSrc(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})}getAnchor(){let h=this.normalizedAnchor_;if(!h){h=this.anchor_;const T=this.getSize();if("fraction"==this.anchorXUnits_||"fraction"==this.anchorYUnits_){if(!T)return null;h=this.anchor_.slice(),"fraction"==this.anchorXUnits_&&(h[0]*=T[0]),"fraction"==this.anchorYUnits_&&(h[1]*=T[1])}if("top-left"!=this.anchorOrigin_){if(!T)return null;h===this.anchor_&&(h=this.anchor_.slice()),("top-right"==this.anchorOrigin_||"bottom-right"==this.anchorOrigin_)&&(h[0]=-h[0]+T[0]),("bottom-left"==this.anchorOrigin_||"bottom-right"==this.anchorOrigin_)&&(h[1]=-h[1]+T[1])}this.normalizedAnchor_=h}const u=this.getDisplacement(),P=this.getScaleArray();return[h[0]-u[0]/P[0],h[1]+u[1]/P[1]]}setAnchor(h){this.anchor_=h,this.normalizedAnchor_=null}getColor(){return this.color_}getImage(h){return this.iconImage_.getImage(h)}getPixelRatio(h){return this.iconImage_.getPixelRatio(h)}getImageSize(){return this.iconImage_.getSize()}getImageState(){return this.iconImage_.getImageState()}getHitDetectionImage(){return this.iconImage_.getHitDetectionImage()}getOrigin(){if(this.origin_)return this.origin_;let h=this.offset_;if("top-left"!=this.offsetOrigin_){const u=this.getSize(),P=this.iconImage_.getSize();if(!u||!P)return null;h=h.slice(),("top-right"==this.offsetOrigin_||"bottom-right"==this.offsetOrigin_)&&(h[0]=P[0]-u[0]-h[0]),("bottom-left"==this.offsetOrigin_||"bottom-right"==this.offsetOrigin_)&&(h[1]=P[1]-u[1]-h[1])}return this.origin_=h,this.origin_}getSrc(){return this.iconImage_.getSrc()}getSize(){return this.size_?this.size_:this.iconImage_.getSize()}getWidth(){const h=this.getScaleArray();return this.size_?this.size_[0]*h[0]:this.iconImage_.getImageState()==c.A.LOADED?this.iconImage_.getSize()[0]*h[0]:void 0}getHeight(){const h=this.getScaleArray();return this.size_?this.size_[1]*h[1]:this.iconImage_.getImageState()==c.A.LOADED?this.iconImage_.getSize()[1]*h[1]:void 0}setScale(h){delete this.initialOptions_,super.setScale(h)}listenImageChange(h){this.iconImage_.addEventListener(o.A.CHANGE,h)}load(){this.iconImage_.load()}unlistenImageChange(h){this.iconImage_.removeEventListener(o.A.CHANGE,h)}ready(){return this.iconImage_.ready()}}const g=p},3436:(ut,Ie,a)=>{"use strict";a.d(Ie,{J:()=>g});var o=a(6339),c=a(8864),O=a(7068),d=a(642),w=a(5664),C=a(8701),x=a(7048);let D=null;class p extends o.A{constructor(u,P,T,E,W){super(),this.hitDetectionImage_=null,this.image_=u,this.crossOrigin_=T,this.canvas_={},this.color_=W,this.imageState_=void 0===E?O.A.IDLE:E,this.size_=u&&u.width&&u.height?[u.width,u.height]:null,this.src_=P,this.ready_=null}initializeImage_(){this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)}isTainted_(){if(void 0===this.tainted_&&this.imageState_===O.A.LOADED){D||(D=(0,w.Y)(1,1,void 0,{willReadFrequently:!0})),D.drawImage(this.image_,0,0);try{D.getImageData(0,0,1,1),this.tainted_=!1}catch{D=null,this.tainted_=!0}}return!0===this.tainted_}dispatchChangeEvent_(){this.dispatchEvent(c.A.CHANGE)}handleImageError_(){this.imageState_=O.A.ERROR,this.dispatchChangeEvent_()}handleImageLoad_(){this.imageState_=O.A.LOADED,this.size_=[this.image_.width,this.image_.height],this.dispatchChangeEvent_()}getImage(u){return this.image_||this.initializeImage_(),this.replaceColor_(u),this.canvas_[u]?this.canvas_[u]:this.image_}getPixelRatio(u){return this.replaceColor_(u),this.canvas_[u]?u:1}getImageState(){return this.imageState_}getHitDetectionImage(){if(this.image_||this.initializeImage_(),!this.hitDetectionImage_)if(this.isTainted_()){const u=this.size_[0],P=this.size_[1],T=(0,w.Y)(u,P);T.fillRect(0,0,u,P),this.hitDetectionImage_=T.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_}getSize(){return this.size_}getSrc(){return this.src_}load(){if(this.imageState_===O.A.IDLE){this.image_||this.initializeImage_(),this.imageState_=O.A.LOADING;try{void 0!==this.src_&&(this.image_.src=this.src_)}catch{this.handleImageError_()}this.image_ instanceof HTMLImageElement&&(0,C.RA)(this.image_,this.src_).then(u=>{this.image_=u,this.handleImageLoad_()}).catch(this.handleImageError_.bind(this))}}replaceColor_(u){if(!this.color_||this.canvas_[u]||this.imageState_!==O.A.LOADED)return;const P=this.image_,T=document.createElement("canvas");T.width=Math.ceil(P.width*u),T.height=Math.ceil(P.height*u);const E=T.getContext("2d");E.scale(u,u),E.drawImage(P,0,0),E.globalCompositeOperation="multiply",E.fillStyle=(0,d.oJ)(this.color_),E.fillRect(0,0,T.width/u,T.height/u),E.globalCompositeOperation="destination-in",E.drawImage(P,0,0),this.canvas_[u]=T}ready(){return this.ready_||(this.ready_=new Promise(u=>{this.imageState_===O.A.LOADED||this.imageState_===O.A.ERROR?u():this.addEventListener(c.A.CHANGE,function P(){(this.imageState_===O.A.LOADED||this.imageState_===O.A.ERROR)&&(this.removeEventListener(c.A.CHANGE,P),u())})})),this.ready_}}function g(h,u,P,T,E,W){let ne=void 0===u?void 0:x.ue.get(u,P,E);return ne||(ne=new p(h,h instanceof HTMLImageElement?h.src||void 0:u,P,T,E),x.ue.set(u,P,E,ne,W)),W&&ne&&!x.ue.getPattern(u,P,E)&&x.ue.set(u,P,E,ne,W),ne}},7048:(ut,Ie,a)=>{"use strict";a.d(Ie,{ue:()=>x});var o=a(7068),c=a(642),O=a(5664);function w(D,p,g){return p+":"+D+":"+(g?(0,c._j)(g):"null")}const x=new class d{constructor(){this.cache_={},this.patternCache_={},this.cacheSize_=0,this.maxCacheSize_=32}clear(){this.cache_={},this.patternCache_={},this.cacheSize_=0}canExpireCache(){return this.cacheSize_>this.maxCacheSize_}expire(){if(this.canExpireCache()){let p=0;for(const g in this.cache_)!(3&p++)&&!this.cache_[g].hasListener()&&(delete this.cache_[g],delete this.patternCache_[g],--this.cacheSize_)}}get(p,g,y){const h=w(p,g,y);return h in this.cache_?this.cache_[h]:null}getPattern(p,g,y){const h=w(p,g,y);return h in this.patternCache_?this.patternCache_[h]:null}set(p,g,y,h,u){const P=w(p,g,y),T=P in this.cache_;this.cache_[P]=h,u&&(h.getImageState()===o.A.IDLE&&h.load(),h.getImageState()===o.A.LOADING?h.ready().then(()=>{this.patternCache_[P]=(0,O.lr)().createPattern(h.getImage(1),"repeat")}):this.patternCache_[P]=(0,O.lr)().createPattern(h.getImage(1),"repeat")),T||++this.cacheSize_}setSize(p){this.maxCacheSize_=p,this.expire()}}},1967:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>d});var o=a(8618),c=a(8443);class O{constructor(C){this.opacity_=C.opacity,this.rotateWithView_=C.rotateWithView,this.rotation_=C.rotation,this.scale_=C.scale,this.scaleArray_=(0,c.xq)(C.scale),this.displacement_=C.displacement,this.declutterMode_=C.declutterMode}clone(){const C=this.getScale();return new O({opacity:this.getOpacity(),scale:Array.isArray(C)?C.slice():C,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})}getOpacity(){return this.opacity_}getRotateWithView(){return this.rotateWithView_}getRotation(){return this.rotation_}getScale(){return this.scale_}getScaleArray(){return this.scaleArray_}getDisplacement(){return this.displacement_}getDeclutterMode(){return this.declutterMode_}getAnchor(){return(0,o.b0)()}getImage(C){return(0,o.b0)()}getHitDetectionImage(){return(0,o.b0)()}getPixelRatio(C){return 1}getImageState(){return(0,o.b0)()}getImageSize(){return(0,o.b0)()}getOrigin(){return(0,o.b0)()}getSize(){return(0,o.b0)()}setDisplacement(C){this.displacement_=C}setOpacity(C){this.opacity_=C}setRotateWithView(C){this.rotateWithView_=C}setRotation(C){this.rotation_=C}setScale(C){this.scale_=C,this.scaleArray_=(0,c.xq)(C)}listenImageChange(C){(0,o.b0)()}load(){(0,o.b0)()}unlistenImageChange(C){(0,o.b0)()}ready(){return Promise.resolve()}}const d=O},1633:(ut,Ie,a)=>{"use strict";a.d(Ie,{A:()=>D});var o=a(7068),c=a(1967),O=a(642),d=a(8896),w=a(5664),C=a(8045);class x extends c.A{constructor(g){super({opacity:1,rotateWithView:void 0!==g.rotateWithView&&g.rotateWithView,rotation:void 0!==g.rotation?g.rotation:0,scale:void 0!==g.scale?g.scale:1,displacement:void 0!==g.displacement?g.displacement:[0,0],declutterMode:g.declutterMode}),this.hitDetectionCanvas_=null,this.fill_=void 0!==g.fill?g.fill:null,this.origin_=[0,0],this.points_=g.points,this.radius_=g.radius,this.radius2_=g.radius2,this.angle_=void 0!==g.angle?g.angle:0,this.stroke_=void 0!==g.stroke?g.stroke:null,this.imageState_=this.fill_&&this.fill_.loading()?o.A.LOADING:o.A.LOADED,this.imageState_===o.A.LOADING&&this.ready().then(()=>this.imageState_=o.A.LOADED),this.render()}clone(){const g=this.getScale(),y=new x({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(g)?g.slice():g,displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return y.setOpacity(this.getOpacity()),y}getAnchor(){const g=this.size_,y=this.getDisplacement(),h=this.getScaleArray();return[g[0]/2-y[0]/h[0],g[1]/2+y[1]/h[1]]}getAngle(){return this.angle_}getFill(){return this.fill_}setFill(g){this.fill_=g,this.render()}getHitDetectionImage(){return this.hitDetectionCanvas_||(this.hitDetectionCanvas_=this.createHitDetectionCanvas_(this.renderOptions_)),this.hitDetectionCanvas_}getImage(g){let y=this.canvases_[g];if(!y){const h=this.renderOptions_,u=(0,w.Y)(h.size*g,h.size*g);this.draw_(h,u,g),y=u.canvas,this.canvases_[g]=y}return y}getPixelRatio(g){return g}getImageSize(){return this.size_}getImageState(){return this.imageState_}getOrigin(){return this.origin_}getPoints(){return this.points_}getRadius(){return this.radius_}getRadius2(){return this.radius2_}getSize(){return this.size_}getStroke(){return this.stroke_}setStroke(g){this.stroke_=g,this.render()}listenImageChange(g){}load(){}unlistenImageChange(g){}calculateLineJoinSize_(g,y,h){if(0===y||this.points_===1/0||"bevel"!==g&&"miter"!==g)return y;let u=this.radius_,P=void 0===this.radius2_?u:this.radius2_;if(u{"use strict";a.d(Ie,{A:()=>c});class o{constructor(d){this.color_=void 0!==(d=d||{}).color?d.color:null,this.lineCap_=d.lineCap,this.lineDash_=void 0!==d.lineDash?d.lineDash:null,this.lineDashOffset_=d.lineDashOffset,this.lineJoin_=d.lineJoin,this.miterLimit_=d.miterLimit,this.width_=d.width}clone(){const d=this.getColor();return new o({color:Array.isArray(d)?d.slice():d||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})}getColor(){return this.color_}getLineCap(){return this.lineCap_}getLineDash(){return this.lineDash_}getLineDashOffset(){return this.lineDashOffset_}getLineJoin(){return this.lineJoin_}getMiterLimit(){return this.miterLimit_}getWidth(){return this.width_}setColor(d){this.color_=d}setLineCap(d){this.lineCap_=d}setLineDash(d){this.lineDash_=d}setLineDashOffset(d){this.lineDashOffset_=d}setLineJoin(d){this.lineJoin_=d}setMiterLimit(d){this.miterLimit_=d}setWidth(d){this.width_=d}}const c=o},1043:(ut,Ie,a)=>{"use strict";a.d(Ie,{Ay:()=>y,d1:()=>D,mC:()=>C,mY:()=>p});var o=a(2872),c=a(5637),O=a(4688),d=a(9791);class w{constructor(u){u=u||{},this.geometry_=null,this.geometryFunction_=g,void 0!==u.geometry&&this.setGeometry(u.geometry),this.fill_=void 0!==u.fill?u.fill:null,this.image_=void 0!==u.image?u.image:null,this.renderer_=void 0!==u.renderer?u.renderer:null,this.hitDetectionRenderer_=void 0!==u.hitDetectionRenderer?u.hitDetectionRenderer:null,this.stroke_=void 0!==u.stroke?u.stroke:null,this.text_=void 0!==u.text?u.text:null,this.zIndex_=u.zIndex}clone(){let u=this.getGeometry();return u&&"object"==typeof u&&(u=u.clone()),new w({geometry:u??void 0,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,renderer:this.getRenderer()??void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})}getRenderer(){return this.renderer_}setRenderer(u){this.renderer_=u}setHitDetectionRenderer(u){this.hitDetectionRenderer_=u}getHitDetectionRenderer(){return this.hitDetectionRenderer_}getGeometry(){return this.geometry_}getGeometryFunction(){return this.geometryFunction_}getFill(){return this.fill_}setFill(u){this.fill_=u}getImage(){return this.image_}setImage(u){this.image_=u}getStroke(){return this.stroke_}setStroke(u){this.stroke_=u}getText(){return this.text_}setText(u){this.text_=u}getZIndex(){return this.zIndex_}setGeometry(u){"function"==typeof u?this.geometryFunction_=u:"string"==typeof u?this.geometryFunction_=function(P){return P.get(u)}:u?void 0!==u&&(this.geometryFunction_=function(){return u}):this.geometryFunction_=g,this.geometry_=u}setZIndex(u){this.zIndex_=u}}function C(h){let u;if("function"==typeof h)u=h;else{let P;Array.isArray(h)?P=h:((0,d.v)("function"==typeof h.getZIndex,"Expected an `Style` or an array of `Style`"),P=[h]),u=function(){return P}}return u}let x=null;function D(h,u){if(!x){const P=new c.A({color:"rgba(255,255,255,0.4)"}),T=new O.A({color:"#3399CC",width:1.25});x=[new w({image:new o.A({fill:P,stroke:T,radius:5}),fill:P,stroke:T})]}return x}function p(){const h={},u=[255,255,255,1],P=[0,153,255,1];return h.Polygon=[new w({fill:new c.A({color:[255,255,255,.5]})})],h.MultiPolygon=h.Polygon,h.LineString=[new w({stroke:new O.A({color:u,width:5})}),new w({stroke:new O.A({color:P,width:3})})],h.MultiLineString=h.LineString,h.Circle=h.Polygon.concat(h.LineString),h.Point=[new w({image:new o.A({radius:6,fill:new c.A({color:P}),stroke:new O.A({color:u,width:1.5})}),zIndex:1/0})],h.MultiPoint=h.Point,h.GeometryCollection=h.Polygon.concat(h.LineString,h.Point),h}function g(h){return h.getGeometry()}const y=w},8828:(ut,Ie,a)=>{"use strict";a.d(Ie,{L:()=>o,R:()=>c});const o=42,c=256},9984:(ut,Ie,a)=>{"use strict";a.d(Ie,{Bb:()=>D,MY:()=>P,T9:()=>E,Tl:()=>h,Zz:()=>u,cL:()=>d,dI:()=>de,e$:()=>p,hs:()=>g,k3:()=>x,lw:()=>w,rQ:()=>y,vt:()=>O});var o=a(9791);const c=new Array(6);function O(){return[1,0,0,1,0,0]}function d(ie){return C(ie,1,0,0,1,0,0)}function w(ie,Z){const ae=ie[0],Le=ie[1],_e=ie[2],Ce=ie[3],Ae=ie[4],ke=ie[5],Ue=Z[0],ve=Z[1],ye=Z[2],Se=Z[3],z=Z[4],te=Z[5];return ie[0]=ae*Ue+_e*ve,ie[1]=Le*Ue+Ce*ve,ie[2]=ae*ye+_e*Se,ie[3]=Le*ye+Ce*Se,ie[4]=ae*z+_e*te+Ae,ie[5]=Le*z+Ce*te+ke,ie}function C(ie,Z,ae,Le,_e,Ce,Ae){return ie[0]=Z,ie[1]=ae,ie[2]=Le,ie[3]=_e,ie[4]=Ce,ie[5]=Ae,ie}function x(ie,Z){return ie[0]=Z[0],ie[1]=Z[1],ie[2]=Z[2],ie[3]=Z[3],ie[4]=Z[4],ie[5]=Z[5],ie}function D(ie,Z){const ae=Z[0],Le=Z[1];return Z[0]=ie[0]*ae+ie[2]*Le+ie[4],Z[1]=ie[1]*ae+ie[3]*Le+ie[5],Z}function p(ie,Z){const ae=Math.cos(Z),Le=Math.sin(Z);return w(ie,C(c,ae,Le,-Le,ae,0,0))}function g(ie,Z,ae){return w(ie,C(c,Z,0,0,ae,0,0))}function y(ie,Z,ae){return C(ie,Z,0,0,ae,0,0)}function h(ie,Z,ae){return w(ie,C(c,1,0,0,1,Z,ae))}function u(ie,Z,ae,Le,_e,Ce,Ae,ke){const Ue=Math.sin(Ce),ve=Math.cos(Ce);return ie[0]=Le*ve,ie[1]=_e*Ue,ie[2]=-Le*Ue,ie[3]=_e*ve,ie[4]=Ae*Le*ve-ke*Le*Ue+Z,ie[5]=Ae*_e*Ue+ke*_e*ve+ae,ie}function P(ie,Z,ae,Le,_e,Ce,Ae){return de(u([1,0,0,1,0,0],ie,Z,ae,Le,_e,Ce,Ae))}function E(ie,Z){const ae=function W(ie){return ie[0]*ie[3]-ie[1]*ie[2]}(Z);(0,o.v)(0!==ae,"Transformation matrix cannot be inverted");const Le=Z[0],_e=Z[1],Ce=Z[2],Ae=Z[3],ke=Z[4],Ue=Z[5];return ie[0]=Ae/ae,ie[1]=-_e/ae,ie[2]=-Ce/ae,ie[3]=Le/ae,ie[4]=(Ce*Ue-Ae*ke)/ae,ie[5]=-(Le*Ue-_e*ke)/ae,ie}const ne=[1e6,1e6,1e6,1e6,2,2];function de(ie){return"matrix("+ie.map((ae,Le)=>Math.round(ae*ne[Le])/ne[Le]).join(", ")+")"}},8618:(ut,Ie,a)=>{"use strict";function o(){throw new Error("Unimplemented abstract method.")}a.d(Ie,{b0:()=>o,v6:()=>O});let c=0;function O(w){return w.ol_uid||(w.ol_uid=String(++c))}},467:(ut,Ie,a)=>{"use strict";function o(O,d,w,C,x,D,p){try{var g=O[D](p),y=g.value}catch(h){return void w(h)}g.done?d(y):Promise.resolve(y).then(C,x)}function c(O){return function(){var d=this,w=arguments;return new Promise(function(C,x){var D=O.apply(d,w);function p(y){o(D,C,x,p,g,"next",y)}function g(y){o(D,C,x,p,g,"throw",y)}p(void 0)})}}a.d(Ie,{A:()=>c})},1635:(ut,Ie,a)=>{"use strict";function h(K,N,V,I){return new(V||(V=Promise))(function(j,ge){function Me(se){try{R(I.next(se))}catch(Ee){ge(Ee)}}function oe(se){try{R(I.throw(se))}catch(Ee){ge(Ee)}}function R(se){se.done?j(se.value):function M(j){return j instanceof V?j:new V(function(ge){ge(j)})}(se.value).then(Me,oe)}R((I=I.apply(K,N||[])).next())})}function Z(K){return this instanceof Z?(this.v=K,this):new Z(K)}function ae(K,N,V){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var M,I=V.apply(K,N||[]),j=[];return M=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),Me("next"),Me("throw"),Me("return",function ge(Y){return function(Re){return Promise.resolve(Re).then(Y,Ee)}}),M[Symbol.asyncIterator]=function(){return this},M;function Me(Y,Re){I[Y]&&(M[Y]=function(De){return new Promise(function(nt,ht){j.push([Y,De,nt,ht])>1||oe(Y,De)})},Re&&(M[Y]=Re(M[Y])))}function oe(Y,Re){try{!function R(Y){Y.value instanceof Z?Promise.resolve(Y.value.v).then(se,Ee):tt(j[0][2],Y)}(I[Y](Re))}catch(De){tt(j[0][3],De)}}function se(Y){oe("next",Y)}function Ee(Y){oe("throw",Y)}function tt(Y,Re){Y(Re),j.shift(),j.length&&oe(j[0][0],j[0][1])}}function _e(K){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var V,N=K[Symbol.asyncIterator];return N?N.call(K):(K=function E(K){var N="function"==typeof Symbol&&Symbol.iterator,V=N&&K[N],I=0;if(V)return V.call(K);if(K&&"number"==typeof K.length)return{next:function(){return K&&I>=K.length&&(K=void 0),{value:K&&K[I++],done:!K}}};throw new TypeError(N?"Object is not iterable.":"Symbol.iterator is not defined.")}(K),V={},I("next"),I("throw"),I("return"),V[Symbol.asyncIterator]=function(){return this},V);function I(j){V[j]=K[j]&&function(ge){return new Promise(function(Me,oe){!function M(j,ge,Me,oe){Promise.resolve(oe).then(function(R){j({value:R,done:Me})},ge)}(Me,oe,(ge=K[j](ge)).done,ge.value)})}}}a.d(Ie,{AQ:()=>ae,N3:()=>Z,sH:()=>h,xN:()=>_e}),"function"==typeof SuppressedError&&SuppressedError}},ut=>{ut(ut.s=7568)}]); \ No newline at end of file diff --git a/web/polyfills.34d932ef71b2968b.js b/web/polyfills.34d932ef71b2968b.js new file mode 100644 index 0000000000000000000000000000000000000000..335e560efa965be9801df716f3f7b62cea68b3df --- /dev/null +++ b/web/polyfills.34d932ef71b2968b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkviewer=self.webpackChunkviewer||[]).push([[461],{6935:()=>{const te=globalThis;function ee(e){return(te.__Zone_symbol_prefix||"__zone_symbol__")+e}const ke=Object.getOwnPropertyDescriptor,Ne=Object.defineProperty,Le=Object.getPrototypeOf,_t=Object.create,Et=Array.prototype.slice,Ie="addEventListener",Me="removeEventListener",Ze=ee(Ie),Ae=ee(Me),ae="true",le="false",ve=ee("");function je(e,r){return Zone.current.wrap(e,r)}function He(e,r,c,t,i){return Zone.current.scheduleMacroTask(e,r,c,t,i)}const j=ee,Pe=typeof window<"u",Te=Pe?window:void 0,$=Pe&&Te||globalThis;function xe(e,r){for(let c=e.length-1;c>=0;c--)"function"==typeof e[c]&&(e[c]=je(e[c],r+"_"+c));return e}function We(e){return!e||!1!==e.writable&&!("function"==typeof e.get&&typeof e.set>"u")}const qe=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,Re=!("nw"in $)&&typeof $.process<"u"&&"[object process]"===$.process.toString(),Ve=!Re&&!qe&&!(!Pe||!Te.HTMLElement),Xe=typeof $.process<"u"&&"[object process]"===$.process.toString()&&!qe&&!(!Pe||!Te.HTMLElement),Ce={},yt=j("enable_beforeunload"),Ye=function(e){if(!(e=e||$.event))return;let r=Ce[e.type];r||(r=Ce[e.type]=j("ON_PROPERTY"+e.type));const c=this||e.target||$,t=c[r];let i;return Ve&&c===Te&&"error"===e.type?(i=t&&t.call(this,e.message,e.filename,e.lineno,e.colno,e.error),!0===i&&e.preventDefault()):(i=t&&t.apply(this,arguments),"beforeunload"===e.type&&$[yt]&&"string"==typeof i?e.returnValue=i:null!=i&&!i&&e.preventDefault()),i};function $e(e,r,c){let t=ke(e,r);if(!t&&c&&ke(c,r)&&(t={enumerable:!0,configurable:!0}),!t||!t.configurable)return;const i=j("on"+r+"patched");if(e.hasOwnProperty(i)&&e[i])return;delete t.writable,delete t.value;const u=t.get,E=t.set,T=r.slice(2);let m=Ce[T];m||(m=Ce[T]=j("ON_PROPERTY"+T)),t.set=function(D){let d=this;!d&&e===$&&(d=$),d&&("function"==typeof d[m]&&d.removeEventListener(T,Ye),E&&E.call(d,null),d[m]=D,"function"==typeof D&&d.addEventListener(T,Ye,!1))},t.get=function(){let D=this;if(!D&&e===$&&(D=$),!D)return null;const d=D[m];if(d)return d;if(u){let P=u.call(this);if(P)return t.set.call(this,P),"function"==typeof D.removeAttribute&&D.removeAttribute(r),P}return null},Ne(e,r,t),e[i]=!0}function Je(e,r,c){if(r)for(let t=0;tfunction(E,T){const m=c(E,T);return m.cbIdx>=0&&"function"==typeof T[m.cbIdx]?He(m.name,T[m.cbIdx],m,i):u.apply(E,T)})}function fe(e,r){e[j("OriginalDelegate")]=r}let Ke=!1,Ge=!1;function kt(){if(Ke)return Ge;Ke=!0;try{const e=Te.navigator.userAgent;(-1!==e.indexOf("MSIE ")||-1!==e.indexOf("Trident/")||-1!==e.indexOf("Edge/"))&&(Ge=!0)}catch{}return Ge}function Qe(e){return"function"==typeof e}function et(e){return"number"==typeof e}let ge=!1;if(typeof window<"u")try{const e=Object.defineProperty({},"passive",{get:function(){ge=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch{ge=!1}const vt={useG:!0},ne={},tt={},nt=new RegExp("^"+ve+"(\\w+)(true|false)$"),rt=j("propagationStopped");function ot(e,r){const c=(r?r(e):e)+le,t=(r?r(e):e)+ae,i=ve+c,u=ve+t;ne[e]={},ne[e][le]=i,ne[e][ae]=u}function bt(e,r,c,t){const i=t&&t.add||Ie,u=t&&t.rm||Me,E=t&&t.listeners||"eventListeners",T=t&&t.rmAll||"removeAllListeners",m=j(i),D="."+i+":",d="prependListener",P="."+d+":",Z=function(k,h,H){if(k.isRemoved)return;const V=k.callback;let Y;"object"==typeof V&&V.handleEvent&&(k.callback=g=>V.handleEvent(g),k.originalDelegate=V);try{k.invoke(k,h,[H])}catch(g){Y=g}const G=k.options;return G&&"object"==typeof G&&G.once&&h[u].call(h,H.type,k.originalDelegate?k.originalDelegate:k.callback,G),Y};function x(k,h,H){if(!(h=h||e.event))return;const V=k||h.target||e,Y=V[ne[h.type][H?ae:le]];if(Y){const G=[];if(1===Y.length){const g=Z(Y[0],V,h);g&&G.push(g)}else{const g=Y.slice();for(let z=0;z{throw z})}}}const U=function(k){return x(this,k,!1)},J=function(k){return x(this,k,!0)};function K(k,h){if(!k)return!1;let H=!0;h&&void 0!==h.useG&&(H=h.useG);const V=h&&h.vh;let Y=!0;h&&void 0!==h.chkDup&&(Y=h.chkDup);let G=!1;h&&void 0!==h.rt&&(G=h.rt);let g=k;for(;g&&!g.hasOwnProperty(i);)g=Le(g);if(!g&&k[i]&&(g=k),!g||g[m])return!1;const z=h&&h.eventNameToString,O={},R=g[m]=g[i],b=g[j(u)]=g[u],S=g[j(E)]=g[E],Q=g[j(T)]=g[T];let W;h&&h.prepend&&(W=g[j(h.prepend)]=g[h.prepend]);const q=H?function(s){if(!O.isExisting)return R.call(O.target,O.eventName,O.capture?J:U,O.options)}:function(s){return R.call(O.target,O.eventName,s.invoke,O.options)},A=H?function(s){if(!s.isRemoved){const l=ne[s.eventName];let v;l&&(v=l[s.capture?ae:le]);const C=v&&s.target[v];if(C)for(let y=0;yse.zone.cancelTask(se);s.call(me,"abort",ce,{once:!0}),se.removeAbortListener=()=>me.removeEventListener("abort",ce)}return O.target=null,we&&(we.taskData=null),lt&&(O.options.once=!0),!ge&&"boolean"==typeof se.options||(se.options=ie),se.target=I,se.capture=Be,se.eventName=M,B&&(se.originalDelegate=F),L?pe.unshift(se):pe.push(se),y?I:void 0}};return g[i]=a(R,D,q,A,G),W&&(g[d]=a(W,P,function(s){return W.call(O.target,O.eventName,s.invoke,O.options)},A,G,!0)),g[u]=function(){const s=this||e;let l=arguments[0];h&&h.transferEventName&&(l=h.transferEventName(l));const v=arguments[2],C=!!v&&("boolean"==typeof v||v.capture),y=arguments[1];if(!y)return b.apply(this,arguments);if(V&&!V(b,y,s,arguments))return;const L=ne[l];let I;L&&(I=L[C?ae:le]);const M=I&&s[I];if(M)for(let F=0;Ffunction(i,u){i[rt]=!0,t&&t.apply(i,u)})}const De=j("zoneTask");function ye(e,r,c,t){let i=null,u=null;c+=t;const E={};function T(D){const d=D.data;d.args[0]=function(){return D.invoke.apply(this,arguments)};const P=i.apply(e,d.args);return et(P)?d.handleId=P:(d.handle=P,d.isRefreshable=Qe(P.refresh)),D}function m(D){const{handle:d,handleId:P}=D.data;return u.call(e,d??P)}i=ue(e,r+=t,D=>function(d,P){if(Qe(P[0])){const Z={isRefreshable:!1,isPeriodic:"Interval"===t,delay:"Timeout"===t||"Interval"===t?P[1]||0:void 0,args:P},x=P[0];P[0]=function(){try{return x.apply(this,arguments)}finally{const{handle:H,handleId:V,isPeriodic:Y,isRefreshable:G}=Z;!Y&&!G&&(V?delete E[V]:H&&(H[De]=null))}};const U=He(r,P[0],Z,T,m);if(!U)return U;const{handleId:J,handle:K,isRefreshable:X,isPeriodic:k}=U.data;if(J)E[J]=U;else if(K&&(K[De]=U,X&&!k)){const h=K.refresh;K.refresh=function(){const{zone:H,state:V}=U;return"notScheduled"===V?(U._state="scheduled",H._updateTaskCount(U,1)):"running"===V&&(U._state="scheduling"),h.call(this)}}return K??J??U}return D.apply(e,P)}),u=ue(e,c,D=>function(d,P){const Z=P[0];let x;et(Z)?(x=E[Z],delete E[Z]):(x=Z?.[De],x?Z[De]=null:x=Z),x?.type?x.cancelFn&&x.zone.cancelTask(x):D.apply(e,P)})}function it(e,r,c){if(!c||0===c.length)return r;const t=c.filter(u=>u.target===e);if(!t||0===t.length)return r;const i=t[0].ignoreProperties;return r.filter(u=>-1===i.indexOf(u))}function ct(e,r,c,t){e&&Je(e,it(e,r,c),t)}function Fe(e){return Object.getOwnPropertyNames(e).filter(r=>r.startsWith("on")&&r.length>2).map(r=>r.substring(2))}function It(e,r,c,t,i){const u=Zone.__symbol__(t);if(r[u])return;const E=r[u]=r[t];r[t]=function(T,m,D){return m&&m.prototype&&i.forEach(function(d){const P=`${c}.${t}::`+d,Z=m.prototype;try{if(Z.hasOwnProperty(d)){const x=e.ObjectGetOwnPropertyDescriptor(Z,d);x&&x.value?(x.value=e.wrapWithCurrentZone(x.value,P),e._redefineProperty(m.prototype,d,x)):Z[d]&&(Z[d]=e.wrapWithCurrentZone(Z[d],P))}else Z[d]&&(Z[d]=e.wrapWithCurrentZone(Z[d],P))}catch{}}),E.call(r,T,m,D)},e.attachOriginToPatched(r[t],E)}const at=function Oe(){const e=globalThis,r=!0===e[ee("forceDuplicateZoneCheck")];if(e.Zone&&(r||"function"!=typeof e.Zone.__symbol__))throw new Error("Zone already loaded.");return e.Zone??=function ze(){const e=te.performance;function r(N){e&&e.mark&&e.mark(N)}function c(N,_){e&&e.measure&&e.measure(N,_)}r("Zone");let t=(()=>{class N{static{this.__symbol__=ee}static assertZonePatched(){if(te.Promise!==O.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let n=N.current;for(;n.parent;)n=n.parent;return n}static get current(){return b.zone}static get currentTask(){return S}static __load_patch(n,o,p=!1){if(O.hasOwnProperty(n)){const w=!0===te[ee("forceDuplicateZoneCheck")];if(!p&&w)throw Error("Already loaded patch: "+n)}else if(!te["__Zone_disable_"+n]){const w="Zone:"+n;r(w),O[n]=o(te,N,R),c(w,w)}}get parent(){return this._parent}get name(){return this._name}constructor(n,o){this._parent=n,this._name=o?o.name||"unnamed":"",this._properties=o&&o.properties||{},this._zoneDelegate=new u(this,this._parent&&this._parent._zoneDelegate,o)}get(n){const o=this.getZoneWith(n);if(o)return o._properties[n]}getZoneWith(n){let o=this;for(;o;){if(o._properties.hasOwnProperty(n))return o;o=o._parent}return null}fork(n){if(!n)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,n)}wrap(n,o){if("function"!=typeof n)throw new Error("Expecting function got: "+n);const p=this._zoneDelegate.intercept(this,n,o),w=this;return function(){return w.runGuarded(p,this,arguments,o)}}run(n,o,p,w){b={parent:b,zone:this};try{return this._zoneDelegate.invoke(this,n,o,p,w)}finally{b=b.parent}}runGuarded(n,o=null,p,w){b={parent:b,zone:this};try{try{return this._zoneDelegate.invoke(this,n,o,p,w)}catch(q){if(this._zoneDelegate.handleError(this,q))throw q}}finally{b=b.parent}}runTask(n,o,p){if(n.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(n.zone||K).name+"; Execution: "+this.name+")");const w=n,{type:q,data:{isPeriodic:A=!1,isRefreshable:_e=!1}={}}=n;if(n.state===X&&(q===z||q===g))return;const he=n.state!=H;he&&w._transitionTo(H,h);const de=S;S=w,b={parent:b,zone:this};try{q==g&&n.data&&!A&&!_e&&(n.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,w,o,p)}catch(oe){if(this._zoneDelegate.handleError(this,oe))throw oe}}finally{const oe=n.state;if(oe!==X&&oe!==Y)if(q==z||A||_e&&oe===k)he&&w._transitionTo(h,H,k);else{const f=w._zoneDelegates;this._updateTaskCount(w,-1),he&&w._transitionTo(X,H,X),_e&&(w._zoneDelegates=f)}b=b.parent,S=de}}scheduleTask(n){if(n.zone&&n.zone!==this){let p=this;for(;p;){if(p===n.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${n.zone.name}`);p=p.parent}}n._transitionTo(k,X);const o=[];n._zoneDelegates=o,n._zone=this;try{n=this._zoneDelegate.scheduleTask(this,n)}catch(p){throw n._transitionTo(Y,k,X),this._zoneDelegate.handleError(this,p),p}return n._zoneDelegates===o&&this._updateTaskCount(n,1),n.state==k&&n._transitionTo(h,k),n}scheduleMicroTask(n,o,p,w){return this.scheduleTask(new E(G,n,o,p,w,void 0))}scheduleMacroTask(n,o,p,w,q){return this.scheduleTask(new E(g,n,o,p,w,q))}scheduleEventTask(n,o,p,w,q){return this.scheduleTask(new E(z,n,o,p,w,q))}cancelTask(n){if(n.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(n.zone||K).name+"; Execution: "+this.name+")");if(n.state===h||n.state===H){n._transitionTo(V,h,H);try{this._zoneDelegate.cancelTask(this,n)}catch(o){throw n._transitionTo(Y,V),this._zoneDelegate.handleError(this,o),o}return this._updateTaskCount(n,-1),n._transitionTo(X,V),n.runCount=-1,n}}_updateTaskCount(n,o){const p=n._zoneDelegates;-1==o&&(n._zoneDelegates=null);for(let w=0;wN.hasTask(n,o),onScheduleTask:(N,_,n,o)=>N.scheduleTask(n,o),onInvokeTask:(N,_,n,o,p,w)=>N.invokeTask(n,o,p,w),onCancelTask:(N,_,n,o)=>N.cancelTask(n,o)};class u{get zone(){return this._zone}constructor(_,n,o){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this._zone=_,this._parentDelegate=n,this._forkZS=o&&(o&&o.onFork?o:n._forkZS),this._forkDlgt=o&&(o.onFork?n:n._forkDlgt),this._forkCurrZone=o&&(o.onFork?this._zone:n._forkCurrZone),this._interceptZS=o&&(o.onIntercept?o:n._interceptZS),this._interceptDlgt=o&&(o.onIntercept?n:n._interceptDlgt),this._interceptCurrZone=o&&(o.onIntercept?this._zone:n._interceptCurrZone),this._invokeZS=o&&(o.onInvoke?o:n._invokeZS),this._invokeDlgt=o&&(o.onInvoke?n:n._invokeDlgt),this._invokeCurrZone=o&&(o.onInvoke?this._zone:n._invokeCurrZone),this._handleErrorZS=o&&(o.onHandleError?o:n._handleErrorZS),this._handleErrorDlgt=o&&(o.onHandleError?n:n._handleErrorDlgt),this._handleErrorCurrZone=o&&(o.onHandleError?this._zone:n._handleErrorCurrZone),this._scheduleTaskZS=o&&(o.onScheduleTask?o:n._scheduleTaskZS),this._scheduleTaskDlgt=o&&(o.onScheduleTask?n:n._scheduleTaskDlgt),this._scheduleTaskCurrZone=o&&(o.onScheduleTask?this._zone:n._scheduleTaskCurrZone),this._invokeTaskZS=o&&(o.onInvokeTask?o:n._invokeTaskZS),this._invokeTaskDlgt=o&&(o.onInvokeTask?n:n._invokeTaskDlgt),this._invokeTaskCurrZone=o&&(o.onInvokeTask?this._zone:n._invokeTaskCurrZone),this._cancelTaskZS=o&&(o.onCancelTask?o:n._cancelTaskZS),this._cancelTaskDlgt=o&&(o.onCancelTask?n:n._cancelTaskDlgt),this._cancelTaskCurrZone=o&&(o.onCancelTask?this._zone:n._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;const p=o&&o.onHasTask;(p||n&&n._hasTaskZS)&&(this._hasTaskZS=p?o:i,this._hasTaskDlgt=n,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,o.onScheduleTask||(this._scheduleTaskZS=i,this._scheduleTaskDlgt=n,this._scheduleTaskCurrZone=this._zone),o.onInvokeTask||(this._invokeTaskZS=i,this._invokeTaskDlgt=n,this._invokeTaskCurrZone=this._zone),o.onCancelTask||(this._cancelTaskZS=i,this._cancelTaskDlgt=n,this._cancelTaskCurrZone=this._zone))}fork(_,n){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,_,n):new t(_,n)}intercept(_,n,o){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,_,n,o):n}invoke(_,n,o,p,w){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,_,n,o,p,w):n.apply(o,p)}handleError(_,n){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,_,n)}scheduleTask(_,n){let o=n;if(this._scheduleTaskZS)this._hasTaskZS&&o._zoneDelegates.push(this._hasTaskDlgtOwner),o=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,_,n),o||(o=n);else if(n.scheduleFn)n.scheduleFn(n);else{if(n.type!=G)throw new Error("Task is missing scheduleFn.");U(n)}return o}invokeTask(_,n,o,p){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,_,n,o,p):n.callback.apply(o,p)}cancelTask(_,n){let o;if(this._cancelTaskZS)o=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,_,n);else{if(!n.cancelFn)throw Error("Task is not cancelable");o=n.cancelFn(n)}return o}hasTask(_,n){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,_,n)}catch(o){this.handleError(_,o)}}_updateTaskCount(_,n){const o=this._taskCounts,p=o[_],w=o[_]=p+n;if(w<0)throw new Error("More tasks executed then were scheduled.");0!=p&&0!=w||this.hasTask(this._zone,{microTask:o.microTask>0,macroTask:o.macroTask>0,eventTask:o.eventTask>0,change:_})}}class E{constructor(_,n,o,p,w,q){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=_,this.source=n,this.data=p,this.scheduleFn=w,this.cancelFn=q,!o)throw new Error("callback is not defined");this.callback=o;const A=this;this.invoke=_===z&&p&&p.useG?E.invokeTask:function(){return E.invokeTask.call(te,A,this,arguments)}}static invokeTask(_,n,o){_||(_=this),Q++;try{return _.runCount++,_.zone.runTask(_,n,o)}finally{1==Q&&J(),Q--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(X,k)}_transitionTo(_,n,o){if(this._state!==n&&this._state!==o)throw new Error(`${this.type} '${this.source}': can not transition to '${_}', expecting state '${n}'${o?" or '"+o+"'":""}, was '${this._state}'.`);this._state=_,_==X&&(this._zoneDelegates=null)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}const T=ee("setTimeout"),m=ee("Promise"),D=ee("then");let Z,d=[],P=!1;function x(N){if(Z||te[m]&&(Z=te[m].resolve(0)),Z){let _=Z[D];_||(_=Z.then),_.call(Z,N)}else te[T](N,0)}function U(N){0===Q&&0===d.length&&x(J),N&&d.push(N)}function J(){if(!P){for(P=!0;d.length;){const N=d;d=[];for(let _=0;_b,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:U,showUncaughtError:()=>!t[ee("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:W,patchMethod:()=>W,bindArguments:()=>[],patchThen:()=>W,patchMacroTask:()=>W,patchEventPrototype:()=>W,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>W,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>W,wrapWithCurrentZone:()=>W,filterProperties:()=>[],attachOriginToPatched:()=>W,_redefineProperty:()=>W,patchCallbacks:()=>W,nativeScheduleMicroTask:x};let b={parent:null,zone:new t(null,null)},S=null,Q=0;function W(){}return c("Zone","Zone"),t}(),e.Zone}();(function Zt(e){(function Nt(e){e.__load_patch("ZoneAwarePromise",(r,c,t)=>{const i=Object.getOwnPropertyDescriptor,u=Object.defineProperty,T=t.symbol,m=[],D=!1!==r[T("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")],d=T("Promise"),P=T("then");t.onUnhandledError=f=>{if(t.showUncaughtError()){const a=f&&f.rejection;a?console.error("Unhandled Promise rejection:",a instanceof Error?a.message:a,"; Zone:",f.zone.name,"; Task:",f.task&&f.task.source,"; Value:",a,a instanceof Error?a.stack:void 0):console.error(f)}},t.microtaskDrainDone=()=>{for(;m.length;){const f=m.shift();try{f.zone.runGuarded(()=>{throw f.throwOriginal?f.rejection:f})}catch(a){U(a)}}};const x=T("unhandledPromiseRejectionHandler");function U(f){t.onUnhandledError(f);try{const a=c[x];"function"==typeof a&&a.call(this,f)}catch{}}function J(f){return f&&f.then}function K(f){return f}function X(f){return A.reject(f)}const k=T("state"),h=T("value"),H=T("finally"),V=T("parentPromiseValue"),Y=T("parentPromiseState"),g=null,z=!0,O=!1;function b(f,a){return s=>{try{N(f,a,s)}catch(l){N(f,!1,l)}}}const S=function(){let f=!1;return function(s){return function(){f||(f=!0,s.apply(null,arguments))}}},Q="Promise resolved with itself",W=T("currentTaskTrace");function N(f,a,s){const l=S();if(f===s)throw new TypeError(Q);if(f[k]===g){let v=null;try{("object"==typeof s||"function"==typeof s)&&(v=s&&s.then)}catch(C){return l(()=>{N(f,!1,C)})(),f}if(a!==O&&s instanceof A&&s.hasOwnProperty(k)&&s.hasOwnProperty(h)&&s[k]!==g)n(s),N(f,s[k],s[h]);else if(a!==O&&"function"==typeof v)try{v.call(s,l(b(f,a)),l(b(f,!1)))}catch(C){l(()=>{N(f,!1,C)})()}else{f[k]=a;const C=f[h];if(f[h]=s,f[H]===H&&a===z&&(f[k]=f[Y],f[h]=f[V]),a===O&&s instanceof Error){const y=c.currentTask&&c.currentTask.data&&c.currentTask.data.__creationTrace__;y&&u(s,W,{configurable:!0,enumerable:!1,writable:!0,value:y})}for(let y=0;y{try{const L=f[h],I=!!s&&H===s[H];I&&(s[V]=L,s[Y]=C);const M=a.run(y,void 0,I&&y!==X&&y!==K?[]:[L]);N(s,!0,M)}catch(L){N(s,!1,L)}},s)}const w=function(){},q=r.AggregateError;class A{static toString(){return"function ZoneAwarePromise() { [native code] }"}static resolve(a){return a instanceof A?a:N(new this(null),z,a)}static reject(a){return N(new this(null),O,a)}static withResolvers(){const a={};return a.promise=new A((s,l)=>{a.resolve=s,a.reject=l}),a}static any(a){if(!a||"function"!=typeof a[Symbol.iterator])return Promise.reject(new q([],"All promises were rejected"));const s=[];let l=0;try{for(let y of a)l++,s.push(A.resolve(y))}catch{return Promise.reject(new q([],"All promises were rejected"))}if(0===l)return Promise.reject(new q([],"All promises were rejected"));let v=!1;const C=[];return new A((y,L)=>{for(let I=0;I{v||(v=!0,y(M))},M=>{C.push(M),l--,0===l&&(v=!0,L(new q(C,"All promises were rejected")))})})}static race(a){let s,l,v=new this((L,I)=>{s=L,l=I});function C(L){s(L)}function y(L){l(L)}for(let L of a)J(L)||(L=this.resolve(L)),L.then(C,y);return v}static all(a){return A.allWithCallback(a)}static allSettled(a){return(this&&this.prototype instanceof A?this:A).allWithCallback(a,{thenCallback:l=>({status:"fulfilled",value:l}),errorCallback:l=>({status:"rejected",reason:l})})}static allWithCallback(a,s){let l,v,C=new this((M,F)=>{l=M,v=F}),y=2,L=0;const I=[];for(let M of a){J(M)||(M=this.resolve(M));const F=L;try{M.then(B=>{I[F]=s?s.thenCallback(B):B,y--,0===y&&l(I)},B=>{s?(I[F]=s.errorCallback(B),y--,0===y&&l(I)):v(B)})}catch(B){v(B)}y++,L++}return y-=2,0===y&&l(I),C}constructor(a){const s=this;if(!(s instanceof A))throw new Error("Must be an instanceof Promise.");s[k]=g,s[h]=[];try{const l=S();a&&a(l(b(s,z)),l(b(s,O)))}catch(l){N(s,!1,l)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return A}then(a,s){let l=this.constructor?.[Symbol.species];(!l||"function"!=typeof l)&&(l=this.constructor||A);const v=new l(w),C=c.current;return this[k]==g?this[h].push(C,v,a,s):o(this,C,v,a,s),v}catch(a){return this.then(null,a)}finally(a){let s=this.constructor?.[Symbol.species];(!s||"function"!=typeof s)&&(s=A);const l=new s(w);l[H]=H;const v=c.current;return this[k]==g?this[h].push(v,l,a,a):o(this,v,l,a,a),l}}A.resolve=A.resolve,A.reject=A.reject,A.race=A.race,A.all=A.all;const _e=r[d]=r.Promise;r.Promise=A;const he=T("thenPatched");function de(f){const a=f.prototype,s=i(a,"then");if(s&&(!1===s.writable||!s.configurable))return;const l=a.then;a[P]=l,f.prototype.then=function(v,C){return new A((L,I)=>{l.call(this,L,I)}).then(v,C)},f[he]=!0}return t.patchThen=de,_e&&(de(_e),ue(r,"fetch",f=>function oe(f){return function(a,s){let l=f.apply(a,s);if(l instanceof A)return l;let v=l.constructor;return v[he]||de(v),l}}(f))),Promise[c.__symbol__("uncaughtPromiseErrors")]=m,A})})(e),function Lt(e){e.__load_patch("toString",r=>{const c=Function.prototype.toString,t=j("OriginalDelegate"),i=j("Promise"),u=j("Error"),E=function(){if("function"==typeof this){const d=this[t];if(d)return"function"==typeof d?c.call(d):Object.prototype.toString.call(d);if(this===Promise){const P=r[i];if(P)return c.call(P)}if(this===Error){const P=r[u];if(P)return c.call(P)}}return c.call(this)};E[t]=c,Function.prototype.toString=E;const T=Object.prototype.toString;Object.prototype.toString=function(){return"function"==typeof Promise&&this instanceof Promise?"[object Promise]":T.call(this)}})}(e),function Mt(e){e.__load_patch("util",(r,c,t)=>{const i=Fe(r);t.patchOnProperties=Je,t.patchMethod=ue,t.bindArguments=xe,t.patchMacroTask=mt;const u=c.__symbol__("BLACK_LISTED_EVENTS"),E=c.__symbol__("UNPATCHED_EVENTS");r[E]&&(r[u]=r[E]),r[u]&&(c[u]=c[E]=r[u]),t.patchEventPrototype=wt,t.patchEventTarget=bt,t.isIEOrEdge=kt,t.ObjectDefineProperty=Ne,t.ObjectGetOwnPropertyDescriptor=ke,t.ObjectCreate=_t,t.ArraySlice=Et,t.patchClass=be,t.wrapWithCurrentZone=je,t.filterProperties=it,t.attachOriginToPatched=fe,t._redefineProperty=Object.defineProperty,t.patchCallbacks=It,t.getGlobalObjects=()=>({globalSources:tt,zoneSymbolEventNames:ne,eventNames:i,isBrowser:Ve,isMix:Xe,isNode:Re,TRUE_STR:ae,FALSE_STR:le,ZONE_SYMBOL_PREFIX:ve,ADD_EVENT_LISTENER_STR:Ie,REMOVE_EVENT_LISTENER_STR:Me})})}(e)})(at),function Ot(e){e.__load_patch("legacy",r=>{const c=r[e.__symbol__("legacyPatch")];c&&c()}),e.__load_patch("timers",r=>{const c="set",t="clear";ye(r,c,t,"Timeout"),ye(r,c,t,"Interval"),ye(r,c,t,"Immediate")}),e.__load_patch("requestAnimationFrame",r=>{ye(r,"request","cancel","AnimationFrame"),ye(r,"mozRequest","mozCancel","AnimationFrame"),ye(r,"webkitRequest","webkitCancel","AnimationFrame")}),e.__load_patch("blocking",(r,c)=>{const t=["alert","prompt","confirm"];for(let i=0;ifunction(D,d){return c.current.run(E,r,d,m)})}),e.__load_patch("EventTarget",(r,c,t)=>{(function Dt(e,r){r.patchEventPrototype(e,r)})(r,t),function Ct(e,r){if(Zone[r.symbol("patchEventTarget")])return;const{eventNames:c,zoneSymbolEventNames:t,TRUE_STR:i,FALSE_STR:u,ZONE_SYMBOL_PREFIX:E}=r.getGlobalObjects();for(let m=0;m{be("MutationObserver"),be("WebKitMutationObserver")}),e.__load_patch("IntersectionObserver",(r,c,t)=>{be("IntersectionObserver")}),e.__load_patch("FileReader",(r,c,t)=>{be("FileReader")}),e.__load_patch("on_property",(r,c,t)=>{!function St(e,r){if(Re&&!Xe||Zone[e.symbol("patchEvents")])return;const c=r.__Zone_ignore_on_properties;let t=[];if(Ve){const i=window;t=t.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);const u=function pt(){try{const e=Te.navigator.userAgent;if(-1!==e.indexOf("MSIE ")||-1!==e.indexOf("Trident/"))return!0}catch{}return!1}()?[{target:i,ignoreProperties:["error"]}]:[];ct(i,Fe(i),c&&c.concat(u),Le(i))}t=t.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let i=0;i{!function Rt(e,r){const{isBrowser:c,isMix:t}=r.getGlobalObjects();(c||t)&&e.customElements&&"customElements"in e&&r.patchCallbacks(r,e.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback","formAssociatedCallback","formDisabledCallback","formResetCallback","formStateRestoreCallback"])}(r,t)}),e.__load_patch("XHR",(r,c)=>{!function D(d){const P=d.XMLHttpRequest;if(!P)return;const Z=P.prototype;let U=Z[Ze],J=Z[Ae];if(!U){const R=d.XMLHttpRequestEventTarget;if(R){const b=R.prototype;U=b[Ze],J=b[Ae]}}const K="readystatechange",X="scheduled";function k(R){const b=R.data,S=b.target;S[E]=!1,S[m]=!1;const Q=S[u];U||(U=S[Ze],J=S[Ae]),Q&&J.call(S,K,Q);const W=S[u]=()=>{if(S.readyState===S.DONE)if(!b.aborted&&S[E]&&R.state===X){const _=S[c.__symbol__("loadfalse")];if(0!==S.status&&_&&_.length>0){const n=R.invoke;R.invoke=function(){const o=S[c.__symbol__("loadfalse")];for(let p=0;pfunction(R,b){return R[i]=0==b[2],R[T]=b[1],V.apply(R,b)}),G=j("fetchTaskAborting"),g=j("fetchTaskScheduling"),z=ue(Z,"send",()=>function(R,b){if(!0===c.current[g]||R[i])return z.apply(R,b);{const S={target:R,url:R[T],isPeriodic:!1,args:b,aborted:!1},Q=He("XMLHttpRequest.send",h,S,k,H);R&&!0===R[m]&&!S.aborted&&Q.state===X&&Q.invoke()}}),O=ue(Z,"abort",()=>function(R,b){const S=function x(R){return R[t]}(R);if(S&&"string"==typeof S.type){if(null==S.cancelFn||S.data&&S.data.aborted)return;S.zone.cancelTask(S)}else if(!0===c.current[G])return O.apply(R,b)})}(r);const t=j("xhrTask"),i=j("xhrSync"),u=j("xhrListener"),E=j("xhrScheduled"),T=j("xhrURL"),m=j("xhrErrorBeforeScheduled")}),e.__load_patch("geolocation",r=>{r.navigator&&r.navigator.geolocation&&function gt(e,r){const c=e.constructor.name;for(let t=0;t{const m=function(){return T.apply(this,xe(arguments,c+"."+i))};return fe(m,T),m})(u)}}}(r.navigator.geolocation,["getCurrentPosition","watchPosition"])}),e.__load_patch("PromiseRejectionEvent",(r,c)=>{function t(i){return function(u){st(r,i).forEach(T=>{const m=r.PromiseRejectionEvent;if(m){const D=new m(i,{promise:u.promise,reason:u.rejection});T.invoke(D)}})}}r.PromiseRejectionEvent&&(c[j("unhandledPromiseRejectionHandler")]=t("unhandledrejection"),c[j("rejectionHandledHandler")]=t("rejectionhandled"))}),e.__load_patch("queueMicrotask",(r,c,t)=>{!function Pt(e,r){r.patchMethod(e,"queueMicrotask",c=>function(t,i){Zone.current.scheduleMicroTask("queueMicrotask",i[0])})}(r,t)})}(at)}},te=>{te(te.s=6935)}]); \ No newline at end of file diff --git a/web/runtime.0e340cf7f98679c6.js b/web/runtime.0e340cf7f98679c6.js new file mode 100644 index 0000000000000000000000000000000000000000..baa176c9d1082f868e8d1130fc2b065bbce4739a --- /dev/null +++ b/web/runtime.0e340cf7f98679c6.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,v={},m={};function r(e){var n=m[e];if(void 0!==n)return n.exports;var t=m[e]={id:e,loaded:!1,exports:{}};return v[e].call(t.exports,t,t.exports,r),t.loaded=!0,t.exports}r.m=v,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=(n,t,f,i)=>{if(!t){var a=1/0;for(d=0;d=i)&&Object.keys(r.O).every(b=>r.O[b](t[o]))?t.splice(o--,1):(l=!1,i0&&e[d-1][2]>i;d--)e[d]=e[d-1];e[d]=[t,f,i]},r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((n,t)=>(r.f[t](e,n),n),[])),r.u=e=>e+"."+{8:"81a885008d22a962",111:"817d8c8fd13374f1",123:"8afe2adc6a675877",175:"5babe78c6c961eaf",221:"9cbb800b0f6da290",382:"03d981e973d105f9",391:"9ed074a12d41c746",563:"74488451f0ca2585",607:"10a7fc25555cb96d",611:"5c65ee89d09abe22",628:"02df1283b3c1d8f0",910:"c72829e7a46b4712",912:"b9d10d9e0ceb8501",956:"0b61c76986faf675"}[e]+".js",r.miniCssF=e=>{},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={},n="viewer:";r.l=(t,f,i,d)=>{if(e[t])e[t].push(f);else{var a,l;if(void 0!==i)for(var o=document.getElementsByTagName("script"),u=0;u{a.onerror=a.onload=null,clearTimeout(p);var h=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),h&&h.forEach(_=>_(b)),g)return g(b)},p=setTimeout(s.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=s.bind(null,a.onerror),a.onload=s.bind(null,a.onload),l&&document.head.appendChild(a)}}})(),r.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:n=>n},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="",(()=>{var e={121:0};r.f.j=(f,i)=>{var d=r.o(e,f)?e[f]:void 0;if(0!==d)if(d)i.push(d[2]);else if(121!=f){var a=new Promise((c,s)=>d=e[f]=[c,s]);i.push(d[2]=a);var l=r.p+r.u(f),o=new Error;r.l(l,c=>{if(r.o(e,f)&&(0!==(d=e[f])&&(e[f]=void 0),d)){var s=c&&("load"===c.type?"missing":c.type),p=c&&c.target&&c.target.src;o.message="Loading chunk "+f+" failed.\n("+s+": "+p+")",o.name="ChunkLoadError",o.type=s,o.request=p,d[1](o)}},"chunk-"+f,f)}else e[f]=0},r.O.j=f=>0===e[f];var n=(f,i)=>{var o,u,[d,a,l]=i,c=0;if(d.some(p=>0!==e[p])){for(o in a)r.o(a,o)&&(r.m[o]=a[o]);if(l)var s=l(r)}for(f&&f(i);c