diff --git a/packages/bigframes/bigframes/core/compile/sqlglot/sql/base.py b/packages/bigframes/bigframes/core/compile/sqlglot/sql/base.py index f77dcbee4d93..7af4d07de4f8 100644 --- a/packages/bigframes/bigframes/core/compile/sqlglot/sql/base.py +++ b/packages/bigframes/bigframes/core/compile/sqlglot/sql/base.py @@ -49,6 +49,13 @@ def to_sql(expr: sge.Expression) -> str: """Generate SQL string from the given expression.""" + + def _flatten_null_casts(node: sge.Expression) -> sge.Expression: + if isinstance(node, (sge.Cast, sge.TryCast)) and str(node.to).upper() == "NULL": + return sge.Null() + return node + + expr = expr.transform(_flatten_null_casts) return expr.sql(dialect=DIALECT, pretty=PRETTY) @@ -69,8 +76,6 @@ def literal(value: typing.Any, dtype: dtypes.Dtype | None = None) -> sge.Express return sge.Null() if value is None: - if str(sqlglot_type).upper() == "NULL": - return sge.Null() return cast(sge.Null(), sqlglot_type) if dtypes.is_struct_like(dtype): items = [ @@ -121,8 +126,10 @@ def literal(value: typing.Any, dtype: dtypes.Dtype | None = None) -> sge.Express return sge.convert(value) -def cast(arg: typing.Any, to: str, safe: bool = False) -> sge.Cast | sge.TryCast: +def cast(arg: typing.Any, to: str | sge.DataType, safe: bool = False) -> sge.Expression: """Return a SQL expression that casts the given argument to the specified type.""" + if str(to).upper() == "NULL": + return sge.Null() if safe: return sge.TryCast(this=arg, to=to) else: diff --git a/packages/bigframes/bigframes/dataframe.py b/packages/bigframes/bigframes/dataframe.py index e64e640287f2..4d849676ad95 100644 --- a/packages/bigframes/bigframes/dataframe.py +++ b/packages/bigframes/bigframes/dataframe.py @@ -843,7 +843,7 @@ def __repr__(self) -> str: column_count=len(self.columns), ) - def _prepare_display_df(self) -> DataFrame: + def _process_display_df(self) -> tuple[DataFrame, list[str]]: """Process ObjectRef and JSON/nested JSON columns for display.""" df = self # Arrow/Pandas to_pandas_batches does not support raw JSON/nested JSON @@ -861,7 +861,7 @@ def _prepare_display_df(self) -> DataFrame: sql_template="TO_JSON_STRING({0})", ) df = df.assign(**{col: df[col]._apply_unary_op(op) for col in json_cols}) - return df + return df, [] def _repr_mimebundle_(self, include=None, exclude=None): """ diff --git a/packages/bigframes/bigframes/display/anywidget.py b/packages/bigframes/bigframes/display/anywidget.py index 9d547baff842..4133e53ed87b 100644 --- a/packages/bigframes/bigframes/display/anywidget.py +++ b/packages/bigframes/bigframes/display/anywidget.py @@ -18,6 +18,9 @@ import dataclasses import functools +import logging + +logger = logging.getLogger(__name__) import math import threading import uuid @@ -77,8 +80,18 @@ class TableWidget(_WIDGET_BASE): _error_message = traitlets.Unicode(allow_none=True, default_value=None).tag( sync=True ) - - def __init__(self, dataframe: bigframes.dataframe.DataFrame): + start_execution = traitlets.Bool(False).tag(sync=True) + is_deferred_mode = traitlets.Bool(False).tag(sync=True) + dry_run_info = traitlets.Unicode("").tag(sync=True) + + def __init__( + self, + dataframe: ( + bigframes.dataframe.DataFrame + | bigframes.session.deferred.DeferredBigQueryDataFrame + ), + dry_run_info: Optional[str] = None, + ): """Initialize the TableWidget. Args: @@ -90,7 +103,20 @@ def __init__(self, dataframe: bigframes.dataframe.DataFrame): "`pip install 'bigframes[anywidget]'` to use TableWidget." ) - self._dataframe = dataframe + from bigframes.session import deferred + + is_deferred = False + deferred_df = None + df = None + + if isinstance(dataframe, deferred.DeferredBigQueryDataFrame): + is_deferred = True + deferred_df = dataframe + elif bigframes.options.display.repr_mode == "deferred": + is_deferred = True + df = dataframe + else: + df = dataframe from bigframes.core.utils import get_ipython_execution_count @@ -98,6 +124,13 @@ def __init__(self, dataframe: bigframes.dataframe.DataFrame): super().__init__() + self.is_deferred_mode = is_deferred + self._deferred_dataframe = deferred_df + self._dataframe = df + + if dry_run_info: + self.dry_run_info = dry_run_info + # Initialize attributes that might be needed by observers first self._table_id = str(uuid.uuid4()) self._all_data_loaded = False @@ -111,19 +144,141 @@ def __init__(self, dataframe: bigframes.dataframe.DataFrame): initial_page_size = bigframes.options.display.max_rows initial_max_columns = bigframes.options.display.max_columns - # set traitlets properties that trigger observers - # TODO(b/462525985): Investigate and improve TableWidget UX for DataFrames with a large number of columns. self.page_size = initial_page_size self.max_columns = initial_max_columns - self.orderable_columns = self._get_orderable_columns(dataframe) - - self._initial_load() + if not self.is_deferred_mode: + self._initialize_from_dataframe() # Signals to the frontend that the initial data load is complete. # Also used as a guard to prevent observers from firing during initialization. self._initial_load_complete = True + @traitlets.observe("start_execution") + def _on_start_execution(self, change: dict[str, Any]): + if change["new"]: + import asyncio + + try: + loop = asyncio.get_running_loop() + except RuntimeError: + try: + import tornado.ioloop # type: ignore[import-not-found] + + loop = tornado.ioloop.IOLoop.current().asyncio_loop # type: ignore[attr-defined] + except Exception: + loop = None + + def run_execution(): + try: + self._error_message = None + df = None + if self.is_deferred_mode: + if self._deferred_dataframe is not None: + result = self._deferred_dataframe.execute() + if isinstance(result, bigframes.series.Series): + df = result.to_frame() + elif isinstance(result, bigframes.dataframe.DataFrame): + df = result + else: + raise TypeError( + f"Unexpected result type: {type(result)}" + ) + elif self._dataframe is not None: + df = self._dataframe + else: + df = self._dataframe + + if df is None: + raise ValueError("No DataFrame to execute.") + + df_to_set, _ = df._process_display_df() + orderable_cols = self._get_orderable_columns(df_to_set) + + with bigframes.option_context("display.progress_bar", None): + batches = df_to_set.to_pandas_batches( + page_size=self.page_size, + cell_execution_count=self._cell_execution_count, + ) + + total_rows = getattr(batches, "total_rows", None) + + # Fetch the first batch + batch_iter = iter(batches) + try: + initial_batch = next(batch_iter) + cached_batches = [initial_batch] + all_data_loaded = False + except StopIteration: + initial_batch = pd.DataFrame(columns=df_to_set.columns) + cached_batches = [] + all_data_loaded = True + + # Render the HTML + page_data = initial_batch.copy() + start = 0 + if df_to_set._block.has_index: + is_unnamed_single_index = ( + page_data.index.name is None + and not isinstance(page_data.index, pd.MultiIndex) + ) + page_data = page_data.reset_index() + if is_unnamed_single_index and "index" in page_data.columns: + page_data.rename(columns={"index": ""}, inplace=True) + else: + page_data.insert( + 0, "Row", range(start + 1, start + len(page_data) + 1) + ) + + initial_html = bigframes.display.html.render_html( + dataframe=page_data, + table_id=f"table-{self._table_id}", + orderable_columns=orderable_cols, + max_columns=self.max_columns, + ) + + def update_ui(): + with self.hold_sync(): + self._dataframe = df_to_set + self.orderable_columns = orderable_cols + self._batches = batches + self._batch_iter = batch_iter + self._cached_batches = cached_batches + self._all_data_loaded = all_data_loaded + self.row_count = total_rows + self.table_html = initial_html + self.is_deferred_mode = False + self.start_execution = False + + if loop is not None and loop.is_running(): + loop.call_soon_threadsafe(update_ui) + else: + update_ui() + except Exception as e: + logger.warning(f"Error in background execution: {e}") + err_msg = str(e) + + def set_error(): + with self.hold_sync(): + self._error_message = err_msg + self.start_execution = False + + if loop is not None and loop.is_running(): + loop.call_soon_threadsafe(set_error) + else: + set_error() + + self._execution_thread = threading.Thread(target=run_execution, daemon=True) + self._execution_thread.start() + + def _initialize_from_dataframe(self): + if self._dataframe is None: + return + + self.orderable_columns = self._get_orderable_columns(self._dataframe) + + self._initial_load() + def _get_orderable_columns( self, dataframe: bigframes.dataframe.DataFrame ) -> list[str]: @@ -278,7 +433,9 @@ def _batch_iterator(self) -> Iterator[pd.DataFrame]: def _cached_data(self) -> pd.DataFrame: """Combine all cached batches into a single DataFrame.""" if not self._cached_batches: - return pd.DataFrame(columns=self._dataframe.columns) + if self._dataframe is not None: + return pd.DataFrame(columns=self._dataframe.columns) + return pd.DataFrame() return pd.concat(self._cached_batches) def _reset_batch_cache(self) -> None: @@ -289,6 +446,8 @@ def _reset_batch_cache(self) -> None: def _reset_batches_for_new_page_size(self) -> None: """Reset the batch iterator when page size changes.""" + if self._dataframe is None: + return with bigframes.option_context("display.progress_bar", None): self._batches = self._dataframe.to_pandas_batches( page_size=self.page_size, @@ -299,6 +458,9 @@ def _reset_batches_for_new_page_size(self) -> None: def _set_table_html(self) -> None: """Sets the current html data based on the current page and page size.""" + if self.is_deferred_mode: + return + new_page = None with ( self._setting_html_lock, @@ -310,6 +472,10 @@ def _set_table_html(self) -> None: ) return + if self._dataframe is None: + self.table_html = "
Internal Error: DataFrame is missing.
" + return + # Apply sorting if a column is selected df_to_display = self._dataframe sort_columns = [item["column"] for item in self.sort_context] diff --git a/packages/bigframes/bigframes/display/html.py b/packages/bigframes/bigframes/display/html.py index c46613d1a84d..49493a2e6af0 100644 --- a/packages/bigframes/bigframes/display/html.py +++ b/packages/bigframes/bigframes/display/html.py @@ -231,6 +231,7 @@ def get_anywidget_bundle( obj: Union[bigframes.dataframe.DataFrame, bigframes.series.Series], include=None, exclude=None, + dry_run_info: str | None = None, ) -> tuple[dict[str, Any], dict[str, Any]]: """ Helper method to create and return the anywidget mimebundle. @@ -244,9 +245,17 @@ def get_anywidget_bundle( else: df = obj - df = df._prepare_display_df() + from bigframes.session import deferred - widget = display.TableWidget(df) + if ( + not isinstance(df, deferred.DeferredBigQueryDataFrame) + and bigframes.options.display.repr_mode != "deferred" + ): + display_df, _ = df._process_display_df() + else: + display_df = df + + widget = display.TableWidget(display_df, dry_run_info=dry_run_info) widget_repr_result = widget._repr_mimebundle_(include=include, exclude=exclude) if isinstance(widget_repr_result, tuple): @@ -262,20 +271,23 @@ def get_anywidget_bundle( total_rows = widget.row_count total_columns = len(df.columns) - widget_repr["text/html"] = create_html_representation( - obj, - cached_pd, - total_rows, - total_columns, - ) - is_series, has_index = _get_obj_metadata(obj) - widget_repr["text/plain"] = plaintext.create_text_representation( - cached_pd, - total_rows, - is_series=is_series, - has_index=has_index, - column_count=len(df.columns) if not is_series else 0, - ) + if dry_run_info: + widget_repr["text/plain"] = dry_run_info + else: + widget_repr["text/html"] = create_html_representation( + obj, + cached_pd, + total_rows, + total_columns, + ) + is_series, has_index = _get_obj_metadata(obj) + widget_repr["text/plain"] = plaintext.create_text_representation( + cached_pd, + total_rows, + is_series=is_series, + has_index=has_index, + column_count=len(df.columns) if not is_series else 0, + ) return widget_repr, widget_metadata @@ -300,7 +312,7 @@ def repr_mimebundle_head( else: df = obj - df = df._prepare_display_df() + df, _ = df._process_display_df() pandas_df, row_count, query_job = df._block.retrieve_repr_request_results( opts.max_rows ) @@ -332,10 +344,11 @@ def repr_mimebundle( # BQ Studio, but there is a known compatibility issue with Marimo that needs to be addressed. opts = options.display - if opts.repr_mode == "deferred": - return repr_mimebundle_deferred(obj) - - if opts.render_mode == "anywidget" or opts.repr_mode == "anywidget": + if ( + opts.render_mode == "anywidget" + or opts.repr_mode == "anywidget" + or opts.repr_mode == "deferred" + ): try: with bigframes.option_context("display.progress_bar", None): with warnings.catch_warnings(): @@ -343,16 +356,28 @@ def repr_mimebundle( "ignore", category=bigframes.exceptions.JSONDtypeWarning ) warnings.simplefilter("ignore", category=FutureWarning) - return get_anywidget_bundle(obj, include=include, exclude=exclude) - except ImportError: + dry_run_info = None + if opts.repr_mode == "deferred": + dry_run_job = obj._compute_dry_run() + dry_run_info = formatter.repr_query_job(dry_run_job) + return get_anywidget_bundle( + obj, + include=include, + exclude=exclude, + dry_run_info=dry_run_info, + ) + except Exception: # Anywidget is an optional dependency, so warn rather than fail. # TODO(shuowei): When Anywidget becomes the default for all repr modes, # remove this warning. warnings.warn( - "Anywidget mode is not available. " - "Please `pip install anywidget traitlets` or `pip install 'bigframes[anywidget]'` to use interactive tables. " + "Anywidget mode is not available or failed to load. " + "Please `pip install anywidget traitlets` or " + "`pip install 'bigframes[anywidget]'` to use interactive tables. " f"Falling back to static HTML. Error: {traceback.format_exc()}" ) + if opts.repr_mode == "deferred": + return repr_mimebundle_deferred(obj) bundle = repr_mimebundle_head(obj) if opts.render_mode == "plaintext": diff --git a/packages/bigframes/bigframes/display/table_widget_angular.js b/packages/bigframes/bigframes/display/table_widget_angular.js index 69d2df7eaab1..1d05cb34b904 100644 --- a/packages/bigframes/bigframes/display/table_widget_angular.js +++ b/packages/bigframes/bigframes/display/table_widget_angular.js @@ -14,6721 +14,7 @@ * limitations under the License. */ - -// dist/table-widget-angular/browser/main.js -var od = Object.defineProperty; -var id = Object.defineProperties; -var sd = Object.getOwnPropertyDescriptors; -var Da = Object.getOwnPropertySymbols; -var ad = Object.prototype.hasOwnProperty; -var cd = Object.prototype.propertyIsEnumerable; -var wa = (e12, t, n) => t in e12 ? od(e12, t, { enumerable: true, configurable: true, writable: true, value: n }) : e12[t] = n; -var N = (e12, t) => { - for (var n in t ||= {}) - ad.call(t, n) && wa(e12, n, t[n]); - if (Da) - for (var n of Da(t)) - cd.call(t, n) && wa(e12, n, t[n]); - return e12; -}; -var A = (e12, t) => id(e12, sd(t)); -var L = null; -var Sn = false; -var yo = 1; -var ld = null; -var Z = Symbol("SIGNAL"); -function g(e12) { - let t = L; - return L = e12, t; -} -function xn() { - return L; -} -var ut = { version: 0, lastCleanEpoch: 0, dirty: false, producers: void 0, producersTail: void 0, consumers: void 0, consumersTail: void 0, recomputing: false, consumerAllowSignalWrites: false, consumerIsAlwaysLive: false, kind: "unknown", producerMustRecompute: () => false, producerRecomputeValue: () => { -}, consumerMarkedDirty: () => { -}, consumerOnSignalRead: () => { -} }; -function vo(e12) { - if (Sn) - throw new Error(""); - if (L === null) - return; - L.consumerOnSignalRead(e12); - let t = L.producersTail; - if (t !== void 0 && t.producer === e12) - return; - let n, r = L.recomputing; - if (r && (n = t !== void 0 ? t.nextProducer : L.producers, n !== void 0 && n.producer === e12)) { - L.producersTail = n, n.lastReadVersion = e12.version; - return; - } - let o = e12.consumersTail; - if (o !== void 0 && o.consumer === L && (!r || dd(o, L))) - return; - let i = ft(L), s = { producer: e12, consumer: L, nextProducer: n, prevConsumer: o, lastReadVersion: e12.version, nextConsumer: void 0 }; - L.producersTail = s, t !== void 0 ? t.nextProducer = s : L.producers = s, i && Ma(e12, s); -} -function Ca() { - yo++; -} -function Eo(e12) { - if (!(ft(e12) && !e12.dirty) && !(!e12.dirty && e12.lastCleanEpoch === yo)) { - if (!e12.producerMustRecompute(e12) && !Rn(e12)) { - mo(e12); - return; - } - e12.producerRecomputeValue(e12), mo(e12); - } -} -function Io(e12) { - if (e12.consumers === void 0) - return; - let t = Sn; - Sn = true; - try { - for (let n = e12.consumers; n !== void 0; n = n.nextConsumer) { - let r = n.consumer; - r.dirty || ud(r); - } - } finally { - Sn = t; - } -} -function Do() { - return L?.consumerAllowSignalWrites !== false; -} -function ud(e12) { - e12.dirty = true, Io(e12), e12.consumerMarkedDirty?.(e12); -} -function mo(e12) { - e12.dirty = false, e12.lastCleanEpoch = yo; -} -function Bt(e12) { - return e12 && ba(e12), g(e12); -} -function ba(e12) { - e12.producersTail = void 0, e12.recomputing = true; -} -function An(e12, t) { - g(t), e12 && Ta(e12); -} -function Ta(e12) { - e12.recomputing = false; - let t = e12.producersTail, n = t !== void 0 ? t.nextProducer : e12.producers; - if (n !== void 0) { - if (ft(e12)) - do - n = wo(n); - while (n !== void 0); - t !== void 0 ? t.nextProducer = void 0 : e12.producers = void 0; - } -} -function Rn(e12) { - for (let t = e12.producers; t !== void 0; t = t.nextProducer) { - let n = t.producer, r = t.lastReadVersion; - if (r !== n.version || (Eo(n), r !== n.version)) - return true; - } - return false; -} -function dt(e12) { - if (ft(e12)) { - let t = e12.producers; - for (; t !== void 0; ) - t = wo(t); - } - e12.producers = void 0, e12.producersTail = void 0, e12.consumers = void 0, e12.consumersTail = void 0; -} -function Ma(e12, t) { - let n = e12.consumersTail, r = ft(e12); - if (n !== void 0 ? (t.nextConsumer = n.nextConsumer, n.nextConsumer = t) : (t.nextConsumer = void 0, e12.consumers = t), t.prevConsumer = n, e12.consumersTail = t, !r) - for (let o = e12.producers; o !== void 0; o = o.nextProducer) - Ma(o.producer, o); -} -function wo(e12) { - let t = e12.producer, n = e12.nextProducer, r = e12.nextConsumer, o = e12.prevConsumer; - if (e12.nextConsumer = void 0, e12.prevConsumer = void 0, r !== void 0 ? r.prevConsumer = o : t.consumersTail = o, o !== void 0) - o.nextConsumer = r; - else if (t.consumers = r, !ft(t)) { - let i = t.producers; - for (; i !== void 0; ) - i = wo(i); - } - return n; -} -function ft(e12) { - return e12.consumerIsAlwaysLive || e12.consumers !== void 0; -} -function Co(e12) { - ld?.(e12); -} -function dd(e12, t) { - let n = t.producersTail; - if (n !== void 0) { - let r = t.producers; - do { - if (r === e12) - return true; - if (r === n) - break; - r = r.nextProducer; - } while (r !== void 0); - } - return false; -} -function bo(e12, t) { - return Object.is(e12, t); -} -function On(e12, t) { - let n = Object.create(fd); - n.computation = e12, t !== void 0 && (n.equal = t); - let r = () => { - if (Eo(n), vo(n), n.value === Nn) - throw n.error; - return n.value; - }; - return r[Z] = n, Co(n), r; -} -var ho = Symbol("UNSET"); -var go = Symbol("COMPUTING"); -var Nn = Symbol("ERRORED"); -var fd = A(N({}, ut), { value: ho, dirty: true, error: null, equal: bo, kind: "computed", producerMustRecompute(e12) { - return e12.value === ho || e12.value === go; -}, producerRecomputeValue(e12) { - if (e12.value === go) - throw new Error(""); - let t = e12.value; - e12.value = go; - let n = Bt(e12), r, o = false; - try { - r = e12.computation(), g(null), o = t !== ho && t !== Nn && r !== Nn && e12.equal(t, r); - } catch (i) { - r = Nn, e12.error = i; - } finally { - An(e12, n); - } - if (o) { - e12.value = t; - return; - } - e12.value = r, e12.version++; -} }); -function pd() { - throw new Error(); -} -var _a = pd; -function Sa(e12) { - _a(e12); -} -function To(e12) { - _a = e12; -} -var hd = null; -function Mo(e12, t) { - let n = Object.create(Aa); - n.value = e12, t !== void 0 && (n.equal = t); - let r = () => Na(n); - return r[Z] = n, Co(n), [r, (s) => _o(n, s), (s) => xa(n, s)]; -} -function Na(e12) { - return vo(e12), e12.value; -} -function _o(e12, t) { - Do() || Sa(e12), e12.equal(e12.value, t) || (e12.value = t, gd(e12)); -} -function xa(e12, t) { - Do() || Sa(e12), _o(e12, t(e12.value)); -} -var Aa = A(N({}, ut), { equal: bo, value: void 0, kind: "signal" }); -function gd(e12) { - e12.version++, Ca(), Io(e12), hd?.(e12); -} -var So = A(N({}, ut), { consumerIsAlwaysLive: true, consumerAllowSignalWrites: true, dirty: true, kind: "effect" }); -function No(e12) { - if (e12.dirty = false, e12.version > 0 && !Rn(e12)) - return; - e12.version++; - let t = Bt(e12); - try { - e12.cleanup(), e12.fn(); - } finally { - An(e12, t); - } -} -function $(e12) { - return typeof e12 == "function"; -} -function kn(e12) { - let n = e12((r) => { - Error.call(r), r.stack = new Error().stack; - }); - return n.prototype = Object.create(Error.prototype), n.prototype.constructor = n, n; -} -var Pn = kn((e12) => function(n) { - e12(this), this.message = n ? `${n.length} errors occurred during unsubscription: -${n.map((r, o) => `${o + 1}) ${r.toString()}`).join(` - `)}` : "", this.name = "UnsubscriptionError", this.errors = n; -}); -function $t(e12, t) { - if (e12) { - let n = e12.indexOf(t); - 0 <= n && e12.splice(n, 1); - } -} -var H = class e { - constructor(t) { - this.initialTeardown = t, this.closed = false, this._parentage = null, this._finalizers = null; - } - unsubscribe() { - let t; - if (!this.closed) { - this.closed = true; - let { _parentage: n } = this; - if (n) - if (this._parentage = null, Array.isArray(n)) - for (let i of n) - i.remove(this); - else - n.remove(this); - let { initialTeardown: r } = this; - if ($(r)) - try { - r(); - } catch (i) { - t = i instanceof Pn ? i.errors : [i]; - } - let { _finalizers: o } = this; - if (o) { - this._finalizers = null; - for (let i of o) - try { - Ra(i); - } catch (s) { - t = t ?? [], s instanceof Pn ? t = [...t, ...s.errors] : t.push(s); - } - } - if (t) - throw new Pn(t); - } - } - add(t) { - var n; - if (t && t !== this) - if (this.closed) - Ra(t); - else { - if (t instanceof e) { - if (t.closed || t._hasParent(this)) - return; - t._addParent(this); - } - (this._finalizers = (n = this._finalizers) !== null && n !== void 0 ? n : []).push(t); - } - } - _hasParent(t) { - let { _parentage: n } = this; - return n === t || Array.isArray(n) && n.includes(t); - } - _addParent(t) { - let { _parentage: n } = this; - this._parentage = Array.isArray(n) ? (n.push(t), n) : n ? [n, t] : t; - } - _removeParent(t) { - let { _parentage: n } = this; - n === t ? this._parentage = null : Array.isArray(n) && $t(n, t); - } - remove(t) { - let { _finalizers: n } = this; - n && $t(n, t), t instanceof e && t._removeParent(this); - } -}; -H.EMPTY = (() => { - let e12 = new H(); - return e12.closed = true, e12; -})(); -var xo = H.EMPTY; -function Ln(e12) { - return e12 instanceof H || e12 && "closed" in e12 && $(e12.remove) && $(e12.add) && $(e12.unsubscribe); -} -function Ra(e12) { - $(e12) ? e12() : e12.unsubscribe(); -} -var te = { onUnhandledError: null, onStoppedNotification: null, Promise: void 0, useDeprecatedSynchronousErrorHandling: false, useDeprecatedNextContext: false }; -var pt = { setTimeout(e12, t, ...n) { - let { delegate: r } = pt; - return r?.setTimeout ? r.setTimeout(e12, t, ...n) : setTimeout(e12, t, ...n); -}, clearTimeout(e12) { - let { delegate: t } = pt; - return (t?.clearTimeout || clearTimeout)(e12); -}, delegate: void 0 }; -function Oa(e12) { - pt.setTimeout(() => { - let { onUnhandledError: t } = te; - if (t) - t(e12); - else - throw e12; - }); -} -function Ao() { -} -var ka = Ro("C", void 0, void 0); -function Pa(e12) { - return Ro("E", void 0, e12); -} -function La(e12) { - return Ro("N", e12, void 0); -} -function Ro(e12, t, n) { - return { kind: e12, value: t, error: n }; -} -var Ue = null; -function ht(e12) { - if (te.useDeprecatedSynchronousErrorHandling) { - let t = !Ue; - if (t && (Ue = { errorThrown: false, error: null }), e12(), t) { - let { errorThrown: n, error: r } = Ue; - if (Ue = null, n) - throw r; - } - } else - e12(); -} -function Fa(e12) { - te.useDeprecatedSynchronousErrorHandling && Ue && (Ue.errorThrown = true, Ue.error = e12); -} -var ze = class extends H { - constructor(t) { - super(), this.isStopped = false, t ? (this.destination = t, Ln(t) && t.add(this)) : this.destination = vd; - } - static create(t, n, r) { - return new gt(t, n, r); - } - next(t) { - this.isStopped ? ko(La(t), this) : this._next(t); - } - error(t) { - this.isStopped ? ko(Pa(t), this) : (this.isStopped = true, this._error(t)); - } - complete() { - this.isStopped ? ko(ka, this) : (this.isStopped = true, this._complete()); - } - unsubscribe() { - this.closed || (this.isStopped = true, super.unsubscribe(), this.destination = null); - } - _next(t) { - this.destination.next(t); - } - _error(t) { - try { - this.destination.error(t); - } finally { - this.unsubscribe(); - } - } - _complete() { - try { - this.destination.complete(); - } finally { - this.unsubscribe(); - } - } -}; -var md = Function.prototype.bind; -function Oo(e12, t) { - return md.call(e12, t); -} -var Po = class { - constructor(t) { - this.partialObserver = t; - } - next(t) { - let { partialObserver: n } = this; - if (n.next) - try { - n.next(t); - } catch (r) { - Fn(r); - } - } - error(t) { - let { partialObserver: n } = this; - if (n.error) - try { - n.error(t); - } catch (r) { - Fn(r); - } - else - Fn(t); - } - complete() { - let { partialObserver: t } = this; - if (t.complete) - try { - t.complete(); - } catch (n) { - Fn(n); - } - } -}; -var gt = class extends ze { - constructor(t, n, r) { - super(); - let o; - if ($(t) || !t) - o = { next: t ?? void 0, error: n ?? void 0, complete: r ?? void 0 }; - else { - let i; - this && te.useDeprecatedNextContext ? (i = Object.create(t), i.unsubscribe = () => this.unsubscribe(), o = { next: t.next && Oo(t.next, i), error: t.error && Oo(t.error, i), complete: t.complete && Oo(t.complete, i) }) : o = t; - } - this.destination = new Po(o); - } -}; -function Fn(e12) { - te.useDeprecatedSynchronousErrorHandling ? Fa(e12) : Oa(e12); -} -function yd(e12) { - throw e12; -} -function ko(e12, t) { - let { onStoppedNotification: n } = te; - n && pt.setTimeout(() => n(e12, t)); -} -var vd = { closed: true, next: Ao, error: yd, complete: Ao }; -var ja = typeof Symbol == "function" && Symbol.observable || "@@observable"; -function Ha(e12) { - return e12; -} -function Va(e12) { - return e12.length === 0 ? Ha : e12.length === 1 ? e12[0] : function(n) { - return e12.reduce((r, o) => o(r), n); - }; -} -var mt = (() => { - class e12 { - constructor(n) { - n && (this._subscribe = n); - } - lift(n) { - let r = new e12(); - return r.source = this, r.operator = n, r; - } - subscribe(n, r, o) { - let i = Id(n) ? n : new gt(n, r, o); - return ht(() => { - let { operator: s, source: a } = this; - i.add(s ? s.call(i, a) : a ? this._subscribe(i) : this._trySubscribe(i)); - }), i; - } - _trySubscribe(n) { - try { - return this._subscribe(n); - } catch (r) { - n.error(r); - } - } - forEach(n, r) { - return r = Ba(r), new r((o, i) => { - let s = new gt({ next: (a) => { - try { - n(a); - } catch (c) { - i(c), s.unsubscribe(); - } - }, error: i, complete: o }); - this.subscribe(s); - }); - } - _subscribe(n) { - var r; - return (r = this.source) === null || r === void 0 ? void 0 : r.subscribe(n); - } - [ja]() { - return this; - } - pipe(...n) { - return Va(n)(this); - } - toPromise(n) { - return n = Ba(n), new n((r, o) => { - let i; - this.subscribe((s) => i = s, (s) => o(s), () => r(i)); - }); - } - } - return e12.create = (t) => new e12(t), e12; -})(); -function Ba(e12) { - var t; - return (t = e12 ?? te.Promise) !== null && t !== void 0 ? t : Promise; -} -function Ed(e12) { - return e12 && $(e12.next) && $(e12.error) && $(e12.complete); -} -function Id(e12) { - return e12 && e12 instanceof ze || Ed(e12) && Ln(e12); -} -function Dd(e12) { - return $(e12?.lift); -} -function $a(e12) { - return (t) => { - if (Dd(t)) - return t.lift(function(n) { - try { - return e12(n, this); - } catch (r) { - this.error(r); - } - }); - throw new TypeError("Unable to lift unknown Observable type"); - }; -} -function Ua(e12, t, n, r, o) { - return new Lo(e12, t, n, r, o); -} -var Lo = class extends ze { - constructor(t, n, r, o, i, s) { - super(t), this.onFinalize = i, this.shouldUnsubscribe = s, this._next = n ? function(a) { - try { - n(a); - } catch (c) { - t.error(c); - } - } : super._next, this._error = o ? function(a) { - try { - o(a); - } catch (c) { - t.error(c); - } finally { - this.unsubscribe(); - } - } : super._error, this._complete = r ? function() { - try { - r(); - } catch (a) { - t.error(a); - } finally { - this.unsubscribe(); - } - } : super._complete; - } - unsubscribe() { - var t; - if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { - let { closed: n } = this; - super.unsubscribe(), !n && ((t = this.onFinalize) === null || t === void 0 || t.call(this)); - } - } -}; -var za = kn((e12) => function() { - e12(this), this.name = "ObjectUnsubscribedError", this.message = "object unsubscribed"; -}); -var ye = (() => { - class e12 extends mt { - constructor() { - super(), this.closed = false, this.currentObservers = null, this.observers = [], this.isStopped = false, this.hasError = false, this.thrownError = null; - } - lift(n) { - let r = new jn(this, this); - return r.operator = n, r; - } - _throwIfClosed() { - if (this.closed) - throw new za(); - } - next(n) { - ht(() => { - if (this._throwIfClosed(), !this.isStopped) { - this.currentObservers || (this.currentObservers = Array.from(this.observers)); - for (let r of this.currentObservers) - r.next(n); - } - }); - } - error(n) { - ht(() => { - if (this._throwIfClosed(), !this.isStopped) { - this.hasError = this.isStopped = true, this.thrownError = n; - let { observers: r } = this; - for (; r.length; ) - r.shift().error(n); - } - }); - } - complete() { - ht(() => { - if (this._throwIfClosed(), !this.isStopped) { - this.isStopped = true; - let { observers: n } = this; - for (; n.length; ) - n.shift().complete(); - } - }); - } - unsubscribe() { - this.isStopped = this.closed = true, this.observers = this.currentObservers = null; - } - get observed() { - var n; - return ((n = this.observers) === null || n === void 0 ? void 0 : n.length) > 0; - } - _trySubscribe(n) { - return this._throwIfClosed(), super._trySubscribe(n); - } - _subscribe(n) { - return this._throwIfClosed(), this._checkFinalizedStatuses(n), this._innerSubscribe(n); - } - _innerSubscribe(n) { - let { hasError: r, isStopped: o, observers: i } = this; - return r || o ? xo : (this.currentObservers = null, i.push(n), new H(() => { - this.currentObservers = null, $t(i, n); - })); - } - _checkFinalizedStatuses(n) { - let { hasError: r, thrownError: o, isStopped: i } = this; - r ? n.error(o) : i && n.complete(); - } - asObservable() { - let n = new mt(); - return n.source = this, n; - } - } - return e12.create = (t, n) => new jn(t, n), e12; -})(); -var jn = class extends ye { - constructor(t, n) { - super(), this.destination = t, this.source = n; - } - next(t) { - var n, r; - (r = (n = this.destination) === null || n === void 0 ? void 0 : n.next) === null || r === void 0 || r.call(n, t); - } - error(t) { - var n, r; - (r = (n = this.destination) === null || n === void 0 ? void 0 : n.error) === null || r === void 0 || r.call(n, t); - } - complete() { - var t, n; - (n = (t = this.destination) === null || t === void 0 ? void 0 : t.complete) === null || n === void 0 || n.call(t); - } - _subscribe(t) { - var n, r; - return (r = (n = this.source) === null || n === void 0 ? void 0 : n.subscribe(t)) !== null && r !== void 0 ? r : xo; - } -}; -var Ut = class extends ye { - constructor(t) { - super(), this._value = t; - } - get value() { - return this.getValue(); - } - _subscribe(t) { - let n = super._subscribe(t); - return !n.closed && t.next(this._value), n; - } - getValue() { - let { hasError: t, thrownError: n, _value: r } = this; - if (t) - throw n; - return this._throwIfClosed(), r; - } - next(t) { - super.next(this._value = t); - } -}; -function Fo(e12, t) { - return $a((n, r) => { - let o = 0; - n.subscribe(Ua(r, (i) => { - r.next(e12.call(t, i, o++)); - })); - }); -} -var jo; -function Hn() { - return jo; -} -function ae(e12) { - let t = jo; - return jo = e12, t; -} -var Wa = Symbol("NotFound"); -function yt(e12) { - return e12 === Wa || e12?.name === "\u0275NotFound"; -} -var qn = "https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss"; -var v = class extends Error { - code; - constructor(t, n) { - super(Zn(t, n)), this.code = t; - } -}; -function wd(e12) { - return `NG0${Math.abs(e12)}`; -} -function Zn(e12, t) { - return `${wd(e12)}${t ? ": " + t : ""}`; -} -var Re = globalThis; -function b(e12) { - for (let t in e12) - if (e12[t] === b) - return t; - throw Error(""); -} -function Qn(e12) { - if (typeof e12 == "string") - return e12; - if (Array.isArray(e12)) - return `[${e12.map(Qn).join(", ")}]`; - if (e12 == null) - return "" + e12; - let t = e12.overriddenName || e12.name; - if (t) - return `${t}`; - let n = e12.toString(); - if (n == null) - return "" + n; - let r = n.indexOf(` -`); - return r >= 0 ? n.slice(0, r) : n; -} -function Jo(e12, t) { - return e12 ? t ? `${e12} ${t}` : e12 : t || ""; -} -var Cd = b({ __forward_ref__: b }); -function Yn(e12) { - return e12.__forward_ref__ = Yn, e12; -} -function W(e12) { - return Ya(e12) ? e12() : e12; -} -function Ya(e12) { - return typeof e12 == "function" && e12.hasOwnProperty(Cd) && e12.__forward_ref__ === Yn; -} -function _(e12) { - return { token: e12.token, providedIn: e12.providedIn || null, factory: e12.factory, value: void 0 }; -} -function Kn(e12) { - return bd(e12, Jn); -} -function bd(e12, t) { - return e12.hasOwnProperty(t) && e12[t] || null; -} -function Td(e12) { - let t = e12?.[Jn] ?? null; - return t || null; -} -function Vo(e12) { - return e12 && e12.hasOwnProperty(Bn) ? e12[Bn] : null; -} -var Jn = b({ \u0275prov: b }); -var Bn = b({ \u0275inj: b }); -var D = class { - _desc; - ngMetadataName = "InjectionToken"; - \u0275prov; - constructor(t, n) { - this._desc = t, this.\u0275prov = void 0, typeof n == "number" ? this.__NG_ELEMENT_ID__ = n : n !== void 0 && (this.\u0275prov = _({ token: this, providedIn: n.providedIn || "root", factory: n.factory })); - } - get multi() { - return this; - } - toString() { - return `InjectionToken ${this._desc}`; - } -}; -function Xo(e12) { - return e12 && !!e12.\u0275providers; -} -var ei = b({ \u0275cmp: b }); -var ti = b({ \u0275dir: b }); -var ni = b({ \u0275pipe: b }); -var Bo = b({ \u0275fac: b }); -var Qe = b({ __NG_ELEMENT_ID__: b }); -var Ga = b({ __NG_ENV_ID__: b }); -function Ye(e12) { - return oi(e12, "@Component"), e12[ei] || null; -} -function ri(e12) { - return oi(e12, "@Directive"), e12[ti] || null; -} -function Ka(e12) { - return oi(e12, "@Pipe"), e12[ni] || null; -} -function oi(e12, t) { - if (e12 == null) - throw new v(-919, false); -} -function ii(e12) { - return typeof e12 == "string" ? e12 : e12 == null ? "" : String(e12); -} -var Ja = b({ ngErrorCode: b }); -var Md = b({ ngErrorMessage: b }); -var _d = b({ ngTokenPath: b }); -function si(e12, t) { - return Xa("", -200, t); -} -function Xn(e12, t) { - throw new v(-201, false); -} -function Xa(e12, t, n) { - let r = new v(t, e12); - return r[Ja] = t, r[Md] = e12, n && (r[_d] = n), r; -} -function Sd(e12) { - return e12[Ja]; -} -var $o; -function ec() { - return $o; -} -function z(e12) { - let t = $o; - return $o = e12, t; -} -function ai(e12, t, n) { - let r = Kn(e12); - if (r && r.providedIn == "root") - return r.value === void 0 ? r.value = r.factory() : r.value; - if (n & 8) - return null; - if (t !== void 0) - return t; - Xn(e12, ""); -} -var Nd = {}; -var We = Nd; -var xd = "__NG_DI_FLAG__"; -var Uo = class { - injector; - constructor(t) { - this.injector = t; - } - retrieve(t, n) { - let r = Ge(n) || 0; - try { - return this.injector.get(t, r & 8 ? null : We, r); - } catch (o) { - if (yt(o)) - return o; - throw o; - } - } -}; -function Ad(e12, t = 0) { - let n = Hn(); - if (n === void 0) - throw new v(-203, false); - if (n === null) - return ai(e12, void 0, t); - { - let r = Rd(t), o = n.retrieve(e12, r); - if (yt(o)) { - if (r.optional) - return null; - throw o; - } - return o; - } -} -function w(e12, t = 0) { - return (ec() || Ad)(W(e12), t); -} -function E(e12, t) { - return w(e12, Ge(t)); -} -function Ge(e12) { - return typeof e12 > "u" || typeof e12 == "number" ? e12 : 0 | (e12.optional && 8) | (e12.host && 1) | (e12.self && 2) | (e12.skipSelf && 4); -} -function Rd(e12) { - return { optional: !!(e12 & 8), host: !!(e12 & 1), self: !!(e12 & 2), skipSelf: !!(e12 & 4) }; -} -function zo(e12) { - let t = []; - for (let n = 0; n < e12.length; n++) { - let r = W(e12[n]); - if (Array.isArray(r)) { - if (r.length === 0) - throw new v(900, false); - let o, i = 0; - for (let s = 0; s < r.length; s++) { - let a = r[s], c = Od(a); - typeof c == "number" ? c === -1 ? o = a.token : i |= c : o = a; - } - t.push(w(o, i)); - } else - t.push(w(r)); - } - return t; -} -function Od(e12) { - return e12[xd]; -} -function Et(e12, t) { - let n = e12.hasOwnProperty(Bo); - return n ? e12[Bo] : null; -} -function tc(e12, t, n) { - if (e12.length !== t.length) - return false; - for (let r = 0; r < e12.length; r++) { - let o = e12[r], i = t[r]; - if (n && (o = n(o), i = n(i)), i !== o) - return false; - } - return true; -} -function nc(e12) { - return e12.flat(Number.POSITIVE_INFINITY); -} -function er(e12, t) { - e12.forEach((n) => Array.isArray(n) ? er(n, t) : t(n)); -} -function ci(e12, t, n) { - t >= e12.length ? e12.push(n) : e12.splice(t, 0, n); -} -function Qt(e12, t) { - return t >= e12.length - 1 ? e12.pop() : e12.splice(t, 1)[0]; -} -function rc(e12, t, n, r) { - let o = e12.length; - if (o == t) - e12.push(n, r); - else if (o === 1) - e12.push(r, e12[0]), e12[0] = n; - else { - for (o--, e12.push(e12[o - 1], e12[o]); o > t; ) { - let i = o - 2; - e12[o] = e12[i], o--; - } - e12[t] = n, e12[t + 1] = r; - } -} -function oc(e12, t, n) { - let r = It(e12, t); - return r >= 0 ? e12[r | 1] = n : (r = ~r, rc(e12, r, t, n)), r; -} -function tr(e12, t) { - let n = It(e12, t); - if (n >= 0) - return e12[n | 1]; -} -function It(e12, t) { - return kd(e12, t, 1); -} -function kd(e12, t, n) { - let r = 0, o = e12.length >> n; - for (; o !== r; ) { - let i = r + (o - r >> 1), s = e12[i << n]; - if (t === s) - return i << n; - s > t ? o = i : r = i + 1; - } - return ~(o << n); -} -var Ke = {}; -var Ne = []; -var Je = new D(""); -var li = new D("", -1); -var ui = new D(""); -var Wt = class { - get(t, n = We) { - if (n === We) { - let o = Xa("", -201); - throw o.name = "\u0275NotFound", o; - } - return n; - } -}; -function Dt(e12) { - return { \u0275providers: e12 }; -} -function ic(e12) { - return Dt([{ provide: Je, multi: true, useValue: e12 }]); -} -function sc(...e12) { - return { \u0275providers: di(true, e12), \u0275fromNgModule: true }; -} -function di(e12, ...t) { - let n = [], r = /* @__PURE__ */ new Set(), o, i = (s) => { - n.push(s); - }; - return er(t, (s) => { - let a = s; - $n(a, i, [], r) && (o ||= [], o.push(a)); - }), o !== void 0 && ac(o, i), n; -} -function ac(e12, t) { - for (let n = 0; n < e12.length; n++) { - let { ngModule: r, providers: o } = e12[n]; - fi(o, (i) => { - t(i, r); - }); - } -} -function $n(e12, t, n, r) { - if (e12 = W(e12), !e12) - return false; - let o = null, i = Vo(e12), s = !i && Ye(e12); - if (!i && !s) { - let c = e12.ngModule; - if (i = Vo(c), i) - o = c; - else - return false; - } else { - if (s && !s.standalone) - return false; - o = e12; - } - let a = r.has(o); - if (s) { - if (a) - return false; - if (r.add(o), s.dependencies) { - let c = typeof s.dependencies == "function" ? s.dependencies() : s.dependencies; - for (let l of c) - $n(l, t, n, r); - } - } else if (i) { - if (i.imports != null && !a) { - r.add(o); - let l; - er(i.imports, (u) => { - $n(u, t, n, r) && (l ||= [], l.push(u)); - }), l !== void 0 && ac(l, t); - } - if (!a) { - let l = Et(o) || (() => new o()); - t({ provide: o, useFactory: l, deps: Ne }, o), t({ provide: ui, useValue: o, multi: true }, o), t({ provide: Je, useValue: () => w(o), multi: true }, o); - } - let c = i.providers; - if (c != null && !a) { - let l = e12; - fi(c, (u) => { - t(u, l); - }); - } - } else - return false; - return o !== e12 && e12.providers !== void 0; -} -function fi(e12, t) { - for (let n of e12) - Xo(n) && (n = n.\u0275providers), Array.isArray(n) ? fi(n, t) : t(n); -} -var Pd = b({ provide: String, useValue: b }); -function cc(e12) { - return e12 !== null && typeof e12 == "object" && Pd in e12; -} -function Ld(e12) { - return !!(e12 && e12.useExisting); -} -function Fd(e12) { - return !!(e12 && e12.useFactory); -} -function Un(e12) { - return typeof e12 == "function"; -} -var Yt = new D(""); -var Vn = {}; -var qa = {}; -var Ho; -function Kt() { - return Ho === void 0 && (Ho = new Wt()), Ho; -} -var Q = class { -}; -var qe = class extends Q { - parent; - source; - scopes; - records = /* @__PURE__ */ new Map(); - _ngOnDestroyHooks = /* @__PURE__ */ new Set(); - _onDestroyHooks = []; - get destroyed() { - return this._destroyed; - } - _destroyed = false; - injectorDefTypes; - constructor(t, n, r, o) { - super(), this.parent = n, this.source = r, this.scopes = o, Go(t, (s) => this.processProvider(s)), this.records.set(li, vt(void 0, this)), o.has("environment") && this.records.set(Q, vt(void 0, this)); - let i = this.records.get(Yt); - i != null && typeof i.value == "string" && this.scopes.add(i.value), this.injectorDefTypes = new Set(this.get(ui, Ne, { self: true })); - } - retrieve(t, n) { - let r = Ge(n) || 0; - try { - return this.get(t, We, r); - } catch (o) { - if (yt(o)) - return o; - throw o; - } - } - destroy() { - zt(this), this._destroyed = true; - let t = g(null); - try { - for (let r of this._ngOnDestroyHooks) - r.ngOnDestroy(); - let n = this._onDestroyHooks; - this._onDestroyHooks = []; - for (let r of n) - r(); - } finally { - this.records.clear(), this._ngOnDestroyHooks.clear(), this.injectorDefTypes.clear(), g(t); - } - } - onDestroy(t) { - return zt(this), this._onDestroyHooks.push(t), () => this.removeOnDestroy(t); - } - runInContext(t) { - zt(this); - let n = ae(this), r = z(void 0), o; - try { - return t(); - } finally { - ae(n), z(r); - } - } - get(t, n = We, r) { - if (zt(this), t.hasOwnProperty(Ga)) - return t[Ga](this); - let o = Ge(r), i, s = ae(this), a = z(void 0); - try { - if (!(o & 4)) { - let l = this.records.get(t); - if (l === void 0) { - let u = $d(t) && Kn(t); - u && this.injectableDefInScope(u) ? l = vt(Wo(t), Vn) : l = null, this.records.set(t, l); - } - if (l != null) - return this.hydrate(t, l, o); - } - let c = o & 2 ? Kt() : this.parent; - return n = o & 8 && n === We ? null : n, c.get(t, n); - } catch (c) { - let l = Sd(c); - throw l === -200 || l === -201 ? new v(l, null) : c; - } finally { - z(a), ae(s); - } - } - resolveInjectorInitializers() { - let t = g(null), n = ae(this), r = z(void 0), o; - try { - let i = this.get(Je, Ne, { self: true }); - for (let s of i) - s(); - } finally { - ae(n), z(r), g(t); - } - } - toString() { - return "R3Injector[...]"; - } - processProvider(t) { - t = W(t); - let n = Un(t) ? t : W(t && t.provide), r = Hd(t); - if (!Un(t) && t.multi === true) { - let o = this.records.get(n); - o || (o = vt(void 0, Vn, true), o.factory = () => zo(o.multi), this.records.set(n, o)), n = t, o.multi.push(t); - } - this.records.set(n, r); - } - hydrate(t, n, r) { - let o = g(null); - try { - if (n.value === qa) - throw si(""); - return n.value === Vn && (n.value = qa, n.value = n.factory(void 0, r)), typeof n.value == "object" && n.value && Bd(n.value) && this._ngOnDestroyHooks.add(n.value), n.value; - } finally { - g(o); - } - } - injectableDefInScope(t) { - if (!t.providedIn) - return false; - let n = W(t.providedIn); - return typeof n == "string" ? n === "any" || this.scopes.has(n) : this.injectorDefTypes.has(n); - } - removeOnDestroy(t) { - let n = this._onDestroyHooks.indexOf(t); - n !== -1 && this._onDestroyHooks.splice(n, 1); - } -}; -function Wo(e12) { - let t = Kn(e12), n = t !== null ? t.factory : Et(e12); - if (n !== null) - return n; - if (e12 instanceof D) - throw new v(-204, false); - if (e12 instanceof Function) - return jd(e12); - throw new v(-204, false); -} -function jd(e12) { - if (e12.length > 0) - throw new v(-204, false); - let n = Td(e12); - return n !== null ? () => n.factory(e12) : () => new e12(); -} -function Hd(e12) { - if (cc(e12)) - return vt(void 0, e12.useValue); - { - let t = lc(e12); - return vt(t, Vn); - } -} -function lc(e12, t, n) { - let r; - if (Un(e12)) { - let o = W(e12); - return Et(o) || Wo(o); - } else if (cc(e12)) - r = () => W(e12.useValue); - else if (Fd(e12)) - r = () => e12.useFactory(...zo(e12.deps || [])); - else if (Ld(e12)) - r = (o, i) => w(W(e12.useExisting), i !== void 0 && i & 8 ? 8 : void 0); - else { - let o = W(e12 && (e12.useClass || e12.provide)); - if (Vd(e12)) - r = () => new o(...zo(e12.deps)); - else - return Et(o) || Wo(o); - } - return r; -} -function zt(e12) { - if (e12.destroyed) - throw new v(-205, false); -} -function vt(e12, t, n = false) { - return { factory: e12, value: t, multi: n ? [] : void 0 }; -} -function Vd(e12) { - return !!e12.deps; -} -function Bd(e12) { - return e12 !== null && typeof e12 == "object" && typeof e12.ngOnDestroy == "function"; -} -function $d(e12) { - return typeof e12 == "function" || typeof e12 == "object" && e12.ngMetadataName === "InjectionToken"; -} -function Go(e12, t) { - for (let n of e12) - Array.isArray(n) ? Go(n, t) : n && Xo(n) ? Go(n.\u0275providers, t) : t(n); -} -function nr(e12, t) { - let n; - e12 instanceof qe ? (zt(e12), n = e12) : n = new Uo(e12); - let r, o = ae(n), i = z(void 0); - try { - return t(); - } finally { - ae(o), z(i); - } -} -function uc() { - return ec() !== void 0 || Hn() != null; -} -var ne = 0; -var m = 1; -var y = 2; -var R = 3; -var K = 4; -var J = 5; -var wt = 6; -var Ct = 7; -var x = 8; -var De = 9; -var le = 10; -var O = 11; -var bt = 12; -var pi = 13; -var Xe = 14; -var X = 15; -var Oe = 16; -var et = 17; -var ue = 18; -var we = 19; -var hi = 20; -var Ee = 21; -var rr = 22; -var xe = 23; -var G = 24; -var or = 25; -var ke = 26; -var F = 27; -var dc = 1; -var gi = 6; -var Pe = 7; -var Jt = 8; -var tt = 9; -var S = 10; -function Le(e12) { - return Array.isArray(e12) && typeof e12[dc] == "object"; -} -function re(e12) { - return Array.isArray(e12) && e12[dc] === true; -} -function mi(e12) { - return (e12.flags & 4) !== 0; -} -function Tt(e12) { - return e12.componentOffset > -1; -} -function yi(e12) { - return (e12.flags & 1) === 1; -} -function Mt(e12) { - return !!e12.template; -} -function _t(e12) { - return (e12[y] & 512) !== 0; -} -function nt(e12) { - return (e12[y] & 256) === 256; -} -var fc = "svg"; -var pc = "math"; -function ee(e12) { - for (; Array.isArray(e12); ) - e12 = e12[ne]; - return e12; -} -function vi(e12, t) { - return ee(t[e12]); -} -function de(e12, t) { - return ee(t[e12.index]); -} -function ir(e12, t) { - return e12.data[t]; -} -function Ce(e12, t) { - let n = t[e12]; - return Le(n) ? n : n[ne]; -} -function hc(e12) { - return (e12[y] & 4) === 4; -} -function sr(e12) { - return (e12[y] & 128) === 128; -} -function gc(e12) { - return re(e12[R]); -} -function fe(e12, t) { - return t == null ? null : e12[t]; -} -function Ei(e12) { - e12[et] = 0; -} -function Ii(e12) { - e12[y] & 1024 || (e12[y] |= 1024, sr(e12) && St(e12)); -} -function mc(e12, t) { - for (; e12 > 0; ) - t = t[Xe], e12--; - return t; -} -function Xt(e12) { - return !!(e12[y] & 9216 || e12[G]?.dirty); -} -function ar(e12) { - e12[le].changeDetectionScheduler?.notify(8), e12[y] & 64 && (e12[y] |= 1024), Xt(e12) && St(e12); -} -function St(e12) { - e12[le].changeDetectionScheduler?.notify(0); - let t = Ae(e12); - for (; t !== null && !(t[y] & 8192 || (t[y] |= 8192, !sr(t))); ) - t = Ae(t); -} -function Di(e12, t) { - if (nt(e12)) - throw new v(911, false); - e12[Ee] === null && (e12[Ee] = []), e12[Ee].push(t); -} -function yc(e12, t) { - if (e12[Ee] === null) - return; - let n = e12[Ee].indexOf(t); - n !== -1 && e12[Ee].splice(n, 1); -} -function Ae(e12) { - let t = e12[R]; - return re(t) ? t[R] : t; -} -function wi(e12) { - return e12[Ct] ??= []; -} -function Ci(e12) { - return e12.cleanup ??= []; -} -function vc(e12, t, n, r) { - let o = wi(t); - o.push(n), e12.firstCreatePass && Ci(e12).push(r, o.length - 1); -} -var I = { lFrame: kc(null), bindingsEnabled: true, skipHydrationRootTNode: null }; -var qo = false; -function Ec() { - return I.lFrame.elementDepthCount; -} -function Ic() { - I.lFrame.elementDepthCount++; -} -function Dc() { - I.lFrame.elementDepthCount--; -} -function wc() { - return I.skipHydrationRootTNode !== null; -} -function Cc(e12) { - return I.skipHydrationRootTNode === e12; -} -function bc() { - I.skipHydrationRootTNode = null; -} -function M() { - return I.lFrame.lView; -} -function oe() { - return I.lFrame.tView; -} -function pe() { - let e12 = bi(); - for (; e12 !== null && e12.type === 64; ) - e12 = e12.parent; - return e12; -} -function bi() { - return I.lFrame.currentTNode; -} -function Tc() { - let e12 = I.lFrame, t = e12.currentTNode; - return e12.isParent ? t : t.parent; -} -function Nt(e12, t) { - let n = I.lFrame; - n.currentTNode = e12, n.isParent = t; -} -function Ti() { - return I.lFrame.isParent; -} -function Mc() { - I.lFrame.isParent = false; -} -function Mi() { - return qo; -} -function Gt(e12) { - let t = qo; - return qo = e12, t; -} -function _c(e12) { - return I.lFrame.bindingIndex = e12; -} -function en() { - return I.lFrame.bindingIndex++; -} -function Sc(e12) { - let t = I.lFrame, n = t.bindingIndex; - return t.bindingIndex = t.bindingIndex + e12, n; -} -function Nc() { - return I.lFrame.inI18n; -} -function xc(e12, t) { - let n = I.lFrame; - n.bindingIndex = n.bindingRootIndex = e12, cr(t); -} -function Ac() { - return I.lFrame.currentDirectiveIndex; -} -function cr(e12) { - I.lFrame.currentDirectiveIndex = e12; -} -function Rc(e12) { - let t = I.lFrame.currentDirectiveIndex; - return t === -1 ? null : e12[t]; -} -function _i() { - return I.lFrame.currentQueryIndex; -} -function lr(e12) { - I.lFrame.currentQueryIndex = e12; -} -function Ud(e12) { - let t = e12[m]; - return t.type === 2 ? t.declTNode : t.type === 1 ? e12[J] : null; -} -function Si(e12, t, n) { - if (n & 4) { - let o = t, i = e12; - for (; o = o.parent, o === null && !(n & 1); ) - if (o = Ud(i), o === null || (i = i[Xe], o.type & 10)) - break; - if (o === null) - return false; - t = o, e12 = i; - } - let r = I.lFrame = Oc(); - return r.currentTNode = t, r.lView = e12, true; -} -function ur(e12) { - let t = Oc(), n = e12[m]; - I.lFrame = t, t.currentTNode = n.firstChild, t.lView = e12, t.tView = n, t.contextLView = e12, t.bindingIndex = n.bindingStartIndex, t.inI18n = false; -} -function Oc() { - let e12 = I.lFrame, t = e12 === null ? null : e12.child; - return t === null ? kc(e12) : t; -} -function kc(e12) { - let t = { currentTNode: null, isParent: true, lView: null, tView: null, selectedIndex: -1, contextLView: null, elementDepthCount: 0, currentNamespace: null, currentDirectiveIndex: -1, bindingRootIndex: -1, bindingIndex: -1, currentQueryIndex: 0, parent: e12, child: null, inI18n: false }; - return e12 !== null && (e12.child = t), t; -} -function Pc() { - let e12 = I.lFrame; - return I.lFrame = e12.parent, e12.currentTNode = null, e12.lView = null, e12; -} -var Ni = Pc; -function dr() { - let e12 = Pc(); - e12.isParent = true, e12.tView = null, e12.selectedIndex = -1, e12.contextLView = null, e12.elementDepthCount = 0, e12.currentDirectiveIndex = -1, e12.currentNamespace = null, e12.bindingRootIndex = -1, e12.bindingIndex = -1, e12.currentQueryIndex = 0; -} -function Lc(e12) { - return (I.lFrame.contextLView = mc(e12, I.lFrame.contextLView))[x]; -} -function Fe() { - return I.lFrame.selectedIndex; -} -function je(e12) { - I.lFrame.selectedIndex = e12; -} -function Fc() { - let e12 = I.lFrame; - return ir(e12.tView, e12.selectedIndex); -} -function jc() { - return I.lFrame.currentNamespace; -} -var Hc = true; -function fr() { - return Hc; -} -function pr(e12) { - Hc = e12; -} -function Zo(e12, t = null, n = null, r) { - let o = Vc(e12, t, n, r); - return o.resolveInjectorInitializers(), o; -} -function Vc(e12, t = null, n = null, r, o = /* @__PURE__ */ new Set()) { - let i = [n || Ne, sc(e12)], s; - return new qe(i, t || Kt(), s || null, o); -} -var ce = class e2 { - static THROW_IF_NOT_FOUND = We; - static NULL = new Wt(); - static create(t, n) { - if (Array.isArray(t)) - return Zo({ name: "" }, n, t, ""); - { - let r = t.name ?? ""; - return Zo({ name: r }, t.parent, t.providers, r); - } - } - static \u0275prov = _({ token: e2, providedIn: "any", factory: () => w(li) }); - static __NG_ELEMENT_ID__ = -1; -}; -var U = new D(""); -var xt = /* @__PURE__ */ (() => { - class e12 { - static __NG_ELEMENT_ID__ = zd; - static __NG_ENV_ID__ = (n) => n; - } - return e12; -})(); -var zn = class extends xt { - _lView; - constructor(t) { - super(), this._lView = t; - } - get destroyed() { - return nt(this._lView); - } - onDestroy(t) { - let n = this._lView; - return Di(n, t), () => yc(n, t); - } -}; -function zd() { - return new zn(M()); -} -var Bc = false; -var $c = new D(""); -var At = (() => { - class e12 { - taskId = 0; - pendingTasks = /* @__PURE__ */ new Set(); - destroyed = false; - pendingTask = new Ut(false); - debugTaskTracker = E($c, { optional: true }); - get hasPendingTasks() { - return this.destroyed ? false : this.pendingTask.value; - } - get hasPendingTasksObservable() { - return this.destroyed ? new mt((n) => { - n.next(false), n.complete(); - }) : this.pendingTask; - } - add() { - !this.hasPendingTasks && !this.destroyed && this.pendingTask.next(true); - let n = this.taskId++; - return this.pendingTasks.add(n), this.debugTaskTracker?.add(n), n; - } - has(n) { - return this.pendingTasks.has(n); - } - remove(n) { - this.pendingTasks.delete(n), this.debugTaskTracker?.remove(n), this.pendingTasks.size === 0 && this.hasPendingTasks && this.pendingTask.next(false); - } - ngOnDestroy() { - this.pendingTasks.clear(), this.hasPendingTasks && this.pendingTask.next(false), this.destroyed = true, this.pendingTask.unsubscribe(); - } - static \u0275prov = _({ token: e12, providedIn: "root", factory: () => new e12() }); - } - return e12; -})(); -var Qo = class extends ye { - __isAsync; - destroyRef = void 0; - pendingTasks = void 0; - constructor(t = false) { - super(), this.__isAsync = t, uc() && (this.destroyRef = E(xt, { optional: true }) ?? void 0, this.pendingTasks = E(At, { optional: true }) ?? void 0); - } - emit(t) { - let n = g(null); - try { - super.next(t); - } finally { - g(n); - } - } - subscribe(t, n, r) { - let o = t, i = n || (() => null), s = r; - if (t && typeof t == "object") { - let c = t; - o = c.next?.bind(c), i = c.error?.bind(c), s = c.complete?.bind(c); - } - this.__isAsync && (i = this.wrapInTimeout(i), o && (o = this.wrapInTimeout(o)), s && (s = this.wrapInTimeout(s))); - let a = super.subscribe({ next: o, error: i, complete: s }); - return t instanceof H && t.add(a), a; - } - wrapInTimeout(t) { - return (n) => { - let r = this.pendingTasks?.add(); - setTimeout(() => { - try { - t(n); - } finally { - r !== void 0 && this.pendingTasks?.remove(r); - } - }); - }; - } -}; -var ve = Qo; -function Wn(...e12) { -} -function xi(e12) { - let t, n; - function r() { - e12 = Wn; - try { - n !== void 0 && typeof cancelAnimationFrame == "function" && cancelAnimationFrame(n), t !== void 0 && clearTimeout(t); - } catch { - } - } - return t = setTimeout(() => { - e12(), r(); - }), typeof requestAnimationFrame == "function" && (n = requestAnimationFrame(() => { - e12(), r(); - })), () => r(); -} -function Uc(e12) { - return queueMicrotask(() => e12()), () => { - e12 = Wn; - }; -} -var Ai = "isAngularZone"; -var qt = Ai + "_ID"; -var Wd = 0; -var Y = class e3 { - hasPendingMacrotasks = false; - hasPendingMicrotasks = false; - isStable = true; - onUnstable = new ve(false); - onMicrotaskEmpty = new ve(false); - onStable = new ve(false); - onError = new ve(false); - constructor(t) { - let { enableLongStackTrace: n = false, shouldCoalesceEventChangeDetection: r = false, shouldCoalesceRunChangeDetection: o = false, scheduleInRootZone: i = Bc } = t; - if (typeof Zone > "u") - throw new v(908, false); - Zone.assertZonePatched(); - let s = this; - s._nesting = 0, s._outer = s._inner = Zone.current, Zone.TaskTrackingZoneSpec && (s._inner = s._inner.fork(new Zone.TaskTrackingZoneSpec())), n && Zone.longStackTraceZoneSpec && (s._inner = s._inner.fork(Zone.longStackTraceZoneSpec)), s.shouldCoalesceEventChangeDetection = !o && r, s.shouldCoalesceRunChangeDetection = o, s.callbackScheduled = false, s.scheduleInRootZone = i, Zd(s); - } - static isInAngularZone() { - return typeof Zone < "u" && Zone.current.get(Ai) === true; - } - static assertInAngularZone() { - if (!e3.isInAngularZone()) - throw new v(909, false); - } - static assertNotInAngularZone() { - if (e3.isInAngularZone()) - throw new v(909, false); - } - run(t, n, r) { - return this._inner.run(t, n, r); - } - runTask(t, n, r, o) { - let i = this._inner, s = i.scheduleEventTask("NgZoneEvent: " + o, t, Gd, Wn, Wn); - try { - return i.runTask(s, n, r); - } finally { - i.cancelTask(s); - } - } - runGuarded(t, n, r) { - return this._inner.runGuarded(t, n, r); - } - runOutsideAngular(t) { - return this._outer.run(t); - } -}; -var Gd = {}; -function Ri(e12) { - if (e12._nesting == 0 && !e12.hasPendingMicrotasks && !e12.isStable) - try { - e12._nesting++, e12.onMicrotaskEmpty.emit(null); - } finally { - if (e12._nesting--, !e12.hasPendingMicrotasks) - try { - e12.runOutsideAngular(() => e12.onStable.emit(null)); - } finally { - e12.isStable = true; - } - } -} -function qd(e12) { - if (e12.isCheckStableRunning || e12.callbackScheduled) - return; - e12.callbackScheduled = true; - function t() { - xi(() => { - e12.callbackScheduled = false, Yo(e12), e12.isCheckStableRunning = true, Ri(e12), e12.isCheckStableRunning = false; - }); - } - e12.scheduleInRootZone ? Zone.root.run(() => { - t(); - }) : e12._outer.run(() => { - t(); - }), Yo(e12); -} -function Zd(e12) { - let t = () => { - qd(e12); - }, n = Wd++; - e12._inner = e12._inner.fork({ name: "angular", properties: { [Ai]: true, [qt]: n, [qt + n]: true }, onInvokeTask: (r, o, i, s, a, c) => { - if (Qd(c)) - return r.invokeTask(i, s, a, c); - try { - return Za(e12), r.invokeTask(i, s, a, c); - } finally { - (e12.shouldCoalesceEventChangeDetection && s.type === "eventTask" || e12.shouldCoalesceRunChangeDetection) && t(), Qa(e12); - } - }, onInvoke: (r, o, i, s, a, c, l) => { - try { - return Za(e12), r.invoke(i, s, a, c, l); - } finally { - e12.shouldCoalesceRunChangeDetection && !e12.callbackScheduled && !Yd(c) && t(), Qa(e12); - } - }, onHasTask: (r, o, i, s) => { - r.hasTask(i, s), o === i && (s.change == "microTask" ? (e12._hasPendingMicrotasks = s.microTask, Yo(e12), Ri(e12)) : s.change == "macroTask" && (e12.hasPendingMacrotasks = s.macroTask)); - }, onHandleError: (r, o, i, s) => (r.handleError(i, s), e12.runOutsideAngular(() => e12.onError.emit(s)), false) }); -} -function Yo(e12) { - e12._hasPendingMicrotasks || (e12.shouldCoalesceEventChangeDetection || e12.shouldCoalesceRunChangeDetection) && e12.callbackScheduled === true ? e12.hasPendingMicrotasks = true : e12.hasPendingMicrotasks = false; -} -function Za(e12) { - e12._nesting++, e12.isStable && (e12.isStable = false, e12.onUnstable.emit(null)); -} -function Qa(e12) { - e12._nesting--, Ri(e12); -} -var Zt = class { - hasPendingMicrotasks = false; - hasPendingMacrotasks = false; - isStable = true; - onUnstable = new ve(); - onMicrotaskEmpty = new ve(); - onStable = new ve(); - onError = new ve(); - run(t, n, r) { - return t.apply(n, r); - } - runGuarded(t, n, r) { - return t.apply(n, r); - } - runOutsideAngular(t) { - return t(); - } - runTask(t, n, r, o) { - return t.apply(n, r); - } -}; -function Qd(e12) { - return zc(e12, "__ignore_ng_zone__"); -} -function Yd(e12) { - return zc(e12, "__scheduler_tick__"); -} -function zc(e12, t) { - return !Array.isArray(e12) || e12.length !== 1 ? false : e12[0]?.data?.[t] === true; -} -var Ie = class { - _console = console; - handleError(t) { - this._console.error("ERROR", t); - } -}; -var rt = new D("", { factory: () => { - let e12 = E(Y), t = E(Q), n; - return (r) => { - e12.runOutsideAngular(() => { - t.destroyed && !n ? setTimeout(() => { - throw r; - }) : (n ??= t.get(Ie), n.handleError(r)); - }); - }; -} }); -var Wc = { provide: Je, useValue: () => { - let e12 = E(Ie, { optional: true }); -}, multi: true }; -var Kd = new D("", { factory: () => { - let e12 = E(U).defaultView; - if (!e12) - return; - let t = E(rt), n = (i) => { - t(i.reason), i.preventDefault(); - }, r = (i) => { - i.error ? t(i.error) : t(new Error(i.message, { cause: i })), i.preventDefault(); - }, o = () => { - e12.addEventListener("unhandledrejection", n), e12.addEventListener("error", r); - }; - typeof Zone < "u" ? Zone.root.run(o) : o(), E(xt).onDestroy(() => { - e12.removeEventListener("error", r), e12.removeEventListener("unhandledrejection", n); - }); -} }); -function Oi() { - return Dt([ic(() => { - E(Kd); - })]); -} -function q(e12, t) { - let [n, r, o] = Mo(e12, t?.equal), i = n, s = i[Z]; - return i.set = r, i.update = o, i.asReadonly = Gc.bind(i), i; -} -function Gc() { - let e12 = this[Z]; - if (e12.readonlyFn === void 0) { - let t = () => this(); - t[Z] = e12, e12.readonlyFn = t; - } - return e12.readonlyFn; -} -var hr = /* @__PURE__ */ (() => { - class e12 { - view; - node; - constructor(n, r) { - this.view = n, this.node = r; - } - static __NG_ELEMENT_ID__ = Jd; - } - return e12; -})(); -function Jd() { - return new hr(M(), pe()); -} -var Ze = class { -}; -var tn = new D("", { factory: () => true }); -var ki = new D(""); -var gr = (() => { - class e12 { - static \u0275prov = _({ token: e12, providedIn: "root", factory: () => new Ko() }); - } - return e12; -})(); -var Ko = class { - dirtyEffectCount = 0; - queues = /* @__PURE__ */ new Map(); - add(t) { - this.enqueue(t), this.schedule(t); - } - schedule(t) { - t.dirty && this.dirtyEffectCount++; - } - remove(t) { - let n = t.zone, r = this.queues.get(n); - r.has(t) && (r.delete(t), t.dirty && this.dirtyEffectCount--); - } - enqueue(t) { - let n = t.zone; - this.queues.has(n) || this.queues.set(n, /* @__PURE__ */ new Set()); - let r = this.queues.get(n); - r.has(t) || r.add(t); - } - flush() { - for (; this.dirtyEffectCount > 0; ) { - let t = false; - for (let [n, r] of this.queues) - n === null ? t ||= this.flushQueue(r) : t ||= n.run(() => this.flushQueue(r)); - t || (this.dirtyEffectCount = 0); - } - } - flushQueue(t) { - let n = false; - for (let r of t) - r.dirty && (this.dirtyEffectCount--, n = true, r.run()); - return n; - } -}; -var Gn = class { - [Z]; - constructor(t) { - this[Z] = t; - } - destroy() { - this[Z].destroy(); - } -}; -function Pi(e12, t) { - let n = t?.injector ?? E(ce), r = t?.manualCleanup !== true ? n.get(xt) : null, o, i = n.get(hr, null, { optional: true }), s = n.get(Ze); - return i !== null ? (o = tf(i.view, s, e12), r instanceof zn && r._lView === i.view && (r = null)) : o = nf(e12, n.get(gr), s), o.injector = n, r !== null && (o.onDestroyFns = [r.onDestroy(() => o.destroy())]), new Gn(o); -} -var qc = A(N({}, So), { cleanupFns: void 0, zone: null, onDestroyFns: null, run() { - let e12 = Gt(false); - try { - No(this); - } finally { - Gt(e12); - } -}, cleanup() { - if (!this.cleanupFns?.length) - return; - let e12 = g(null); - try { - for (; this.cleanupFns.length; ) - this.cleanupFns.pop()(); - } finally { - this.cleanupFns = [], g(e12); - } -} }); -var Xd = A(N({}, qc), { consumerMarkedDirty() { - this.scheduler.schedule(this), this.notifier.notify(12); -}, destroy() { - if (dt(this), this.onDestroyFns !== null) - for (let e12 of this.onDestroyFns) - e12(); - this.cleanup(), this.scheduler.remove(this); -} }); -var ef = A(N({}, qc), { consumerMarkedDirty() { - this.view[y] |= 8192, St(this.view), this.notifier.notify(13); -}, destroy() { - if (dt(this), this.onDestroyFns !== null) - for (let e12 of this.onDestroyFns) - e12(); - this.cleanup(), this.view[xe]?.delete(this); -} }); -function tf(e12, t, n) { - let r = Object.create(ef); - return r.view = e12, r.zone = typeof Zone < "u" ? Zone.current : null, r.notifier = t, r.fn = Zc(r, n), e12[xe] ??= /* @__PURE__ */ new Set(), e12[xe].add(r), r.consumerMarkedDirty(r), r; -} -function nf(e12, t, n) { - let r = Object.create(Xd); - return r.fn = Zc(r, e12), r.scheduler = t, r.notifier = n, r.zone = typeof Zone < "u" ? Zone.current : null, r.scheduler.add(r), r.notifier.notify(12), r; -} -function Zc(e12, t) { - return () => { - t((n) => (e12.cleanupFns ??= []).push(n)); - }; -} -function Tl(e12) { - return { toString: e12 }.toString(); -} -function vf(e12) { - return typeof e12 == "function"; -} -function Ml(e12, t, n, r) { - t !== null ? t.applyValueToInputSignal(t, r) : e12[n] = r; -} -var br = class { - previousValue; - currentValue; - firstChange; - constructor(t, n, r) { - this.previousValue = t, this.currentValue = n, this.firstChange = r; - } - isFirstChange() { - return this.firstChange; - } -}; -function Ef(e12) { - return e12.type.prototype.ngOnChanges && (e12.setInput = Df), If; -} -function If() { - let e12 = Sl(this), t = e12?.current; - if (t) { - let n = e12.previous; - if (n === Ke) - e12.previous = t; - else - for (let r in t) - n[r] = t[r]; - e12.current = null, this.ngOnChanges(t); - } -} -function Df(e12, t, n, r, o) { - let i = this.declaredInputs[r], s = Sl(e12) || wf(e12, { previous: Ke, current: null }), a = s.current || (s.current = {}), c = s.previous, l = c[i]; - a[i] = new br(l && l.currentValue, n, c === Ke), Ml(e12, t, o, n); -} -var _l = "__ngSimpleChanges__"; -function Sl(e12) { - return e12[_l] || null; -} -function wf(e12, t) { - return e12[_l] = t; -} -var Qc = []; -var T = function(e12, t = null, n) { - for (let r = 0; r < Qc.length; r++) { - let o = Qc[r]; - o(e12, t, n); - } -}; -var C = function(e12) { - return e12[e12.TemplateCreateStart = 0] = "TemplateCreateStart", e12[e12.TemplateCreateEnd = 1] = "TemplateCreateEnd", e12[e12.TemplateUpdateStart = 2] = "TemplateUpdateStart", e12[e12.TemplateUpdateEnd = 3] = "TemplateUpdateEnd", e12[e12.LifecycleHookStart = 4] = "LifecycleHookStart", e12[e12.LifecycleHookEnd = 5] = "LifecycleHookEnd", e12[e12.OutputStart = 6] = "OutputStart", e12[e12.OutputEnd = 7] = "OutputEnd", e12[e12.BootstrapApplicationStart = 8] = "BootstrapApplicationStart", e12[e12.BootstrapApplicationEnd = 9] = "BootstrapApplicationEnd", e12[e12.BootstrapComponentStart = 10] = "BootstrapComponentStart", e12[e12.BootstrapComponentEnd = 11] = "BootstrapComponentEnd", e12[e12.ChangeDetectionStart = 12] = "ChangeDetectionStart", e12[e12.ChangeDetectionEnd = 13] = "ChangeDetectionEnd", e12[e12.ChangeDetectionSyncStart = 14] = "ChangeDetectionSyncStart", e12[e12.ChangeDetectionSyncEnd = 15] = "ChangeDetectionSyncEnd", e12[e12.AfterRenderHooksStart = 16] = "AfterRenderHooksStart", e12[e12.AfterRenderHooksEnd = 17] = "AfterRenderHooksEnd", e12[e12.ComponentStart = 18] = "ComponentStart", e12[e12.ComponentEnd = 19] = "ComponentEnd", e12[e12.DeferBlockStateStart = 20] = "DeferBlockStateStart", e12[e12.DeferBlockStateEnd = 21] = "DeferBlockStateEnd", e12[e12.DynamicComponentStart = 22] = "DynamicComponentStart", e12[e12.DynamicComponentEnd = 23] = "DynamicComponentEnd", e12[e12.HostBindingsUpdateStart = 24] = "HostBindingsUpdateStart", e12[e12.HostBindingsUpdateEnd = 25] = "HostBindingsUpdateEnd", e12; -}(C || {}); -function Cf(e12, t, n) { - let { ngOnChanges: r, ngOnInit: o, ngDoCheck: i } = t.type.prototype; - if (r) { - let s = Ef(t); - (n.preOrderHooks ??= []).push(e12, s), (n.preOrderCheckHooks ??= []).push(e12, s); - } - o && (n.preOrderHooks ??= []).push(0 - e12, o), i && ((n.preOrderHooks ??= []).push(e12, i), (n.preOrderCheckHooks ??= []).push(e12, i)); -} -function bf(e12, t) { - for (let n = t.directiveStart, r = t.directiveEnd; n < r; n++) { - let i = e12.data[n].type.prototype, { ngAfterContentInit: s, ngAfterContentChecked: a, ngAfterViewInit: c, ngAfterViewChecked: l, ngOnDestroy: u } = i; - s && (e12.contentHooks ??= []).push(-n, s), a && ((e12.contentHooks ??= []).push(n, a), (e12.contentCheckHooks ??= []).push(n, a)), c && (e12.viewHooks ??= []).push(-n, c), l && ((e12.viewHooks ??= []).push(n, l), (e12.viewCheckHooks ??= []).push(n, l)), u != null && (e12.destroyHooks ??= []).push(n, u); - } -} -function Ir(e12, t, n) { - Nl(e12, t, 3, n); -} -function Dr(e12, t, n, r) { - (e12[y] & 3) === n && Nl(e12, t, n, r); -} -function Li(e12, t) { - let n = e12[y]; - (n & 3) === t && (n &= 16383, n += 1, e12[y] = n); -} -function Nl(e12, t, n, r) { - let o = r !== void 0 ? e12[et] & 65535 : 0, i = r ?? -1, s = t.length - 1, a = 0; - for (let c = o; c < s; c++) - if (typeof t[c + 1] == "number") { - if (a = t[c], r != null && a >= r) - break; - } else - t[c] < 0 && (e12[et] += 65536), (a < i || i == -1) && (Tf(e12, n, t, c), e12[et] = (e12[et] & 4294901760) + c + 2), c++; -} -function Yc(e12, t) { - T(C.LifecycleHookStart, e12, t); - let n = g(null); - try { - t.call(e12); - } finally { - g(n), T(C.LifecycleHookEnd, e12, t); - } -} -function Tf(e12, t, n, r) { - let o = n[r] < 0, i = n[r + 1], s = o ? -n[r] : n[r], a = e12[s]; - o ? e12[y] >> 14 < e12[et] >> 16 && (e12[y] & 3) === t && (e12[y] += 16384, Yc(a, i)) : Yc(a, i); -} -var Ot = -1; -var sn = class { - factory; - name; - injectImpl; - resolving = false; - canSeeViewProviders; - multi; - componentProviders; - index; - providerFactory; - constructor(t, n, r, o) { - this.factory = t, this.name = o, this.canSeeViewProviders = n, this.injectImpl = r; - } -}; -function Mf(e12, t, n) { - let r = 0; - for (; r < n.length; ) { - let o = n[r]; - if (typeof o == "number") { - if (o !== 0) - break; - r++; - let i = n[r++], s = n[r++], a = n[r++]; - e12.setAttribute(t, s, a, i); - } else { - let i = o, s = n[++r]; - _f(i) ? e12.setProperty(t, i, s) : e12.setAttribute(t, i, s), r++; - } - } - return r; -} -function _f(e12) { - return e12.charCodeAt(0) === 64; -} -function Fr(e12, t) { - if (!(t === null || t.length === 0)) - if (e12 === null || e12.length === 0) - e12 = t.slice(); - else { - let n = -1; - for (let r = 0; r < t.length; r++) { - let o = t[r]; - typeof o == "number" ? n = o : n === 0 || (n === -1 || n === 2 ? Kc(e12, n, o, null, t[++r]) : Kc(e12, n, o, null, null)); - } - } - return e12; -} -function Kc(e12, t, n, r, o) { - let i = 0, s = e12.length; - if (t === -1) - s = -1; - else - for (; i < e12.length; ) { - let a = e12[i++]; - if (typeof a == "number") { - if (a === t) { - s = -1; - break; - } else if (a > t) { - s = i - 1; - break; - } - } - } - for (; i < e12.length; ) { - let a = e12[i]; - if (typeof a == "number") - break; - if (a === n) { - o !== null && (e12[i + 1] = o); - return; - } - i++, o !== null && i++; - } - s !== -1 && (e12.splice(s, 0, t), i = s + 1), e12.splice(i++, 0, n), o !== null && e12.splice(i++, 0, o); -} -function xl(e12) { - return e12 !== Ot; -} -function Tr(e12) { - return e12 & 32767; -} -function Sf(e12) { - return e12 >> 16; -} -function Mr(e12, t) { - let n = Sf(e12), r = t; - for (; n > 0; ) - r = r[Xe], n--; - return r; -} -var Ui = true; -function Jc(e12) { - let t = Ui; - return Ui = e12, t; -} -var Nf = 256; -var Al = Nf - 1; -var Rl = 5; -var xf = 0; -var he = {}; -function Af(e12, t, n) { - let r; - typeof n == "string" ? r = n.charCodeAt(0) || 0 : n.hasOwnProperty(Qe) && (r = n[Qe]), r == null && (r = n[Qe] = xf++); - let o = r & Al, i = 1 << o; - t.data[e12 + (o >> Rl)] |= i; -} -function Ol(e12, t) { - let n = kl(e12, t); - if (n !== -1) - return n; - let r = t[m]; - r.firstCreatePass && (e12.injectorIndex = t.length, Fi(r.data, e12), Fi(t, null), Fi(r.blueprint, null)); - let o = _s(e12, t), i = e12.injectorIndex; - if (xl(o)) { - let s = Tr(o), a = Mr(o, t), c = a[m].data; - for (let l = 0; l < 8; l++) - t[i + l] = a[s + l] | c[s + l]; - } - return t[i + 8] = o, i; -} -function Fi(e12, t) { - e12.push(0, 0, 0, 0, 0, 0, 0, 0, t); -} -function kl(e12, t) { - return e12.injectorIndex === -1 || e12.parent && e12.parent.injectorIndex === e12.injectorIndex || t[e12.injectorIndex + 8] === null ? -1 : e12.injectorIndex; -} -function _s(e12, t) { - if (e12.parent && e12.parent.injectorIndex !== -1) - return e12.parent.injectorIndex; - let n = 0, r = null, o = t; - for (; o !== null; ) { - if (r = Hl(o), r === null) - return Ot; - if (n++, o = o[Xe], r.injectorIndex !== -1) - return r.injectorIndex | n << 16; - } - return Ot; -} -function Rf(e12, t, n) { - Af(e12, t, n); -} -function Pl(e12, t, n) { - if (n & 8 || e12 !== void 0) - return e12; - Xn(t, "NodeInjector"); -} -function Ll(e12, t, n, r) { - if (n & 8 && r === void 0 && (r = null), (n & 3) === 0) { - let o = e12[De], i = z(void 0); - try { - return o ? o.get(t, r, n & 8) : ai(t, r, n & 8); - } finally { - z(i); - } - } - return Pl(r, t, n); -} -function Fl(e12, t, n, r = 0, o) { - if (e12 !== null) { - if (t[y] & 2048 && !(r & 2)) { - let s = Lf(e12, t, n, r, he); - if (s !== he) - return s; - } - let i = jl(e12, t, n, r, he); - if (i !== he) - return i; - } - return Ll(t, n, r, o); -} -function jl(e12, t, n, r, o) { - let i = kf(n); - if (typeof i == "function") { - if (!Si(t, e12, r)) - return r & 1 ? Pl(o, n, r) : Ll(t, n, r, o); - try { - let s; - if (s = i(r), s == null && !(r & 8)) - Xn(n); - else - return s; - } finally { - Ni(); - } - } else if (typeof i == "number") { - let s = null, a = kl(e12, t), c = Ot, l = r & 1 ? t[X][J] : null; - for ((a === -1 || r & 4) && (c = a === -1 ? _s(e12, t) : t[a + 8], c === Ot || !el(r, false) ? a = -1 : (s = t[m], a = Tr(c), t = Mr(c, t))); a !== -1; ) { - let u = t[m]; - if (Xc(i, a, u.data)) { - let d = Of(a, t, n, s, r, l); - if (d !== he) - return d; - } - c = t[a + 8], c !== Ot && el(r, t[m].data[a + 8] === l) && Xc(i, a, t) ? (s = u, a = Tr(c), t = Mr(c, t)) : a = -1; - } - } - return o; -} -function Of(e12, t, n, r, o, i) { - let s = t[m], a = s.data[e12 + 8], c = r == null ? Tt(a) && Ui : r != s && (a.type & 3) !== 0, l = o & 1 && i === a, u = wr(a, s, n, c, l); - return u !== null ? _r(t, s, u, a, o) : he; -} -function wr(e12, t, n, r, o) { - let i = e12.providerIndexes, s = t.data, a = i & 1048575, c = e12.directiveStart, l = e12.directiveEnd, u = i >> 20, d = r ? a : a + u, f = o ? a + u : l; - for (let p = d; p < f; p++) { - let h = s[p]; - if (p < c && n === h || p >= c && h.type === n) - return p; - } - if (o) { - let p = s[c]; - if (p && Mt(p) && p.type === n) - return c; - } - return null; -} -function _r(e12, t, n, r, o) { - let i = e12[n], s = t.data; - if (i instanceof sn) { - let a = i; - if (a.resolving) - throw si(""); - let c = Jc(a.canSeeViewProviders); - a.resolving = true; - let l = s[n].type || s[n], u, d = a.injectImpl ? z(a.injectImpl) : null, f = Si(e12, r, 0); - try { - i = e12[n] = a.factory(void 0, o, s, e12, r), t.firstCreatePass && n >= r.directiveStart && Cf(n, s[n], t); - } finally { - d !== null && z(d), Jc(c), a.resolving = false, Ni(); - } - } - return i; -} -function kf(e12) { - if (typeof e12 == "string") - return e12.charCodeAt(0) || 0; - let t = e12.hasOwnProperty(Qe) ? e12[Qe] : void 0; - return typeof t == "number" ? t >= 0 ? t & Al : Pf : t; -} -function Xc(e12, t, n) { - let r = 1 << e12; - return !!(n[t + (e12 >> Rl)] & r); -} -function el(e12, t) { - return !(e12 & 2) && !(e12 & 1 && t); -} -var ot = class { - _tNode; - _lView; - constructor(t, n) { - this._tNode = t, this._lView = n; - } - get(t, n, r) { - return Fl(this._tNode, this._lView, t, Ge(r), n); - } -}; -function Pf() { - return new ot(pe(), M()); -} -function Lf(e12, t, n, r, o) { - let i = e12, s = t; - for (; i !== null && s !== null && s[y] & 2048 && !_t(s); ) { - let a = jl(i, s, n, r | 2, he); - if (a !== he) - return a; - let c = i.parent; - if (!c) { - let l = s[hi]; - if (l) { - let u = l.get(n, he, r & -5); - if (u !== he) - return u; - } - c = Hl(s), s = s[Xe]; - } - i = c; - } - return o; -} -function Hl(e12) { - let t = e12[m], n = t.type; - return n === 2 ? t.declTNode : n === 1 ? e12[J] : null; -} -function Ff() { - return Ft(pe(), M()); -} -function Ft(e12, t) { - return new hn(de(e12, t)); -} -var hn = /* @__PURE__ */ (() => { - class e12 { - nativeElement; - constructor(n) { - this.nativeElement = n; - } - static __NG_ELEMENT_ID__ = Ff; - } - return e12; -})(); -function jf(e12) { - return e12 instanceof hn ? e12.nativeElement : e12; -} -function Hf() { - return this._results[Symbol.iterator](); -} -var Sr = class { - _emitDistinctChangesOnly; - dirty = true; - _onDirty = void 0; - _results = []; - _changesDetected = false; - _changes = void 0; - length = 0; - first = void 0; - last = void 0; - get changes() { - return this._changes ??= new ye(); - } - constructor(t = false) { - 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 = false; - let r = nc(t); - (this._changesDetected = !tc(this._results, r, n)) && (this._results = r, this.length = r.length, this.last = r[this.length - 1], this.first = r[0]); - } - notifyOnChanges() { - this._changes !== void 0 && (this._changesDetected || !this._emitDistinctChangesOnly) && this._changes.next(this); - } - onDirty(t) { - this._onDirty = t; - } - setDirty() { - this.dirty = true, this._onDirty?.(); - } - destroy() { - this._changes !== void 0 && (this._changes.complete(), this._changes.unsubscribe()); - } - [Symbol.iterator] = Hf; -}; -function Vl(e12) { - return (e12.flags & 128) === 128; -} -var Ss = function(e12) { - return e12[e12.OnPush = 0] = "OnPush", e12[e12.Eager = 1] = "Eager", e12[e12.Default = 1] = "Default", e12; -}(Ss || {}); -var Bl = /* @__PURE__ */ new Map(); -var Vf = 0; -function Bf() { - return Vf++; -} -function $f(e12) { - Bl.set(e12[we], e12); -} -function zi(e12) { - Bl.delete(e12[we]); -} -var tl = "__ngContext__"; -function kt(e12, t) { - Le(t) ? (e12[tl] = t[we], $f(t)) : e12[tl] = t; -} -function $l(e12) { - return zl(e12[bt]); -} -function Ul(e12) { - return zl(e12[K]); -} -function zl(e12) { - for (; e12 !== null && !re(e12); ) - e12 = e12[K]; - return e12; -} -var Wi; -function Ns(e12) { - Wi = e12; -} -function Wl() { - if (Wi !== void 0) - return Wi; - if (typeof document < "u") - return document; - throw new v(210, false); -} -var jr = new D("", { factory: () => Uf }); -var Uf = "ng"; -var Hr = new D(""); -var gn = new D("", { providedIn: "platform", factory: () => "unknown" }); -var Vr = new D("", { factory: () => E(U).body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce") || null }); -var Gl = "r"; -var ql = "di"; -var Zl = false; -var Ql = new D("", { factory: () => Zl }); -var nl = /* @__PURE__ */ new WeakMap(); -function zf(e12, t) { - if (e12 == null || typeof e12 != "object") - return; - let n = nl.get(e12); - n || (n = /* @__PURE__ */ new WeakSet(), nl.set(e12, n)), n.add(t); -} -var Wf = (e12, t, n, r) => { -}; -function Gf(e12, t, n, r) { - Wf(e12, t, n, r); -} -function xs(e12) { - return (e12.flags & 32) === 32; -} -var qf = () => null; -function Yl(e12, t, n = false) { - return qf(e12, t, n); -} -function Kl(e12, t) { - let n = e12.contentQueries; - if (n !== null) { - let r = g(null); - try { - for (let o = 0; o < n.length; o += 2) { - let i = n[o], s = n[o + 1]; - if (s !== -1) { - let a = e12.data[s]; - lr(i), a.contentQueries(2, t[s], s); - } - } - } finally { - g(r); - } - } -} -function Gi(e12, t, n) { - lr(0); - let r = g(null); - try { - t(e12, n); - } finally { - g(r); - } -} -function Zf(e12, t, n) { - if (mi(t)) { - let r = g(null); - try { - let o = t.directiveStart, i = t.directiveEnd; - for (let s = o; s < i; s++) { - let a = e12.data[s]; - if (a.contentQueries) { - let c = n[s]; - a.contentQueries(1, c, s); - } - } - } finally { - g(r); - } - } -} -var ie = function(e12) { - return e12[e12.Emulated = 0] = "Emulated", e12[e12.None = 2] = "None", e12[e12.ShadowDom = 3] = "ShadowDom", e12[e12.ExperimentalIsolatedShadowDom = 4] = "ExperimentalIsolatedShadowDom", e12; -}(ie || {}); -var mr; -function Qf() { - if (mr === void 0 && (mr = null, Re.trustedTypes)) - try { - mr = Re.trustedTypes.createPolicy("angular", { createHTML: (e12) => e12, createScript: (e12) => e12, createScriptURL: (e12) => e12 }); - } catch { - } - return mr; -} -function Br(e12) { - return Qf()?.createHTML(e12) || e12; -} -var yr; -function Yf() { - if (yr === void 0 && (yr = null, Re.trustedTypes)) - try { - yr = Re.trustedTypes.createPolicy("angular#unsafe-bypass", { createHTML: (e12) => e12, createScript: (e12) => e12, createScriptURL: (e12) => e12 }); - } catch { - } - return yr; -} -function rl(e12) { - return Yf()?.createHTML(e12) || e12; -} -var be = class { - changingThisBreaksApplicationSecurity; - constructor(t) { - this.changingThisBreaksApplicationSecurity = t; - } - toString() { - return `SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${qn})`; - } -}; -var qi = class extends be { - getTypeName() { - return "HTML"; - } -}; -var Zi = class extends be { - getTypeName() { - return "Style"; - } -}; -var Qi = class extends be { - getTypeName() { - return "Script"; - } -}; -var Yi = class extends be { - getTypeName() { - return "URL"; - } -}; -var Ki = class extends be { - getTypeName() { - return "ResourceURL"; - } -}; -function Me(e12) { - return e12 instanceof be ? e12.changingThisBreaksApplicationSecurity : e12; -} -function He(e12, t) { - let n = Jl(e12); - if (n != null && n !== t) { - if (n === "ResourceURL" && t === "URL") - return true; - throw new Error(`Required a safe ${t}, got a ${n} (see ${qn})`); - } - return n === t; -} -function Jl(e12) { - return e12 instanceof be && e12.getTypeName() || null; -} -function As(e12) { - return new qi(e12); -} -function Rs(e12) { - return new Zi(e12); -} -function Os(e12) { - return new Qi(e12); -} -function ks(e12) { - return new Yi(e12); -} -function Ps(e12) { - return new Ki(e12); -} -function Kf(e12) { - let t = new Xi(e12); - return Jf() ? new Ji(t) : t; -} -var Ji = class { - inertDocumentHelper; - constructor(t) { - this.inertDocumentHelper = t; - } - getInertBodyElement(t) { - t = "" + t; - try { - let n = new window.DOMParser().parseFromString(Br(t), "text/html").body; - return n === null ? this.inertDocumentHelper.getInertBodyElement(t) : (n.firstChild?.remove(), n); - } catch { - return null; - } - } -}; -var Xi = class { - defaultDoc; - inertDocument; - constructor(t) { - this.defaultDoc = t, this.inertDocument = this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"); - } - getInertBodyElement(t) { - let n = this.inertDocument.createElement("template"); - return n.innerHTML = Br(t), n; - } -}; -function Jf() { - try { - return !!new window.DOMParser().parseFromString(Br(""), "text/html"); - } catch { - return false; - } -} -var Xf = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i; -function $r(e12) { - return e12 = String(e12), e12.match(Xf) ? e12 : "unsafe:" + e12; -} -function _e(e12) { - let t = {}; - for (let n of e12.split(",")) - t[n] = true; - return t; -} -function mn(...e12) { - let t = {}; - for (let n of e12) - for (let r in n) - n.hasOwnProperty(r) && (t[r] = true); - return t; -} -var Xl = _e("area,br,col,hr,img,wbr"); -var eu = _e("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"); -var tu = _e("rp,rt"); -var ep = mn(tu, eu); -var tp = mn(eu, _e("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")); -var np = mn(tu, _e("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")); -var ol = mn(Xl, tp, np, ep); -var nu = _e("background,cite,href,itemtype,longdesc,poster,src,xlink:href"); -var rp = _e("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"); -var op = _e("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"); -var ip = mn(nu, rp, op); -var sp = _e("script,style,template"); -var es = class { - sanitizedSomething = false; - buf = []; - sanitizeChildren(t) { - let n = t.firstChild, r = true, o = []; - for (; n; ) { - if (n.nodeType === Node.ELEMENT_NODE ? r = this.startElement(n) : n.nodeType === Node.TEXT_NODE ? this.chars(n.nodeValue) : this.sanitizedSomething = true, r && n.firstChild) { - o.push(n), n = lp(n); - continue; - } - for (; n; ) { - n.nodeType === Node.ELEMENT_NODE && this.endElement(n); - let i = cp(n); - if (i) { - n = i; - break; - } - n = o.pop(); - } - } - return this.buf.join(""); - } - startElement(t) { - let n = il(t).toLowerCase(); - if (!ol.hasOwnProperty(n)) - return this.sanitizedSomething = true, !sp.hasOwnProperty(n); - this.buf.push("<"), this.buf.push(n); - let r = t.attributes; - for (let o = 0; o < r.length; o++) { - let i = r.item(o), s = i.name, a = s.toLowerCase(); - if (!ip.hasOwnProperty(a)) { - this.sanitizedSomething = true; - continue; - } - let c = i.value; - nu[a] && (c = $r(c)), this.buf.push(" ", s, '="', sl(c), '"'); - } - return this.buf.push(">"), true; - } - endElement(t) { - let n = il(t).toLowerCase(); - ol.hasOwnProperty(n) && !Xl.hasOwnProperty(n) && (this.buf.push("")); - } - chars(t) { - this.buf.push(sl(t)); - } -}; -function ap(e12, t) { - return (e12.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_CONTAINED_BY) !== Node.DOCUMENT_POSITION_CONTAINED_BY; -} -function cp(e12) { - let t = e12.nextSibling; - if (t && e12 !== t.previousSibling) - throw ru(t); - return t; -} -function lp(e12) { - let t = e12.firstChild; - if (t && ap(e12, t)) - throw ru(t); - return t; -} -function il(e12) { - let t = e12.nodeName; - return typeof t == "string" ? t : "FORM"; -} -function ru(e12) { - return new Error(`Failed to sanitize html because the element is clobbered: ${e12.outerHTML}`); -} -var up = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; -var dp = /([^\#-~ |!])/g; -function sl(e12) { - return e12.replace(/&/g, "&").replace(up, function(t) { - let n = t.charCodeAt(0), r = t.charCodeAt(1); - return "&#" + ((n - 55296) * 1024 + (r - 56320) + 65536) + ";"; - }).replace(dp, function(t) { - return "&#" + t.charCodeAt(0) + ";"; - }).replace(//g, ">"); -} -var vr; -function Ur(e12, t) { - let n = null; - try { - vr = vr || Kf(e12); - let r = t ? String(t) : ""; - n = vr.getInertBodyElement(r); - let o = 5, i = r; - do { - if (o === 0) - throw new Error("Failed to sanitize html because the input is unstable"); - o--, r = i, i = n.innerHTML, n = vr.getInertBodyElement(r); - } while (r !== i); - let a = new es().sanitizeChildren(al(n) || n); - return Br(a); - } finally { - if (n) { - let r = al(n) || n; - for (; r.firstChild; ) - r.firstChild.remove(); - } - } -} -function al(e12) { - return "content" in e12 && fp(e12) ? e12.content : null; -} -function fp(e12) { - return e12.nodeType === Node.ELEMENT_NODE && e12.nodeName === "TEMPLATE"; -} -function pp(e12, t) { - return e12.createText(t); -} -function hp(e12, t, n) { - e12.setValue(t, n); -} -function ou(e12, t, n) { - return e12.createElement(t, n); -} -function Nr(e12, t, n, r, o) { - e12.insertBefore(t, n, r, o); -} -function iu(e12, t, n) { - e12.appendChild(t, n); -} -function cl(e12, t, n, r, o) { - r !== null ? Nr(e12, t, n, r, o) : iu(e12, t, n); -} -function su(e12, t, n, r) { - e12.removeChild(null, t, n, r); -} -function gp(e12, t, n) { - e12.setAttribute(t, "style", n); -} -function mp(e12, t, n) { - n === "" ? e12.removeAttribute(t, "class") : e12.setAttribute(t, "class", n); -} -function au(e12, t, n) { - let { mergedAttrs: r, classes: o, styles: i } = n; - r !== null && Mf(e12, t, r), o !== null && mp(e12, t, o), i !== null && gp(e12, t, i); -} -var ge = function(e12) { - return e12[e12.NONE = 0] = "NONE", e12[e12.HTML = 1] = "HTML", e12[e12.STYLE = 2] = "STYLE", e12[e12.SCRIPT = 3] = "SCRIPT", e12[e12.URL = 4] = "URL", e12[e12.RESOURCE_URL = 5] = "RESOURCE_URL", e12; -}(ge || {}); -function Ls(e12) { - let t = yp(); - return t ? rl(t.sanitize(ge.HTML, e12) || "") : He(e12, "HTML") ? rl(Me(e12)) : Ur(Wl(), ii(e12)); -} -function yp() { - let e12 = M(); - return e12 && e12[le].sanitizer; -} -var vp = "ng-template"; -function Ep(e12) { - return e12.type === 4 && e12.value !== vp; -} -function ts(e12) { - return (e12 & 1) === 0; -} -function ll(e12, t) { - return e12 ? ":not(" + t.trim() + ")" : t; -} -function Ip(e12) { - let t = e12[0], n = 1, r = 2, o = "", i = false; - for (; n < e12.length; ) { - let s = e12[n]; - if (typeof s == "string") - if (r & 2) { - let a = e12[++n]; - o += "[" + s + (a.length > 0 ? '="' + a + '"' : "") + "]"; - } else - r & 8 ? o += "." + s : r & 4 && (o += " " + s); - else - o !== "" && !ts(s) && (t += ll(i, o), o = ""), r = s, i = i || !ts(r); - n++; - } - return o !== "" && (t += ll(i, o)), t; -} -function Dp(e12) { - return e12.map(Ip).join(","); -} -function wp(e12) { - let t = [], n = [], r = 1, o = 2; - for (; r < e12.length; ) { - let i = e12[r]; - if (typeof i == "string") - o === 2 ? i !== "" && t.push(i, e12[++r]) : o === 8 && n.push(i); - else { - if (!ts(o)) - break; - o = i; - } - r++; - } - return n.length && t.push(1, ...n), t; -} -var Se = {}; -function Fs(e12, t, n, r, o, i, s, a, c, l, u) { - let d = F + r, f = d + o, p = Cp(d, f), h = typeof l == "function" ? l() : l; - return p[m] = { type: e12, blueprint: p, template: n, queries: null, viewQuery: a, declTNode: t, data: p.slice().fill(null, d), bindingStartIndex: d, expandoStartIndex: f, hostBindingOpCodes: null, firstCreatePass: true, firstUpdatePass: true, staticViewQueries: false, staticContentQueries: false, preOrderHooks: null, preOrderCheckHooks: null, contentHooks: null, contentCheckHooks: null, viewHooks: null, viewCheckHooks: null, destroyHooks: null, cleanup: null, contentQueries: null, components: null, directiveRegistry: typeof i == "function" ? i() : i, pipeRegistry: typeof s == "function" ? s() : s, firstChild: null, schemas: c, consts: h, incompleteFirstPass: false, ssrId: u }; -} -function Cp(e12, t) { - let n = []; - for (let r = 0; r < t; r++) - n.push(r < e12 ? null : Se); - return n; -} -function bp(e12) { - let t = e12.tView; - return t === null || t.incompleteFirstPass ? e12.tView = Fs(1, null, e12.template, e12.decls, e12.vars, e12.directiveDefs, e12.pipeDefs, e12.viewQuery, e12.schemas, e12.consts, e12.id) : t; -} -function js(e12, t, n, r, o, i, s, a, c, l, u) { - let d = t.blueprint.slice(); - return d[ne] = o, d[y] = r | 4 | 128 | 8 | 64 | 1024, (l !== null || e12 && e12[y] & 2048) && (d[y] |= 2048), Ei(d), d[R] = d[Xe] = e12, d[x] = n, d[le] = s || e12 && e12[le], d[O] = a || e12 && e12[O], d[De] = c || e12 && e12[De] || null, d[J] = i, d[we] = Bf(), d[wt] = u, d[hi] = l, d[X] = t.type == 2 ? e12[X] : d, d; -} -function Tp(e12, t, n) { - let r = de(t, e12), o = bp(n), i = e12[le].rendererFactory, s = Hs(e12, js(e12, o, null, cu(n), r, t, null, i.createRenderer(r, n), null, null, null)); - return e12[t.index] = s; -} -function cu(e12) { - let t = 16; - return e12.signals ? t = 4096 : e12.onPush && (t = 64), t; -} -function lu(e12, t, n, r) { - if (n === 0) - return -1; - let o = t.length; - for (let i = 0; i < n; i++) - t.push(r), e12.blueprint.push(r), e12.data.push(null); - return o; -} -function Hs(e12, t) { - return e12[bt] ? e12[pi][K] = t : e12[bt] = t, e12[pi] = t, t; -} -function V(e12 = 1) { - uu(oe(), M(), Fe() + e12, false); -} -function uu(e12, t, n, r) { - if (!r) - if ((t[y] & 3) === 3) { - let i = e12.preOrderCheckHooks; - i !== null && Ir(t, i, n); - } else { - let i = e12.preOrderHooks; - i !== null && Dr(t, i, 0, n); - } - je(n); -} -var zr = function(e12) { - return e12[e12.None = 0] = "None", e12[e12.SignalBased = 1] = "SignalBased", e12[e12.HasDecoratorInputTransform = 2] = "HasDecoratorInputTransform", e12; -}(zr || {}); -function ns(e12, t, n, r) { - let o = g(null); - try { - let [i, s, a] = e12.inputs[n], c = null; - (s & zr.SignalBased) !== 0 && (c = t[i][Z]), c !== null && c.transformFn !== void 0 ? r = c.transformFn(r) : a !== null && (r = a.call(t, r)), e12.setInput !== null ? e12.setInput(t, c, r, n, i) : Ml(t, c, i, r); - } finally { - g(o); - } -} -var Te = function(e12) { - return e12[e12.Important = 1] = "Important", e12[e12.DashCase = 2] = "DashCase", e12; -}(Te || {}); -var Mp; -function Vs(e12, t) { - return Mp(e12, t); -} -var UE = typeof document < "u" && typeof document?.documentElement?.getAnimations == "function"; -var rs = /* @__PURE__ */ new WeakMap(); -var nn = /* @__PURE__ */ new WeakSet(); -function _p(e12, t) { - let n = rs.get(e12); - if (!n || n.length === 0) - return; - let r = t.parentNode, o = t.previousSibling; - for (let i = n.length - 1; i >= 0; i--) { - let s = n[i], a = s.parentNode; - s === t ? (n.splice(i, 1), nn.add(s), s.dispatchEvent(new CustomEvent("animationend", { detail: { cancel: true } }))) : (o && s === o || a && r && a !== r) && (n.splice(i, 1), s.dispatchEvent(new CustomEvent("animationend", { detail: { cancel: true } })), s.parentNode?.removeChild(s)); - } -} -function Sp(e12, t) { - let n = rs.get(e12); - n ? n.includes(t) || n.push(t) : rs.set(e12, [t]); -} -var it = /* @__PURE__ */ new Set(); -var Bs = function(e12) { - return e12[e12.CHANGE_DETECTION = 0] = "CHANGE_DETECTION", e12[e12.AFTER_NEXT_RENDER = 1] = "AFTER_NEXT_RENDER", e12; -}(Bs || {}); -var jt = new D(""); -var ul = /* @__PURE__ */ new Set(); -function ct(e12) { - ul.has(e12) || (ul.add(e12), performance?.mark?.("mark_feature_usage", { detail: { feature: e12 } })); -} -var du = (() => { - class e12 { - impl = null; - execute() { - this.impl?.execute(); - } - static \u0275prov = _({ token: e12, providedIn: "root", factory: () => new e12() }); - } - return e12; -})(); -var fu = new D("", { factory: () => ({ queue: /* @__PURE__ */ new Set(), isScheduled: false, scheduler: null, injector: E(Q) }) }); -function pu(e12, t, n) { - let r = e12.get(fu); - if (Array.isArray(t)) - for (let o of t) - r.queue.add(o), n?.detachedLeaveAnimationFns?.push(o); - else - r.queue.add(t), n?.detachedLeaveAnimationFns?.push(t); - r.scheduler && r.scheduler(e12); -} -function Np(e12, t) { - let n = e12.get(fu); - if (t.detachedLeaveAnimationFns) { - for (let r of t.detachedLeaveAnimationFns) - n.queue.delete(r); - t.detachedLeaveAnimationFns = void 0; - } -} -function xp(e12, t) { - for (let [n, r] of t) - pu(e12, r.animateFns); -} -function dl(e12, t, n, r) { - let o = e12?.[ke]?.enter; - t !== null && o && o.has(n.index) && xp(r, o); -} -function Rt(e12, t, n, r, o, i, s, a) { - if (o != null) { - let c, l = false; - re(o) ? c = o : Le(o) && (l = true, o = o[ne]); - let u = ee(o); - e12 === 0 && r !== null ? (dl(a, r, i, n), s == null ? iu(t, r, u) : Nr(t, r, u, s || null, true)) : e12 === 1 && r !== null ? (dl(a, r, i, n), Nr(t, r, u, s || null, true), _p(i, u)) : e12 === 2 ? (a?.[ke]?.leave?.has(i.index) && Sp(i, u), nn.delete(u), fl(a, i, n, (d) => { - if (nn.has(u)) { - nn.delete(u); - return; - } - su(t, u, l, d); - })) : e12 === 3 && (nn.delete(u), fl(a, i, n, () => { - t.destroyNode(u); - })), c != null && Up(t, e12, n, c, i, r, s); - } -} -function Ap(e12, t) { - hu(e12, t), t[ne] = null, t[J] = null; -} -function Rp(e12, t, n, r, o, i) { - r[ne] = o, r[J] = t, Gr(e12, r, n, 1, o, i); -} -function hu(e12, t) { - t[le].changeDetectionScheduler?.notify(9), Gr(e12, t, t[O], 2, null, null); -} -function Op(e12) { - let t = e12[bt]; - if (!t) - return ji(e12[m], e12); - for (; t; ) { - let n = null; - if (Le(t)) - n = t[bt]; - else { - let r = t[S]; - r && (n = r); - } - if (!n) { - for (; t && !t[K] && t !== e12; ) - Le(t) && ji(t[m], t), t = t[R]; - t === null && (t = e12), Le(t) && ji(t[m], t), n = t && t[K]; - } - t = n; - } -} -function $s(e12, t) { - let n = e12[tt], r = n.indexOf(t); - n.splice(r, 1); -} -function Wr(e12, t) { - if (nt(t)) - return; - let n = t[O]; - n.destroyNode && Gr(e12, t, n, 3, null, null), Op(t); -} -function ji(e12, t) { - if (nt(t)) - return; - let n = g(null); - try { - t[y] &= -129, t[y] |= 256, t[G] && dt(t[G]), Lp(e12, t), Pp(e12, t), t[m].type === 1 && t[O].destroy(); - let r = t[Oe]; - if (r !== null && re(t[R])) { - r !== t[R] && $s(r, t); - let o = t[ue]; - o !== null && o.detachView(e12); - } - zi(t); - } finally { - g(n); - } -} -function fl(e12, t, n, r) { - let o = e12?.[ke]; - if (o == null || o.leave == null || !o.leave.has(t.index)) - return r(false); - e12 && it.add(e12[we]), pu(n, () => { - if (o.leave && o.leave.has(t.index)) { - let s = o.leave.get(t.index), a = []; - if (s) { - for (let c = 0; c < s.animateFns.length; c++) { - let l = s.animateFns[c], { promise: u } = l(); - a.push(u); - } - o.detachedLeaveAnimationFns = void 0; - } - o.running = Promise.allSettled(a), kp(e12, r); - } else - e12 && it.delete(e12[we]), r(false); - }, o); -} -function kp(e12, t) { - let n = e12[ke]?.running; - if (n) { - n.then(() => { - e12[ke].running = void 0, it.delete(e12[we]), t(true); - }); - return; - } - t(false); -} -function Pp(e12, t) { - let n = e12.cleanup, r = t[Ct]; - if (n !== null) - for (let s = 0; s < n.length - 1; s += 2) - if (typeof n[s] == "string") { - let a = n[s + 3]; - a >= 0 ? r[a]() : r[-a].unsubscribe(), s += 2; - } else { - let a = r[n[s + 1]]; - n[s].call(a); - } - r !== null && (t[Ct] = null); - let o = t[Ee]; - if (o !== null) { - t[Ee] = null; - for (let s = 0; s < o.length; s++) { - let a = o[s]; - a(); - } - } - let i = t[xe]; - if (i !== null) { - t[xe] = null; - for (let s of i) - s.destroy(); - } -} -function Lp(e12, t) { - let n; - if (e12 != null && (n = e12.destroyHooks) != null) - for (let r = 0; r < n.length; r += 2) { - let o = t[n[r]]; - if (!(o instanceof sn)) { - let i = n[r + 1]; - if (Array.isArray(i)) - for (let s = 0; s < i.length; s += 2) { - let a = o[i[s]], c = i[s + 1]; - T(C.LifecycleHookStart, a, c); - try { - c.call(a); - } finally { - T(C.LifecycleHookEnd, a, c); - } - } - else { - T(C.LifecycleHookStart, o, i); - try { - i.call(o); - } finally { - T(C.LifecycleHookEnd, o, i); - } - } - } - } -} -function Fp(e12, t, n) { - return jp(e12, t.parent, n); -} -function jp(e12, t, n) { - let r = t; - for (; r !== null && r.type & 168; ) - t = r, r = t.parent; - if (r === null) - return n[ne]; - if (Tt(r)) { - let { encapsulation: o } = e12.data[r.directiveStart + r.componentOffset]; - if (o === ie.None || o === ie.Emulated) - return null; - } - return de(r, n); -} -function Hp(e12, t, n) { - return Bp(e12, t, n); -} -function Vp(e12, t, n) { - return e12.type & 40 ? de(e12, n) : null; -} -var Bp = Vp; -var pl; -function Us(e12, t, n, r) { - let o = Fp(e12, r, t), i = t[O], s = r.parent || t[J], a = Hp(s, r, t); - if (o != null) - if (Array.isArray(n)) - for (let c = 0; c < n.length; c++) - cl(i, o, n[c], a, false); - else - cl(i, o, n, a, false); - pl !== void 0 && pl(i, r, t, n, o); -} -function rn(e12, t) { - if (t !== null) { - let n = t.type; - if (n & 3) - return de(t, e12); - if (n & 4) - return os(-1, e12[t.index]); - if (n & 8) { - let r = t.child; - if (r !== null) - return rn(e12, r); - { - let o = e12[t.index]; - return re(o) ? os(-1, o) : ee(o); - } - } else { - if (n & 128) - return rn(e12, t.next); - if (n & 32) - return Vs(t, e12)() || ee(e12[t.index]); - { - let r = gu(e12, t); - if (r !== null) { - if (Array.isArray(r)) - return r[0]; - let o = Ae(e12[X]); - return rn(o, r); - } else - return rn(e12, t.next); - } - } - } - return null; -} -function gu(e12, t) { - if (t !== null) { - let r = e12[X][J], o = t.projection; - return r.projection[o]; - } - return null; -} -function os(e12, t) { - let n = S + e12 + 1; - if (n < t.length) { - let r = t[n], o = r[m].firstChild; - if (o !== null) - return rn(r, o); - } - return t[Pe]; -} -function zs(e12, t, n, r, o, i, s) { - for (; n != null; ) { - let a = r[De]; - if (n.type === 128) { - n = n.next; - continue; - } - let c = r[n.index], l = n.type; - if (s && t === 0 && (c && kt(ee(c), r), n.flags |= 2), !xs(n)) - if (l & 8) - zs(e12, t, n.child, r, o, i, false), Rt(t, e12, a, o, c, n, i, r); - else if (l & 32) { - let u = Vs(n, r), d; - for (; d = u(); ) - Rt(t, e12, a, o, d, n, i, r); - Rt(t, e12, a, o, c, n, i, r); - } else - l & 16 ? $p(e12, t, r, n, o, i) : Rt(t, e12, a, o, c, n, i, r); - n = s ? n.projectionNext : n.next; - } -} -function Gr(e12, t, n, r, o, i) { - zs(n, r, e12.firstChild, t, o, i, false); -} -function $p(e12, t, n, r, o, i) { - let s = n[X], c = s[J].projection[r.projection]; - if (Array.isArray(c)) - for (let l = 0; l < c.length; l++) { - let u = c[l]; - Rt(t, e12, n[De], o, u, r, i, n); - } - else { - let l = c, u = s[R]; - Vl(r) && (l.flags |= 128), zs(e12, t, l, u, o, i, true); - } -} -function Up(e12, t, n, r, o, i, s) { - let a = r[Pe], c = ee(r); - a !== c && Rt(t, e12, n, i, a, o, s); - for (let l = S; l < r.length; l++) { - let u = r[l]; - Gr(u[m], u, e12, t, i, a); - } -} -function zp(e12, t, n, r, o) { - if (t) - o ? e12.addClass(n, r) : e12.removeClass(n, r); - else { - let i = r.indexOf("-") === -1 ? void 0 : Te.DashCase; - o == null ? e12.removeStyle(n, r, i) : (typeof o == "string" && o.endsWith("!important") && (o = o.slice(0, -10), i |= Te.Important), e12.setStyle(n, r, o, i)); - } -} -function mu(e12, t, n, r, o) { - let i = Fe(), s = r & 2; - try { - je(-1), s && t.length > F && uu(e12, t, F, false); - let a = s ? C.TemplateUpdateStart : C.TemplateCreateStart; - T(a, o, n), n(r, o); - } finally { - je(i); - let a = s ? C.TemplateUpdateEnd : C.TemplateCreateEnd; - T(a, o, n); - } -} -function Wp(e12, t, n) { - Yp(e12, t, n), (n.flags & 64) === 64 && Kp(e12, t, n); -} -function yu(e12, t, n = de) { - let r = t.localNames; - if (r !== null) { - let o = t.index + 1; - for (let i = 0; i < r.length; i += 2) { - let s = r[i + 1], a = s === -1 ? n(t, e12) : e12[s]; - e12[o++] = a; - } - } -} -function Gp(e12, t, n, r) { - let i = r.get(Ql, Zl) || n === ie.ShadowDom || n === ie.ExperimentalIsolatedShadowDom, s = e12.selectRootElement(t, i); - return qp(s), s; -} -function qp(e12) { - Zp(e12); -} -var Zp = () => null; -function Qp(e12, t, n, r, o, i) { - if (e12.type & 3) { - let s = de(e12, t); - r = i != null ? i(r, e12.value || "", n) : r, o.setProperty(s, n, r); - } else - e12.type & 12; -} -function Yp(e12, t, n) { - let r = n.directiveStart, o = n.directiveEnd; - Tt(n) && Tp(t, n, e12.data[r + n.componentOffset]), e12.firstCreatePass || Ol(n, t); - let i = n.initialInputs; - for (let s = r; s < o; s++) { - let a = e12.data[s], c = _r(t, e12, s, n); - if (kt(c, t), i !== null && Xp(t, s - r, c, a, n, i), Mt(a)) { - let l = Ce(n.index, t); - l[x] = _r(t, e12, s, n); - } - } -} -function Kp(e12, t, n) { - let r = n.directiveStart, o = n.directiveEnd, i = n.index, s = Ac(); - try { - je(i); - for (let a = r; a < o; a++) { - let c = e12.data[a], l = t[a]; - cr(a), (c.hostBindings !== null || c.hostVars !== 0 || c.hostAttrs !== null) && Jp(c, l); - } - } finally { - je(-1), cr(s); - } -} -function Jp(e12, t) { - e12.hostBindings !== null && e12.hostBindings(1, t); -} -function Xp(e12, t, n, r, o, i) { - let s = i[t]; - if (s !== null) - for (let a = 0; a < s.length; a += 2) { - let c = s[a], l = s[a + 1]; - ns(r, n, c, l); - } -} -function eh(e12, t, n, r, o) { - let i = F + n, s = t[m], a = o(s, t, e12, r, n); - t[i] = a, Nt(e12, true); - let c = e12.type === 2; - return c ? (au(t[O], a, e12), (Ec() === 0 || yi(e12)) && kt(a, t), Ic()) : kt(a, t), fr() && (!c || !xs(e12)) && Us(s, t, a, e12), e12; -} -function th(e12) { - let t = e12; - return Ti() ? Mc() : (t = t.parent, Nt(t, false)), t; -} -function nh(e12, t) { - let n = e12[De]; - if (!n) - return; - let r; - try { - r = n.get(rt, null); - } catch { - r = null; - } - r?.(t); -} -function rh(e12, t, n, r, o) { - let i = e12.inputs?.[r], s = e12.hostDirectiveInputs?.[r], a = false; - if (s) - for (let c = 0; c < s.length; c += 2) { - let l = s[c], u = s[c + 1], d = t.data[l]; - ns(d, n[l], u, o), a = true; - } - if (i) - for (let c of i) { - let l = n[c], u = t.data[c]; - ns(u, l, r, o), a = true; - } - return a; -} -function oh(e12, t) { - let n = Ce(t, e12), r = n[m]; - ih(r, n); - let o = n[ne]; - o !== null && n[wt] === null && (n[wt] = Yl(o, n[De])), T(C.ComponentStart); - try { - Ws(r, n, n[x]); - } finally { - T(C.ComponentEnd, n[x]); - } -} -function ih(e12, t) { - for (let n = t.length; n < e12.blueprint.length; n++) - t.push(e12.blueprint[n]); -} -function Ws(e12, t, n) { - ur(t); - try { - let r = e12.viewQuery; - r !== null && Gi(1, r, n); - let o = e12.template; - o !== null && mu(e12, t, o, 1, n), e12.firstCreatePass && (e12.firstCreatePass = false), t[ue]?.finishViewCreation(e12), e12.staticContentQueries && Kl(e12, t), e12.staticViewQueries && Gi(2, e12.viewQuery, n); - let i = e12.components; - i !== null && sh(t, i); - } catch (r) { - throw e12.firstCreatePass && (e12.incompleteFirstPass = true, e12.firstCreatePass = false), r; - } finally { - t[y] &= -5, dr(); - } -} -function sh(e12, t) { - for (let n = 0; n < t.length; n++) - oh(e12, t[n]); -} -function qr(e12, t, n, r) { - let o = g(null); - try { - let i = t.tView, a = e12[y] & 4096 ? 4096 : 16, c = js(e12, i, n, a, null, t, null, null, r?.injector ?? null, r?.embeddedViewInjector ?? null, r?.dehydratedView ?? null), l = e12[t.index]; - c[Oe] = l; - let u = e12[ue]; - return u !== null && (c[ue] = u.createEmbeddedView(i)), Ws(i, c, n), c; - } finally { - g(o); - } -} -function an(e12, t) { - return !t || t.firstChild === null || Vl(e12); -} -function cn(e12, t, n, r, o = false) { - for (; n !== null; ) { - if (n.type === 128) { - n = o ? n.projectionNext : n.next; - continue; - } - let i = t[n.index]; - i !== null && r.push(ee(i)), re(i) && vu(i, r); - let s = n.type; - if (s & 8) - cn(e12, t, n.child, r); - else if (s & 32) { - let a = Vs(n, t), c; - for (; c = a(); ) - r.push(c); - } else if (s & 16) { - let a = gu(t, n); - if (Array.isArray(a)) - r.push(...a); - else { - let c = Ae(t[X]); - cn(c[m], c, a, r, true); - } - } - n = o ? n.projectionNext : n.next; - } - return r; -} -function vu(e12, t) { - for (let n = S; n < e12.length; n++) { - let r = e12[n], o = r[m].firstChild; - o !== null && cn(r[m], r, o, t); - } - e12[Pe] !== e12[ne] && t.push(e12[Pe]); -} -function Eu(e12) { - if (e12[or] !== null) { - for (let t of e12[or]) - t.impl.addSequence(t); - e12[or].length = 0; - } -} -var Iu = []; -function ah(e12) { - return e12[G] ?? ch(e12); -} -function ch(e12) { - let t = Iu.pop() ?? Object.create(uh); - return t.lView = e12, t; -} -function lh(e12) { - e12.lView[G] !== e12 && (e12.lView = null, Iu.push(e12)); -} -var uh = A(N({}, ut), { consumerIsAlwaysLive: true, kind: "template", consumerMarkedDirty: (e12) => { - St(e12.lView); -}, consumerOnSignalRead() { - this.lView[G] = this; -} }); -function dh(e12) { - let t = e12[G] ?? Object.create(fh); - return t.lView = e12, t; -} -var fh = A(N({}, ut), { consumerIsAlwaysLive: true, kind: "template", consumerMarkedDirty: (e12) => { - let t = Ae(e12.lView); - for (; t && !Du(t[m]); ) - t = Ae(t); - t && Ii(t); -}, consumerOnSignalRead() { - this.lView[G] = this; -} }); -function Du(e12) { - return e12.type !== 2; -} -function wu(e12) { - if (e12[xe] === null) - return; - let t = true; - for (; t; ) { - let n = false; - for (let r of e12[xe]) - r.dirty && (n = true, r.zone === null || Zone.current === r.zone ? r.run() : r.zone.run(() => r.run())); - t = n && !!(e12[y] & 8192); - } -} -var ph = 100; -function Cu(e12, t = 0) { - let r = e12[le].rendererFactory, o = false; - o || r.begin?.(); - try { - hh(e12, t); - } finally { - o || r.end?.(); - } -} -function hh(e12, t) { - let n = Mi(); - try { - Gt(true), is(e12, t); - let r = 0; - for (; Xt(e12); ) { - if (r === ph) - throw new v(103, false); - r++, is(e12, 1); - } - } finally { - Gt(n); - } -} -function gh(e12, t, n, r) { - if (nt(t)) - return; - let o = t[y], i = false, s = false; - ur(t); - let a = true, c = null, l = null; - i || (Du(e12) ? (l = ah(t), c = Bt(l)) : xn() === null ? (a = false, l = dh(t), c = Bt(l)) : t[G] && (dt(t[G]), t[G] = null)); - try { - Ei(t), _c(e12.bindingStartIndex), n !== null && mu(e12, t, n, 2, r); - let u = (o & 3) === 3; - if (!i) - if (u) { - let p = e12.preOrderCheckHooks; - p !== null && Ir(t, p, null); - } else { - let p = e12.preOrderHooks; - p !== null && Dr(t, p, 0, null), Li(t, 0); - } - if (s || mh(t), wu(t), bu(t, 0), e12.contentQueries !== null && Kl(e12, t), !i) - if (u) { - let p = e12.contentCheckHooks; - p !== null && Ir(t, p); - } else { - let p = e12.contentHooks; - p !== null && Dr(t, p, 1), Li(t, 1); - } - vh(e12, t); - let d = e12.components; - d !== null && Mu(t, d, 0); - let f = e12.viewQuery; - if (f !== null && Gi(2, f, r), !i) - if (u) { - let p = e12.viewCheckHooks; - p !== null && Ir(t, p); - } else { - let p = e12.viewHooks; - p !== null && Dr(t, p, 2), Li(t, 2); - } - if (e12.firstUpdatePass === true && (e12.firstUpdatePass = false), t[rr]) { - for (let p of t[rr]) - p(); - t[rr] = null; - } - i || (Eu(t), t[y] &= -73); - } catch (u) { - throw i || St(t), u; - } finally { - l !== null && (An(l, c), a && lh(l)), dr(); - } -} -function bu(e12, t) { - for (let n = $l(e12); n !== null; n = Ul(n)) - for (let r = S; r < n.length; r++) { - let o = n[r]; - Tu(o, t); - } -} -function mh(e12) { - for (let t = $l(e12); t !== null; t = Ul(t)) { - if (!(t[y] & 2)) - continue; - let n = t[tt]; - for (let r = 0; r < n.length; r++) { - let o = n[r]; - Ii(o); - } - } -} -function yh(e12, t, n) { - T(C.ComponentStart); - let r = Ce(t, e12); - try { - Tu(r, n); - } finally { - T(C.ComponentEnd, r[x]); - } -} -function Tu(e12, t) { - sr(e12) && is(e12, t); -} -function is(e12, t) { - let r = e12[m], o = e12[y], i = e12[G], s = !!(t === 0 && o & 16); - if (s ||= !!(o & 64 && t === 0), s ||= !!(o & 1024), s ||= !!(i?.dirty && Rn(i)), s ||= false, i && (i.dirty = false), e12[y] &= -9217, s) - gh(r, e12, r.template, e12[x]); - else if (o & 8192) { - let a = g(null); - try { - wu(e12), bu(e12, 1); - let c = r.components; - c !== null && Mu(e12, c, 1), Eu(e12); - } finally { - g(a); - } - } -} -function Mu(e12, t, n) { - for (let r = 0; r < t.length; r++) - yh(e12, t[r], n); -} -function vh(e12, t) { - let n = e12.hostBindingOpCodes; - if (n !== null) - try { - for (let r = 0; r < n.length; r++) { - let o = n[r]; - if (o < 0) - je(~o); - else { - let i = o, s = n[++r], a = n[++r]; - xc(s, i); - let c = t[i]; - T(C.HostBindingsUpdateStart, c); - try { - a(2, c); - } finally { - T(C.HostBindingsUpdateEnd, c); - } - } - } - } finally { - je(-1); - } -} -function Gs(e12, t) { - let n = Mi() ? 64 : 1088; - for (e12[le].changeDetectionScheduler?.notify(t); e12; ) { - e12[y] |= n; - let r = Ae(e12); - if (_t(e12) && !r) - return e12; - e12 = r; - } - return null; -} -function _u(e12, t, n, r) { - return [e12, true, 0, t, null, r, null, n, null, null]; -} -function Su(e12, t) { - let n = S + t; - if (n < e12.length) - return e12[n]; -} -function Zr(e12, t, n, r = true) { - let o = t[m]; - if (Eh(o, t, e12, n), r) { - let s = os(n, e12), a = t[O], c = a.parentNode(e12[Pe]); - c !== null && Rp(o, e12[J], a, t, c, s); - } - let i = t[wt]; - i !== null && i.firstChild !== null && (i.firstChild = null); -} -function Nu(e12, t) { - let n = ln(e12, t); - return n !== void 0 && Wr(n[m], n), n; -} -function ln(e12, t) { - if (e12.length <= S) - return; - let n = S + t, r = e12[n]; - if (r) { - let o = r[Oe]; - o !== null && o !== e12 && $s(o, r), t > 0 && (e12[n - 1][K] = r[K]); - let i = Qt(e12, S + t); - Ap(r[m], r); - let s = i[ue]; - s !== null && s.detachView(i[m]), r[R] = null, r[K] = null, r[y] &= -129; - } - return r; -} -function Eh(e12, t, n, r) { - let o = S + r, i = n.length; - r > 0 && (n[o - 1][K] = t), r < i - S ? (t[K] = n[o], ci(n, S + r, t)) : (n.push(t), t[K] = null), t[R] = n; - let s = t[Oe]; - s !== null && n !== s && xu(s, t); - let a = t[ue]; - a !== null && a.insertView(e12), ar(t), t[y] |= 128; -} -function xu(e12, t) { - let n = e12[tt], r = t[R]; - if (Le(r)) - e12[y] |= 2; - else { - let o = r[R][X]; - t[X] !== o && (e12[y] |= 2); - } - n === null ? e12[tt] = [t] : n.push(t); -} -var Pt = class { - _lView; - _cdRefInjectingView; - _appRef = null; - _attachedToViewContainer = false; - exhaustive; - get rootNodes() { - let t = this._lView, n = t[m]; - return cn(n, t, n.firstChild, []); - } - constructor(t, n) { - this._lView = t, this._cdRefInjectingView = n; - } - get context() { - return this._lView[x]; - } - set context(t) { - this._lView[x] = t; - } - get destroyed() { - return nt(this._lView); - } - destroy() { - if (this._appRef) - this._appRef.detachView(this); - else if (this._attachedToViewContainer) { - let t = this._lView[R]; - if (re(t)) { - let n = t[Jt], r = n ? n.indexOf(this) : -1; - r > -1 && (ln(t, r), Qt(n, r)); - } - this._attachedToViewContainer = false; - } - Wr(this._lView[m], this._lView); - } - onDestroy(t) { - Di(this._lView, t); - } - markForCheck() { - Gs(this._cdRefInjectingView || this._lView, 4); - } - detach() { - this._lView[y] &= -129; - } - reattach() { - ar(this._lView), this._lView[y] |= 128; - } - detectChanges() { - this._lView[y] |= 1024, Cu(this._lView); - } - checkNoChanges() { - } - attachToViewContainerRef() { - if (this._appRef) - throw new v(902, false); - this._attachedToViewContainer = true; - } - detachFromAppRef() { - this._appRef = null; - let t = _t(this._lView), n = this._lView[Oe]; - n !== null && !t && $s(n, this._lView), hu(this._lView[m], this._lView); - } - attachToAppRef(t) { - if (this._attachedToViewContainer) - throw new v(902, false); - this._appRef = t; - let n = _t(this._lView), r = this._lView[Oe]; - r !== null && !n && xu(r, this._lView), ar(this._lView); - } -}; -var un = /* @__PURE__ */ (() => { - class e12 { - _declarationLView; - _declarationTContainer; - elementRef; - static __NG_ELEMENT_ID__ = Ih; - constructor(n, r, o) { - this._declarationLView = n, this._declarationTContainer = r, this.elementRef = o; - } - get ssrId() { - return this._declarationTContainer.tView?.ssrId || null; - } - createEmbeddedView(n, r) { - return this.createEmbeddedViewImpl(n, r); - } - createEmbeddedViewImpl(n, r, o) { - let i = qr(this._declarationLView, this._declarationTContainer, n, { embeddedViewInjector: r, dehydratedView: o }); - return new Pt(i); - } - } - return e12; -})(); -function Ih() { - return qs(pe(), M()); -} -function qs(e12, t) { - return e12.type & 4 ? new un(t, e12, Ft(e12, t)) : null; -} -function Qr(e12, t, n, r, o) { - let i = e12.data[t]; - if (i === null) - i = Dh(e12, t, n, r, o), Nc() && (i.flags |= 32); - else if (i.type & 64) { - i.type = n, i.value = r, i.attrs = o; - let s = Tc(); - i.injectorIndex = s === null ? -1 : s.injectorIndex; - } - return Nt(i, true), i; -} -function Dh(e12, t, n, r, o) { - let i = bi(), s = Ti(), a = s ? i : i && i.parent, c = e12.data[t] = Ch(e12, a, n, t, r, o); - return wh(e12, c, i, s), c; -} -function wh(e12, t, n, r) { - e12.firstChild === null && (e12.firstChild = t), n !== null && (r ? n.child == null && t.parent !== null && (n.child = t) : n.next === null && (n.next = t, t.prev = n)); -} -function Ch(e12, t, n, r, o, i) { - let s = t ? t.injectorIndex : -1, a = 0; - return wc() && (a |= 128), { type: n, index: r, insertBeforeIndex: null, injectorIndex: s, directiveStart: -1, directiveEnd: -1, directiveStylingLast: -1, componentOffset: -1, controlDirectiveIndex: -1, customControlIndex: -1, propertyBindings: null, flags: a, providerIndexes: 0, value: o, attrs: i, mergedAttrs: null, localNames: null, initialInputs: null, inputs: null, hostDirectiveInputs: null, outputs: null, hostDirectiveOutputs: null, directiveToIndex: 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 }; -} -function bh(e12) { - let t = e12[gi] ?? [], r = e12[R][O], o = []; - for (let i of t) - i.data[ql] !== void 0 ? o.push(i) : Th(i, r); - e12[gi] = o; -} -function Th(e12, t) { - let n = 0, r = e12.firstChild; - if (r) { - let o = e12.data[Gl]; - for (; n < o; ) { - let i = r.nextSibling; - su(t, r, false), r = i, n++; - } - } -} -var Mh = () => null; -var _h = () => null; -function ss(e12, t) { - return Mh(e12, t); -} -function Au(e12, t, n) { - return _h(e12, t, n); -} -var Ru = class { -}; -var Yr = class { -}; -var as = class { - resolveComponentFactory(t) { - throw new v(917, false); - } -}; -var Kr = class { - static NULL = new as(); -}; -var st = class { -}; -var Ou = (() => { - class e12 { - static \u0275prov = _({ token: e12, providedIn: "root", factory: () => null }); - } - return e12; -})(); -var Cr = {}; -var cs = class { - injector; - parentInjector; - constructor(t, n) { - this.injector = t, this.parentInjector = n; - } - get(t, n, r) { - let o = this.injector.get(t, Cr, r); - return o !== Cr || n === Cr ? o : this.parentInjector.get(t, n, r); - } -}; -function xr(e12, t, n) { - let r = n ? e12.styles : null, o = n ? e12.classes : null, i = 0; - if (t !== null) - for (let s = 0; s < t.length; s++) { - let a = t[s]; - if (typeof a == "number") - i = a; - else if (i == 1) - o = Jo(o, a); - else if (i == 2) { - let c = a, l = t[++s]; - r = Jo(r, c + ": " + l + ";"); - } - } - n ? e12.styles = r : e12.stylesWithoutHost = r, n ? e12.classes = o : e12.classesWithoutHost = o; -} -function ku(e12, t = 0) { - let n = M(); - if (n === null) - return w(e12, t); - let r = pe(); - return Fl(r, n, W(e12), t); -} -function Sh(e12, t, n, r, o) { - let i = r === null ? null : { "": -1 }, s = o(e12, n); - if (s !== null) { - let a = s, c = null, l = null; - for (let u of s) - if (u.resolveHostDirectives !== null) { - [a, c, l] = u.resolveHostDirectives(s); - break; - } - Ah(e12, t, n, a, i, c, l); - } - i !== null && r !== null && Nh(n, r, i); -} -function Nh(e12, t, n) { - let r = e12.localNames = []; - for (let o = 0; o < t.length; o += 2) { - let i = n[t[o + 1]]; - if (i == null) - throw new v(-301, false); - r.push(t[o], i); - } -} -function xh(e12, t, n) { - t.componentOffset = n, (e12.components ??= []).push(t.index); -} -function Ah(e12, t, n, r, o, i, s) { - let a = r.length, c = null; - for (let f = 0; f < a; f++) { - let p = r[f]; - c === null && Mt(p) && (c = p, xh(e12, n, f)), Rf(Ol(n, t), e12, p.type); - } - Fh(n, e12.data.length, a), c?.viewProvidersResolver && c.viewProvidersResolver(c); - for (let f = 0; f < a; f++) { - let p = r[f]; - p.providersResolver && p.providersResolver(p); - } - let l = false, u = false, d = lu(e12, t, a, null); - a > 0 && (n.directiveToIndex = /* @__PURE__ */ new Map()); - for (let f = 0; f < a; f++) { - let p = r[f]; - if (n.mergedAttrs = Fr(n.mergedAttrs, p.hostAttrs), Oh(e12, n, t, d, p), Lh(d, p, o), s !== null && s.has(p)) { - let [k, P] = s.get(p); - n.directiveToIndex.set(p.type, [d, k + n.directiveStart, P + n.directiveStart]); - } else - (i === null || !i.has(p)) && n.directiveToIndex.set(p.type, d); - p.contentQueries !== null && (n.flags |= 4), (p.hostBindings !== null || p.hostAttrs !== null || p.hostVars !== 0) && (n.flags |= 64); - let h = p.type.prototype; - !l && (h.ngOnChanges || h.ngOnInit || h.ngDoCheck) && ((e12.preOrderHooks ??= []).push(n.index), l = true), !u && (h.ngOnChanges || h.ngDoCheck) && ((e12.preOrderCheckHooks ??= []).push(n.index), u = true), d++; - } - Rh(e12, n, i); -} -function Rh(e12, t, n) { - for (let r = t.directiveStart; r < t.directiveEnd; r++) { - let o = e12.data[r]; - if (n === null || !n.has(o)) - hl(0, t, o, r), hl(1, t, o, r), ml(t, r, false); - else { - let i = n.get(o); - gl(0, t, i, r), gl(1, t, i, r), ml(t, r, true); - } - } -} -function hl(e12, t, n, r) { - let o = e12 === 0 ? n.inputs : n.outputs; - for (let i in o) - if (o.hasOwnProperty(i)) { - let s; - e12 === 0 ? s = t.inputs ??= {} : s = t.outputs ??= {}, s[i] ??= [], s[i].push(r), Pu(t, i); - } -} -function gl(e12, t, n, r) { - let o = e12 === 0 ? n.inputs : n.outputs; - for (let i in o) - if (o.hasOwnProperty(i)) { - let s = o[i], a; - e12 === 0 ? a = t.hostDirectiveInputs ??= {} : a = t.hostDirectiveOutputs ??= {}, a[s] ??= [], a[s].push(r, i), Pu(t, s); - } -} -function Pu(e12, t) { - t === "class" ? e12.flags |= 8 : t === "style" && (e12.flags |= 16); -} -function ml(e12, t, n) { - let { attrs: r, inputs: o, hostDirectiveInputs: i } = e12; - if (r === null || !n && o === null || n && i === null || Ep(e12)) { - e12.initialInputs ??= [], e12.initialInputs.push(null); - return; - } - let s = null, a = 0; - for (; a < r.length; ) { - let c = r[a]; - if (c === 0) { - a += 4; - continue; - } else if (c === 5) { - a += 2; - continue; - } else if (typeof c == "number") - break; - if (!n && o.hasOwnProperty(c)) { - let l = o[c]; - for (let u of l) - if (u === t) { - s ??= [], s.push(c, r[a + 1]); - break; - } - } else if (n && i.hasOwnProperty(c)) { - let l = i[c]; - for (let u = 0; u < l.length; u += 2) - if (l[u] === t) { - s ??= [], s.push(l[u + 1], r[a + 1]); - break; - } - } - a += 2; - } - e12.initialInputs ??= [], e12.initialInputs.push(s); -} -function Oh(e12, t, n, r, o) { - e12.data[r] = o; - let i = o.factory || (o.factory = Et(o.type, true)), s = new sn(i, Mt(o), ku, null); - e12.blueprint[r] = s, n[r] = s, kh(e12, t, r, lu(e12, n, o.hostVars, Se), o); -} -function kh(e12, t, n, r, o) { - let i = o.hostBindings; - if (i) { - let s = e12.hostBindingOpCodes; - s === null && (s = e12.hostBindingOpCodes = []); - let a = ~t.index; - Ph(s) != a && s.push(a), s.push(n, r, i); - } -} -function Ph(e12) { - let t = e12.length; - for (; t > 0; ) { - let n = e12[--t]; - if (typeof n == "number" && n < 0) - return n; - } - return 0; -} -function Lh(e12, t, n) { - if (n) { - if (t.exportAs) - for (let r = 0; r < t.exportAs.length; r++) - n[t.exportAs[r]] = e12; - Mt(t) && (n[""] = e12); - } -} -function Fh(e12, t, n) { - e12.flags |= 1, e12.directiveStart = t, e12.directiveEnd = t + n, e12.providerIndexes = t; -} -function jh(e12, t, n, r, o, i, s, a) { - let c = t[m], l = c.consts, u = fe(l, s), d = Qr(c, e12, n, r, u); - return i && Sh(c, t, d, fe(l, a), o), d.mergedAttrs = Fr(d.mergedAttrs, d.attrs), d.attrs !== null && xr(d, d.attrs, false), d.mergedAttrs !== null && xr(d, d.mergedAttrs, true), c.queries !== null && c.queries.elementStart(c, d), d; -} -function Hh(e12, t) { - bf(e12, t), mi(t) && e12.queries.elementEnd(t); -} -function Vh(e12, t, n, r, o, i) { - let s = t.consts, a = fe(s, o), c = Qr(t, e12, n, r, a); - if (c.mergedAttrs = Fr(c.mergedAttrs, c.attrs), i != null) { - let l = fe(s, i); - c.localNames = []; - for (let u = 0; u < l.length; u += 2) - c.localNames.push(l[u], -1); - } - return c.attrs !== null && xr(c, c.attrs, false), c.mergedAttrs !== null && xr(c, c.mergedAttrs, true), t.queries !== null && t.queries.elementStart(t, c), c; -} -function yn(e12, t, n) { - if (n === Se) - return false; - let r = e12[t]; - return Object.is(r, n) ? false : (e12[t] = n, true); -} -function Bh(e12, t, n) { - return function r(o) { - let i = r.__ngNativeEl__; - i !== void 0 && zf(o, i); - let s = Tt(e12) ? Ce(e12.index, t) : t; - Gs(s, 5); - let a = t[x], c = yl(t, a, n, o), l = r.__ngNextListenerFn__; - for (; l; ) - c = yl(t, a, l, o) && c, l = l.__ngNextListenerFn__; - return c; - }; -} -function yl(e12, t, n, r) { - let o = g(null); - try { - return T(C.OutputStart, t, n), n(r) !== false; - } catch (i) { - return nh(e12, i), false; - } finally { - T(C.OutputEnd, t, n), g(o); - } -} -function $h(e12, t, n, r, o, i, s, a) { - let c = yi(e12), l = false, u = null; - if (!r && c && (u = zh(t, n, i, e12.index)), u !== null) { - let d = u.__ngLastListenerFn__ || u; - d.__ngNextListenerFn__ = s, u.__ngLastListenerFn__ = s, l = true; - } else { - let d = de(e12, n), f = r ? r(d) : d; - Gf(n, f, i, a), r || (a.__ngNativeEl__ = d); - let p = o.listen(f, i, a); - if (!Uh(i)) { - let h = r ? (k) => r(ee(k[e12.index])) : e12.index; - Wh(h, t, n, i, a, p, false); - } - } - return l; -} -function Uh(e12) { - return e12.startsWith("animation") || e12.startsWith("transition"); -} -function zh(e12, t, n, r) { - let o = e12.cleanup; - if (o != null) - for (let i = 0; i < o.length - 1; i += 2) { - let s = o[i]; - if (s === n && o[i + 1] === r) { - let a = t[Ct], c = o[i + 2]; - return a && a.length > c ? a[c] : null; - } - typeof s == "string" && (i += 2); - } - return null; -} -function Wh(e12, t, n, r, o, i, s) { - let a = t.firstCreatePass ? Ci(t) : null, c = wi(n), l = c.length; - c.push(o, i), a && a.push(r, e12, l, (l + 1) * (s ? -1 : 1)); -} -var ls = Symbol("BINDING"); -function Gh(e12) { - return e12.debugInfo?.className || e12.type.name || null; -} -var us = class extends Kr { - ngModule; - constructor(t) { - super(), this.ngModule = t; - } - resolveComponentFactory(t) { - let n = Ye(t); - return new dn(n, this.ngModule); - } -}; -function qh(e12) { - return Object.keys(e12).map((t) => { - let [n, r, o] = e12[t], i = { propName: n, templateName: t, isSignal: (r & zr.SignalBased) !== 0 }; - return o && (i.transform = o), i; - }); -} -function Zh(e12) { - return Object.keys(e12).map((t) => ({ propName: e12[t], templateName: t })); -} -function Qh(e12, t, n) { - let r = t instanceof Q ? t : t?.injector; - return r && e12.getStandaloneInjector !== null && (r = e12.getStandaloneInjector(r) || r), r ? new cs(n, r) : n; -} -function Yh(e12) { - let t = e12.get(st, null); - if (t === null) - throw new v(407, false); - let n = e12.get(Ou, null), r = e12.get(Ze, null), o = e12.get(jt, null, { optional: true }); - return { rendererFactory: t, sanitizer: n, changeDetectionScheduler: r, ngReflect: false, tracingService: o }; -} -function Kh(e12, t) { - let n = Lu(e12); - return ou(t, n, n === "svg" ? fc : n === "math" ? pc : null); -} -function Lu(e12) { - return (e12.selectors[0][0] || "div").toLowerCase(); -} -var dn = class extends Yr { - componentDef; - ngModule; - selector; - componentType; - ngContentSelectors; - isBoundToModule; - cachedInputs = null; - cachedOutputs = null; - get inputs() { - return this.cachedInputs ??= qh(this.componentDef.inputs), this.cachedInputs; - } - get outputs() { - return this.cachedOutputs ??= Zh(this.componentDef.outputs), this.cachedOutputs; - } - constructor(t, n) { - super(), this.componentDef = t, this.ngModule = n, this.componentType = t.type, this.selector = Dp(t.selectors), this.ngContentSelectors = t.ngContentSelectors ?? [], this.isBoundToModule = !!n; - } - create(t, n, r, o, i, s) { - T(C.DynamicComponentStart); - let a = g(null); - try { - let c = this.componentDef, l = Qh(c, o || this.ngModule, t), u = Yh(l), d = u.tracingService; - return d && d.componentCreate ? d.componentCreate(Gh(c), () => this.createComponentRef(u, l, n, r, i, s)) : this.createComponentRef(u, l, n, r, i, s); - } finally { - g(a); - } - } - createComponentRef(t, n, r, o, i, s) { - let a = this.componentDef, c = Jh(o, a, s, i), l = t.rendererFactory.createRenderer(null, a), u = o ? Gp(l, o, a.encapsulation, n) : Kh(a, l), d = s?.some(vl) || i?.some((h) => typeof h != "function" && h.bindings.some(vl)), f = js(null, c, null, 512 | cu(a), null, null, t, l, n, null, Yl(u, n, true)); - f[F] = u, ur(f); - let p = null; - try { - let h = jh(F, f, 2, "#host", () => c.directiveRegistry, true, 0); - au(l, u, h), kt(u, f), Wp(c, f, h), Zf(c, h, f), Hh(c, h), r !== void 0 && eg(h, this.ngContentSelectors, r), p = Ce(h.index, f), f[x] = p[x], Ws(c, f, null); - } catch (h) { - throw p !== null && zi(p), zi(f), h; - } finally { - T(C.DynamicComponentEnd), dr(); - } - return new Ar(this.componentType, f, !!d); - } -}; -function Jh(e12, t, n, r) { - let o = e12 ? ["ng-version", "21.2.11"] : wp(t.selectors[0]), i = null, s = null, a = 0; - if (n) - for (let u of n) - a += u[ls].requiredVars, u.create && (u.targetIdx = 0, (i ??= []).push(u)), u.update && (u.targetIdx = 0, (s ??= []).push(u)); - if (r) - for (let u = 0; u < r.length; u++) { - let d = r[u]; - if (typeof d != "function") - for (let f of d.bindings) { - a += f[ls].requiredVars; - let p = u + 1; - f.create && (f.targetIdx = p, (i ??= []).push(f)), f.update && (f.targetIdx = p, (s ??= []).push(f)); - } - } - let c = [t]; - if (r) - for (let u of r) { - let d = typeof u == "function" ? u : u.type, f = ri(d); - c.push(f); - } - return Fs(0, null, Xh(i, s), 1, a, c, null, null, null, [o], null); -} -function Xh(e12, t) { - return !e12 && !t ? null : (n) => { - if (n & 1 && e12) - for (let r of e12) - r.create(); - if (n & 2 && t) - for (let r of t) - r.update(); - }; -} -function vl(e12) { - let t = e12[ls].kind; - return t === "input" || t === "twoWay"; -} -var Ar = class extends Ru { - _rootLView; - _hasInputBindings; - instance; - hostView; - changeDetectorRef; - componentType; - location; - previousInputValues = null; - _tNode; - constructor(t, n, r) { - super(), this._rootLView = n, this._hasInputBindings = r, this._tNode = ir(n[m], F), this.location = Ft(this._tNode, n), this.instance = Ce(this._tNode.index, n)[x], this.hostView = this.changeDetectorRef = new Pt(n, void 0), this.componentType = t; - } - setInput(t, n) { - this._hasInputBindings; - let r = this._tNode; - if (this.previousInputValues ??= /* @__PURE__ */ new Map(), this.previousInputValues.has(t) && Object.is(this.previousInputValues.get(t), n)) - return; - let o = this._rootLView, i = rh(r, o[m], o, t, n); - this.previousInputValues.set(t, n); - let s = Ce(r.index, o); - Gs(s, 1); - } - get injector() { - return new ot(this._tNode, this._rootLView); - } - destroy() { - this.hostView.destroy(); - } - onDestroy(t) { - this.hostView.onDestroy(t); - } -}; -function eg(e12, t, n) { - let r = e12.projection = []; - for (let o = 0; o < t.length; o++) { - let i = n[o]; - r.push(i != null && i.length ? Array.from(i) : null); - } -} -var Jr = /* @__PURE__ */ (() => { - class e12 { - static __NG_ELEMENT_ID__ = tg; - } - return e12; -})(); -function tg() { - let e12 = pe(); - return Fu(e12, M()); -} -var ds = class e4 extends Jr { - _lContainer; - _hostTNode; - _hostLView; - constructor(t, n, r) { - super(), this._lContainer = t, this._hostTNode = n, this._hostLView = r; - } - get element() { - return Ft(this._hostTNode, this._hostLView); - } - get injector() { - return new ot(this._hostTNode, this._hostLView); - } - get parentInjector() { - let t = _s(this._hostTNode, this._hostLView); - if (xl(t)) { - let n = Mr(t, this._hostLView), r = Tr(t), o = n[m].data[r + 8]; - return new ot(o, n); - } else - return new ot(null, this._hostLView); - } - clear() { - for (; this.length > 0; ) - this.remove(this.length - 1); - } - get(t) { - let n = El(this._lContainer); - return n !== null && n[t] || null; - } - get length() { - return this._lContainer.length - S; - } - createEmbeddedView(t, n, r) { - let o, i; - typeof r == "number" ? o = r : r != null && (o = r.index, i = r.injector); - let s = ss(this._lContainer, t.ssrId), a = t.createEmbeddedViewImpl(n || {}, i, s); - return this.insertImpl(a, o, an(this._hostTNode, s)), a; - } - createComponent(t, n, r, o, i, s, a) { - let c = t && !vf(t), l; - if (c) - l = n; - else { - let P = n || {}; - l = P.index, r = P.injector, o = P.projectableNodes, i = P.environmentInjector || P.ngModuleRef, s = P.directives, a = P.bindings; - } - let u = c ? t : new dn(Ye(t)), d = r || this.parentInjector; - if (!i && u.ngModule == null) { - let lt = (c ? d : this.parentInjector).get(Q, null); - lt && (i = lt); - } - let f = Ye(u.componentType ?? {}), p = ss(this._lContainer, f?.id ?? null), h = p?.firstChild ?? null, k = u.create(d, o, h, i, s, a); - return this.insertImpl(k.hostView, l, an(this._hostTNode, p)), k; - } - insert(t, n) { - return this.insertImpl(t, n, true); - } - insertImpl(t, n, r) { - let o = t._lView; - if (gc(o)) { - let a = this.indexOf(t); - if (a !== -1) - this.detach(a); - else { - let c = o[R], l = new e4(c, c[J], c[R]); - l.detach(l.indexOf(t)); - } - } - let i = this._adjustIndex(n), s = this._lContainer; - return Zr(s, o, i, r), t.attachToViewContainerRef(), ci(Hi(s), i, t), t; - } - move(t, n) { - return this.insert(t, n); - } - indexOf(t) { - let n = El(this._lContainer); - return n !== null ? n.indexOf(t) : -1; - } - remove(t) { - let n = this._adjustIndex(t, -1), r = ln(this._lContainer, n); - r && (Qt(Hi(this._lContainer), n), Wr(r[m], r)); - } - detach(t) { - let n = this._adjustIndex(t, -1), r = ln(this._lContainer, n); - return r && Qt(Hi(this._lContainer), n) != null ? new Pt(r) : null; - } - _adjustIndex(t, n = 0) { - return t ?? this.length + n; - } -}; -function El(e12) { - return e12[Jt]; -} -function Hi(e12) { - return e12[Jt] || (e12[Jt] = []); -} -function Fu(e12, t) { - let n, r = t[e12.index]; - return re(r) ? n = r : (n = _u(r, t, null, e12), t[e12.index] = n, Hs(t, n)), rg(n, t, e12, r), new ds(n, e12, t); -} -function ng(e12, t) { - let n = e12[O], r = n.createComment(""), o = de(t, e12), i = n.parentNode(o); - return Nr(n, i, r, n.nextSibling(o), false), r; -} -var rg = sg; -var og = () => false; -function ig(e12, t, n) { - return og(e12, t, n); -} -function sg(e12, t, n, r) { - if (e12[Pe]) - return; - let o; - n.type & 8 ? o = ee(r) : o = ng(t, n), e12[Pe] = o; -} -var fs = class e5 { - queryList; - matches = null; - constructor(t) { - this.queryList = t; - } - clone() { - return new e5(this.queryList); - } - setDirty() { - this.queryList.setDirty(); - } -}; -var ps = class e6 { - queries; - constructor(t = []) { - this.queries = t; - } - createEmbeddedView(t) { - let n = t.queries; - if (n !== null) { - let r = t.contentQueries !== null ? t.contentQueries[0] : n.length, o = []; - for (let i = 0; i < r; i++) { - let s = n.getByIndex(i), a = this.queries[s.indexInDeclarationView]; - o.push(a.clone()); - } - return new e6(o); - } - return null; - } - insertView(t) { - this.dirtyQueriesWithMatches(t); - } - detachView(t) { - this.dirtyQueriesWithMatches(t); - } - finishViewCreation(t) { - this.dirtyQueriesWithMatches(t); - } - dirtyQueriesWithMatches(t) { - for (let n = 0; n < this.queries.length; n++) - Zs(t, n).matches !== null && this.queries[n].setDirty(); - } -}; -var hs = class { - flags; - read; - predicate; - constructor(t, n, r = null) { - this.flags = n, this.read = r, typeof t == "string" ? this.predicate = hg(t) : this.predicate = t; - } -}; -var gs = class e7 { - queries; - constructor(t = []) { - this.queries = t; - } - elementStart(t, n) { - for (let r = 0; r < this.queries.length; r++) - this.queries[r].elementStart(t, n); - } - elementEnd(t) { - for (let n = 0; n < this.queries.length; n++) - this.queries[n].elementEnd(t); - } - embeddedTView(t) { - let n = null; - for (let r = 0; r < this.length; r++) { - let o = n !== null ? n.length : 0, i = this.getByIndex(r).embeddedTView(t, o); - i && (i.indexInDeclarationView = r, n !== null ? n.push(i) : n = [i]); - } - return n !== null ? new e7(n) : null; - } - template(t, n) { - for (let r = 0; r < this.queries.length; r++) - this.queries[r].template(t, n); - } - getByIndex(t) { - return this.queries[t]; - } - get length() { - return this.queries.length; - } - track(t) { - this.queries.push(t); - } -}; -var ms = class e8 { - metadata; - matches = null; - indexInDeclarationView = -1; - crossesNgTemplate = false; - _declarationNodeIndex; - _appliesToNextNode = true; - constructor(t, n = -1) { - this.metadata = t, this._declarationNodeIndex = n; - } - elementStart(t, n) { - this.isApplyingToNode(n) && this.matchTNode(t, n); - } - elementEnd(t) { - this._declarationNodeIndex === t.index && (this._appliesToNextNode = false); - } - template(t, n) { - this.elementStart(t, n); - } - embeddedTView(t, n) { - return this.isApplyingToNode(t) ? (this.crossesNgTemplate = true, this.addMatch(-t.index, n), new e8(this.metadata)) : null; - } - isApplyingToNode(t) { - if (this._appliesToNextNode && (this.metadata.flags & 1) !== 1) { - let n = this._declarationNodeIndex, r = t.parent; - for (; r !== null && r.type & 8 && r.index !== n; ) - r = r.parent; - return n === (r !== null ? r.index : -1); - } - return this._appliesToNextNode; - } - matchTNode(t, n) { - let r = this.metadata.predicate; - if (Array.isArray(r)) - for (let o = 0; o < r.length; o++) { - let i = r[o]; - this.matchTNodeWithReadOption(t, n, ag(n, i)), this.matchTNodeWithReadOption(t, n, wr(n, t, i, false, false)); - } - else - r === un ? n.type & 4 && this.matchTNodeWithReadOption(t, n, -1) : this.matchTNodeWithReadOption(t, n, wr(n, t, r, false, false)); - } - matchTNodeWithReadOption(t, n, r) { - if (r !== null) { - let o = this.metadata.read; - if (o !== null) - if (o === hn || o === Jr || o === un && n.type & 4) - this.addMatch(n.index, -2); - else { - let i = wr(n, t, o, false, false); - i !== null && this.addMatch(n.index, i); - } - else - this.addMatch(n.index, r); - } - } - addMatch(t, n) { - this.matches === null ? this.matches = [t, n] : this.matches.push(t, n); - } -}; -function ag(e12, t) { - let n = e12.localNames; - if (n !== null) { - for (let r = 0; r < n.length; r += 2) - if (n[r] === t) - return n[r + 1]; - } - return null; -} -function cg(e12, t) { - return e12.type & 11 ? Ft(e12, t) : e12.type & 4 ? qs(e12, t) : null; -} -function lg(e12, t, n, r) { - return n === -1 ? cg(t, e12) : n === -2 ? ug(e12, t, r) : _r(e12, e12[m], n, t); -} -function ug(e12, t, n) { - if (n === hn) - return Ft(t, e12); - if (n === un) - return qs(t, e12); - if (n === Jr) - return Fu(t, e12); -} -function ju(e12, t, n, r) { - let o = t[ue].queries[r]; - if (o.matches === null) { - let i = e12.data, s = n.matches, a = []; - for (let c = 0; s !== null && c < s.length; c += 2) { - let l = s[c]; - if (l < 0) - a.push(null); - else { - let u = i[l]; - a.push(lg(t, u, s[c + 1], n.metadata.read)); - } - } - o.matches = a; - } - return o.matches; -} -function ys(e12, t, n, r) { - let o = e12.queries.getByIndex(n), i = o.matches; - if (i !== null) { - let s = ju(e12, t, o, n); - for (let a = 0; a < i.length; a += 2) { - let c = i[a]; - if (c > 0) - r.push(s[a / 2]); - else { - let l = i[a + 1], u = t[-c]; - for (let d = S; d < u.length; d++) { - let f = u[d]; - f[Oe] === f[R] && ys(f[m], f, l, r); - } - if (u[tt] !== null) { - let d = u[tt]; - for (let f = 0; f < d.length; f++) { - let p = d[f]; - ys(p[m], p, l, r); - } - } - } - } - } - return r; -} -function dg(e12, t) { - return e12[ue].queries[t].queryList; -} -function fg(e12, t, n) { - let r = new Sr((n & 4) === 4); - return vc(e12, t, r, r.destroy), (t[ue] ??= new ps()).queries.push(new fs(r)) - 1; -} -function pg(e12, t, n) { - let r = oe(); - return r.firstCreatePass && (gg(r, new hs(e12, t, n), -1), (t & 2) === 2 && (r.staticViewQueries = true)), fg(r, M(), t); -} -function hg(e12) { - return e12.split(",").map((t) => t.trim()); -} -function gg(e12, t, n) { - e12.queries === null && (e12.queries = new gs()), e12.queries.track(new ms(t, n)); -} -function Zs(e12, t) { - return e12.queries.getByIndex(t); -} -function mg(e12, t) { - let n = e12[m], r = Zs(n, t); - return r.crossesNgTemplate ? ys(n, e12, t, []) : ju(n, e12, r, t); -} -var Rr = class { -}; -var fn = class extends Rr { - injector; - componentFactoryResolver = new us(this); - instance = null; - constructor(t) { - super(); - let n = new qe([...t.providers, { provide: Rr, useValue: this }, { provide: Kr, useValue: this.componentFactoryResolver }], t.parent || Kt(), t.debugName, /* @__PURE__ */ new Set(["environment"])); - this.injector = n, t.runEnvironmentInitializers && n.resolveInjectorInitializers(); - } - destroy() { - this.injector.destroy(); - } - onDestroy(t) { - this.injector.onDestroy(t); - } -}; -function Hu(e12, t, n = null) { - return new fn({ providers: e12, parent: t, debugName: n, runEnvironmentInitializers: true }).injector; -} -var yg = (() => { - class e12 { - _injector; - cachedInjectors = /* @__PURE__ */ new Map(); - constructor(n) { - this._injector = n; - } - getOrCreateStandaloneInjector(n) { - if (!n.standalone) - return null; - if (!this.cachedInjectors.has(n)) { - let r = di(false, n.type), o = r.length > 0 ? Hu([r], this._injector, "") : null; - this.cachedInjectors.set(n, o); - } - return this.cachedInjectors.get(n); - } - ngOnDestroy() { - try { - for (let n of this.cachedInjectors.values()) - n !== null && n.destroy(); - } finally { - this.cachedInjectors.clear(); - } - } - static \u0275prov = _({ token: e12, providedIn: "environment", factory: () => new e12(w(Q)) }); - } - return e12; -})(); -function Qs(e12) { - return Tl(() => { - let t = Dg(e12), n = A(N({}, t), { decls: e12.decls, vars: e12.vars, template: e12.template, consts: e12.consts || null, ngContentSelectors: e12.ngContentSelectors, onPush: e12.changeDetection === Ss.OnPush, directiveDefs: null, pipeDefs: null, dependencies: t.standalone && e12.dependencies || null, getStandaloneInjector: t.standalone ? (o) => o.get(yg).getOrCreateStandaloneInjector(n) : null, getExternalStyles: null, signals: e12.signals ?? false, data: e12.data || {}, encapsulation: e12.encapsulation || ie.Emulated, styles: e12.styles || Ne, _: null, schemas: e12.schemas || null, tView: null, id: "" }); - t.standalone && ct("NgStandalone"), wg(n); - let r = e12.dependencies; - return n.directiveDefs = Il(r, vg), n.pipeDefs = Il(r, Ka), n.id = Cg(n), n; - }); -} -function vg(e12) { - return Ye(e12) || ri(e12); -} -function Eg(e12, t) { - if (e12 == null) - return Ke; - let n = {}; - for (let r in e12) - if (e12.hasOwnProperty(r)) { - let o = e12[r], i, s, a, c; - Array.isArray(o) ? (a = o[0], i = o[1], s = o[2] ?? i, c = o[3] || null) : (i = o, s = o, a = zr.None, c = null), n[i] = [r, a, c], t[i] = s; - } - return n; -} -function Ig(e12) { - if (e12 == null) - return Ke; - let t = {}; - for (let n in e12) - e12.hasOwnProperty(n) && (t[e12[n]] = n); - return t; -} -function Dg(e12) { - let t = {}; - return { type: e12.type, providersResolver: null, viewProvidersResolver: null, factory: null, hostBindings: e12.hostBindings || null, hostVars: e12.hostVars || 0, hostAttrs: e12.hostAttrs || null, contentQueries: e12.contentQueries || null, declaredInputs: t, inputConfig: e12.inputs || Ke, exportAs: e12.exportAs || null, standalone: e12.standalone ?? true, signals: e12.signals === true, selectors: e12.selectors || Ne, viewQuery: e12.viewQuery || null, features: e12.features || null, setInput: null, resolveHostDirectives: null, hostDirectives: null, controlDef: null, inputs: Eg(e12.inputs, t), outputs: Ig(e12.outputs), debugInfo: null }; -} -function wg(e12) { - e12.features?.forEach((t) => t(e12)); -} -function Il(e12, t) { - return e12 ? () => { - let n = typeof e12 == "function" ? e12() : e12, r = []; - for (let o of n) { - let i = t(o); - i !== null && r.push(i); - } - return r; - } : null; -} -function Cg(e12) { - let t = 0, n = typeof e12.consts == "function" ? "" : e12.consts, r = [e12.selectors, e12.ngContentSelectors, e12.hostVars, e12.hostAttrs, n, e12.vars, e12.decls, e12.encapsulation, e12.standalone, e12.signals, e12.exportAs, JSON.stringify(e12.inputs), JSON.stringify(e12.outputs), Object.getOwnPropertyNames(e12.type.prototype), !!e12.contentQueries, !!e12.viewQuery]; - for (let i of r.join("|")) - t = Math.imul(31, t) + i.charCodeAt(0) << 0; - return t += 2147483648, "c" + t; -} -function bg(e12, t, n, r, o, i, s, a) { - if (n.firstCreatePass) { - e12.mergedAttrs = Fr(e12.mergedAttrs, e12.attrs); - let u = e12.tView = Fs(2, e12, o, i, s, n.directiveRegistry, n.pipeRegistry, null, n.schemas, n.consts, null); - n.queries !== null && (n.queries.template(n, e12), u.queries = n.queries.embeddedTView(e12)); - } - a && (e12.flags |= a), Nt(e12, false); - let c = Tg(n, t, e12, r); - fr() && Us(n, t, c, e12), kt(c, t); - let l = _u(c, t, c, e12); - t[r + F] = l, Hs(t, l), ig(l, e12, t); -} -function Or(e12, t, n, r, o, i, s, a, c, l, u) { - let d = n + F, f; - if (t.firstCreatePass) { - if (f = Qr(t, d, 4, s || null, a || null), l != null) { - let p = fe(t.consts, l); - f.localNames = []; - for (let h = 0; h < p.length; h += 2) - f.localNames.push(p[h], -1); - } - } else - f = t.data[d]; - return bg(f, e12, t, n, r, o, i, c), l != null && yu(e12, f, u), f; -} -var Tg = Mg; -function Mg(e12, t, n, r) { - return pr(true), t[O].createComment(""); -} -var Ys = new D(""); -function Ks(e12) { - return !!e12 && typeof e12.then == "function"; -} -function Vu(e12) { - return !!e12 && typeof e12.subscribe == "function"; -} -var Bu = new D(""); -var Js = (() => { - class e12 { - resolve; - reject; - initialized = false; - done = false; - donePromise = new Promise((n, r) => { - this.resolve = n, this.reject = r; - }); - appInits = E(Bu, { optional: true }) ?? []; - injector = E(ce); - constructor() { - } - runInitializers() { - if (this.initialized) - return; - let n = []; - for (let o of this.appInits) { - let i = nr(this.injector, o); - if (Ks(i)) - n.push(i); - else if (Vu(i)) { - let s = new Promise((a, c) => { - i.subscribe({ complete: a, error: c }); - }); - n.push(s); - } - } - let r = () => { - this.done = true, this.resolve(); - }; - Promise.all(n).then(() => { - r(); - }).catch((o) => { - this.reject(o); - }), n.length === 0 && r(), this.initialized = true; - } - static \u0275fac = function(r) { - return new (r || e12)(); - }; - static \u0275prov = _({ token: e12, factory: e12.\u0275fac, providedIn: "root" }); - } - return e12; -})(); -var $u = new D(""); -function Uu() { - To(() => { - let e12 = ""; - throw new v(600, e12); - }); -} -function zu(e12) { - return e12.isBoundToModule; -} -var _g = 10; -var vn = (() => { - class e12 { - _runningTick = false; - _destroyed = false; - _destroyListeners = []; - _views = []; - internalErrorHandler = E(rt); - afterRenderManager = E(du); - zonelessEnabled = E(tn); - rootEffectScheduler = E(gr); - dirtyFlags = 0; - tracingSnapshot = null; - allTestViews = /* @__PURE__ */ new Set(); - autoDetectTestViews = /* @__PURE__ */ new Set(); - includeAllTestViews = false; - afterTick = new ye(); - get allViews() { - return [...(this.includeAllTestViews ? this.allTestViews : this.autoDetectTestViews).keys(), ...this._views]; - } - get destroyed() { - return this._destroyed; - } - componentTypes = []; - components = []; - internalPendingTask = E(At); - get isStable() { - return this.internalPendingTask.hasPendingTasksObservable.pipe(Fo((n) => !n)); - } - constructor() { - E(jt, { optional: true }); - } - whenStable() { - let n; - return new Promise((r) => { - n = this.isStable.subscribe({ next: (o) => { - o && r(); - } }); - }).finally(() => { - n.unsubscribe(); - }); - } - _injector = E(Q); - _rendererFactory = null; - get injector() { - return this._injector; - } - bootstrap(n, r) { - return this.bootstrapImpl(n, r); - } - bootstrapImpl(n, r, o = ce.NULL) { - return this._injector.get(Y).run(() => { - T(C.BootstrapComponentStart); - let s = n instanceof Yr; - if (!this._injector.get(Js).done) { - let h = ""; - throw new v(405, h); - } - let c; - s ? c = n : c = this._injector.get(Kr).resolveComponentFactory(n), this.componentTypes.push(c.componentType); - let l = zu(c) ? void 0 : this._injector.get(Rr), u = r || c.selector, d = c.create(o, [], u, l), f = d.location.nativeElement, p = d.injector.get(Ys, null); - return p?.registerApplication(f), d.onDestroy(() => { - this.detachView(d.hostView), on(this.components, d), p?.unregisterApplication(f); - }), this._loadComponent(d), T(C.BootstrapComponentEnd, d), d; - }); - } - tick() { - this.zonelessEnabled || (this.dirtyFlags |= 1), this._tick(); - } - _tick() { - T(C.ChangeDetectionStart), this.tracingSnapshot !== null ? this.tracingSnapshot.run(Bs.CHANGE_DETECTION, this.tickImpl) : this.tickImpl(); - } - tickImpl = () => { - if (this._runningTick) - throw T(C.ChangeDetectionEnd), new v(101, false); - let n = g(null); - try { - this._runningTick = true, this.synchronize(); - } finally { - this._runningTick = false, this.tracingSnapshot?.dispose(), this.tracingSnapshot = null, g(n), this.afterTick.next(), T(C.ChangeDetectionEnd); - } - }; - synchronize() { - this._rendererFactory === null && !this._injector.destroyed && (this._rendererFactory = this._injector.get(st, null, { optional: true })); - let n = 0; - for (; this.dirtyFlags !== 0 && n++ < _g; ) { - T(C.ChangeDetectionSyncStart); - try { - this.synchronizeOnce(); - } finally { - T(C.ChangeDetectionSyncEnd); - } - } - } - synchronizeOnce() { - this.dirtyFlags & 16 && (this.dirtyFlags &= -17, this.rootEffectScheduler.flush()); - let n = false; - if (this.dirtyFlags & 7) { - let r = !!(this.dirtyFlags & 1); - this.dirtyFlags &= -8, this.dirtyFlags |= 8; - for (let { _lView: o } of this.allViews) { - if (!r && !Xt(o)) - continue; - let i = r && !this.zonelessEnabled ? 0 : 1; - Cu(o, i), n = true; - } - if (this.dirtyFlags &= -5, this.syncDirtyFlagsWithViews(), this.dirtyFlags & 23) - return; - } - n || (this._rendererFactory?.begin?.(), this._rendererFactory?.end?.()), this.dirtyFlags & 8 && (this.dirtyFlags &= -9, this.afterRenderManager.execute()), this.syncDirtyFlagsWithViews(); - } - syncDirtyFlagsWithViews() { - if (this.allViews.some(({ _lView: n }) => Xt(n))) { - this.dirtyFlags |= 2; - return; - } else - this.dirtyFlags &= -8; - } - attachView(n) { - let r = n; - this._views.push(r), r.attachToAppRef(this); - } - detachView(n) { - let r = n; - on(this._views, r), r.detachFromAppRef(); - } - _loadComponent(n) { - this.attachView(n.hostView); - try { - this.tick(); - } catch (o) { - this.internalErrorHandler(o); - } - this.components.push(n), this._injector.get($u, []).forEach((o) => o(n)); - } - ngOnDestroy() { - if (!this._destroyed) - try { - this._destroyListeners.forEach((n) => n()), this._views.slice().forEach((n) => n.destroy()); - } finally { - this._destroyed = true, this._views = [], this._destroyListeners = []; - } - } - onDestroy(n) { - return this._destroyListeners.push(n), () => on(this._destroyListeners, n); - } - destroy() { - if (this._destroyed) - throw new v(406, false); - let n = this._injector; - n.destroy && !n.destroyed && n.destroy(); - } - get viewCount() { - return this._views.length; - } - static \u0275fac = function(r) { - return new (r || e12)(); - }; - static \u0275prov = _({ token: e12, factory: e12.\u0275fac, providedIn: "root" }); - } - return e12; -})(); -function on(e12, t) { - let n = e12.indexOf(t); - n > -1 && e12.splice(n, 1); -} -var vs = class { - destroy(t) { - } - updateValue(t, n) { - } - swap(t, n) { - let r = Math.min(t, n), o = Math.max(t, n), i = this.detach(o); - if (o - r > 1) { - let s = this.detach(r); - this.attach(r, i), this.attach(o, s); - } else - this.attach(r, i); - } - move(t, n) { - this.attach(n, this.detach(t)); - } -}; -function Vi(e12, t, n, r, o) { - return e12 === n && Object.is(t, r) ? 1 : Object.is(o(e12, t), o(n, r)) ? -1 : 0; -} -function Sg(e12, t, n, r) { - let o, i, s = 0, a = e12.length - 1, c = void 0; - if (Array.isArray(t)) { - g(r); - let l = t.length - 1; - for (g(null); s <= a && s <= l; ) { - let u = e12.at(s), d = t[s], f = Vi(s, u, s, d, n); - if (f !== 0) { - f < 0 && e12.updateValue(s, d), s++; - continue; - } - let p = e12.at(a), h = t[l], k = Vi(a, p, l, h, n); - if (k !== 0) { - k < 0 && e12.updateValue(a, h), a--, l--; - continue; - } - let P = n(s, u), lt = n(a, p), Vt = n(s, d); - if (Object.is(Vt, lt)) { - let po = n(l, h); - Object.is(po, P) ? (e12.swap(s, a), e12.updateValue(a, h), l--, a--) : e12.move(a, s), e12.updateValue(s, d), s++; - continue; - } - if (o ??= new kr(), i ??= wl(e12, s, a, n), Es(e12, o, s, Vt)) - e12.updateValue(s, d), s++, a++; - else if (i.has(Vt)) - o.set(P, e12.detach(s)), a--; - else { - let po = e12.create(s, t[s]); - e12.attach(s, po), s++, a++; - } - } - for (; s <= l; ) - Dl(e12, o, n, s, t[s]), s++; - } else if (t != null) { - g(r); - let l = t[Symbol.iterator](); - g(null); - let u = l.next(); - for (; !u.done && s <= a; ) { - let d = e12.at(s), f = u.value, p = Vi(s, d, s, f, n); - if (p !== 0) - p < 0 && e12.updateValue(s, f), s++, u = l.next(); - else { - o ??= new kr(), i ??= wl(e12, s, a, n); - let h = n(s, f); - if (Es(e12, o, s, h)) - e12.updateValue(s, f), s++, a++, u = l.next(); - else if (!i.has(h)) - e12.attach(s, e12.create(s, f)), s++, a++, u = l.next(); - else { - let k = n(s, d); - o.set(k, e12.detach(s)), a--; - } - } - } - for (; !u.done; ) - Dl(e12, o, n, e12.length, u.value), u = l.next(); - } - for (; s <= a; ) - e12.destroy(e12.detach(a--)); - o?.forEach((l) => { - e12.destroy(l); - }); -} -function Es(e12, t, n, r) { - return t !== void 0 && t.has(r) ? (e12.attach(n, t.get(r)), t.delete(r), true) : false; -} -function Dl(e12, t, n, r, o) { - if (Es(e12, t, r, n(r, o))) - e12.updateValue(r, o); - else { - let i = e12.create(r, o); - e12.attach(r, i); - } -} -function wl(e12, t, n, r) { - let o = /* @__PURE__ */ new Set(); - for (let i = t; i <= n; i++) - o.add(r(i, e12.at(i))); - return o; -} -var kr = class { - kvMap = /* @__PURE__ */ new Map(); - _vMap = void 0; - has(t) { - return this.kvMap.has(t); - } - delete(t) { - if (!this.has(t)) - return false; - let n = this.kvMap.get(t); - return this._vMap !== void 0 && this._vMap.has(n) ? (this.kvMap.set(t, this._vMap.get(n)), this._vMap.delete(n)) : this.kvMap.delete(t), true; - } - get(t) { - return this.kvMap.get(t); - } - set(t, n) { - if (this.kvMap.has(t)) { - let r = this.kvMap.get(t); - this._vMap === void 0 && (this._vMap = /* @__PURE__ */ new Map()); - let o = this._vMap; - for (; o.has(r); ) - r = o.get(r); - o.set(r, n); - } else - this.kvMap.set(t, n); - } - forEach(t) { - for (let [n, r] of this.kvMap) - if (t(r, n), this._vMap !== void 0) { - let o = this._vMap; - for (; o.has(r); ) - r = o.get(r), t(r, n); - } - } -}; -function Xs(e12, t, n, r, o, i, s, a) { - ct("NgControlFlow"); - let c = M(), l = oe(), u = fe(l.consts, i); - return Or(c, l, e12, t, n, r, o, u, 256, s, a), ea; -} -function ea(e12, t, n, r, o, i, s, a) { - ct("NgControlFlow"); - let c = M(), l = oe(), u = fe(l.consts, i); - return Or(c, l, e12, t, n, r, o, u, 512, s, a), ea; -} -function ta(e12, t) { - ct("NgControlFlow"); - let n = M(), r = en(), o = n[r] !== Se ? n[r] : -1, i = o !== -1 ? Pr(n, F + o) : void 0, s = 0; - if (yn(n, r, e12)) { - let a = g(null); - try { - if (i !== void 0 && Nu(i, s), e12 !== -1) { - let c = F + e12, l = Pr(n, c), u = Cs(n[m], c), d = Au(l, u, n), f = qr(n, u, t, { dehydratedView: d }); - Zr(l, f, s, an(u, d)); - } - } finally { - g(a); - } - } else if (i !== void 0) { - let a = Su(i, s); - a !== void 0 && (a[x] = t); - } -} -var Is = class { - lContainer; - $implicit; - $index; - constructor(t, n, r) { - this.lContainer = t, this.$implicit = n, this.$index = r; - } - get $count() { - return this.lContainer.length - S; - } -}; -function Xr(e12, t) { - return t; -} -var Ds = class { - hasEmptyBlock; - trackByFn; - liveCollection; - constructor(t, n, r) { - this.hasEmptyBlock = t, this.trackByFn = n, this.liveCollection = r; - } -}; -function eo(e12, t, n, r, o, i, s, a, c, l, u, d, f) { - ct("NgControlFlow"); - let p = M(), h = oe(), k = c !== void 0, P = M(), lt = a ? s.bind(P[X][x]) : s, Vt = new Ds(k, lt); - P[F + e12] = Vt, Or(p, h, e12 + 1, t, n, r, o, fe(h.consts, i), 256), k && Or(p, h, e12 + 2, c, l, u, d, fe(h.consts, f), 512); -} -var ws = class extends vs { - lContainer; - hostLView; - templateTNode; - operationsCounter = void 0; - needsIndexUpdate = false; - constructor(t, n, r) { - super(), this.lContainer = t, this.hostLView = n, this.templateTNode = r; - } - get length() { - return this.lContainer.length - S; - } - at(t) { - return this.getLView(t)[x].$implicit; - } - attach(t, n) { - let r = n[wt]; - this.needsIndexUpdate ||= t !== this.length, Zr(this.lContainer, n, t, an(this.templateTNode, r)), Ng(this.lContainer, t); - } - detach(t) { - return this.needsIndexUpdate ||= t !== this.length - 1, xg(this.lContainer, t), Ag(this.lContainer, t); - } - create(t, n) { - let r = ss(this.lContainer, this.templateTNode.tView.ssrId); - return qr(this.hostLView, this.templateTNode, new Is(this.lContainer, n, t), { dehydratedView: r }); - } - destroy(t) { - Wr(t[m], t); - } - updateValue(t, n) { - this.getLView(t)[x].$implicit = n; - } - reset() { - this.needsIndexUpdate = false; - } - updateIndexes() { - if (this.needsIndexUpdate) - for (let t = 0; t < this.length; t++) - this.getLView(t)[x].$index = t; - } - getLView(t) { - return Rg(this.lContainer, t); - } -}; -function to(e12) { - let t = g(null), n = Fe(); - try { - let r = M(), o = r[m], i = r[n], s = n + 1, a = Pr(r, s); - if (i.liveCollection === void 0) { - let l = Cs(o, s); - i.liveCollection = new ws(a, r, l); - } else - i.liveCollection.reset(); - let c = i.liveCollection; - if (Sg(c, e12, i.trackByFn, t), c.updateIndexes(), i.hasEmptyBlock) { - let l = en(), u = c.length === 0; - if (yn(r, l, u)) { - let d = n + 2, f = Pr(r, d); - if (u) { - let p = Cs(o, d), h = Au(f, p, r), k = qr(r, p, void 0, { dehydratedView: h }); - Zr(f, k, 0, an(p, h)); - } else - o.firstUpdatePass && bh(f), Nu(f, 0); - } - } - } finally { - g(t); - } -} -function Pr(e12, t) { - return e12[t]; -} -function Ng(e12, t) { - if (e12.length <= S) - return; - let n = S + t, r = e12[n], o = r ? r[ke] : void 0; - if (r && o && o.detachedLeaveAnimationFns && o.detachedLeaveAnimationFns.length > 0) { - let i = r[De]; - Np(i, o), it.delete(r[we]), o.detachedLeaveAnimationFns = void 0; - } -} -function xg(e12, t) { - if (e12.length <= S) - return; - let n = S + t, r = e12[n], o = r ? r[ke] : void 0; - o && o.leave && o.leave.size > 0 && (o.detachedLeaveAnimationFns = []); -} -function Ag(e12, t) { - return ln(e12, t); -} -function Rg(e12, t) { - return Su(e12, t); -} -function Cs(e12, t) { - return ir(e12, t); -} -function j(e12, t, n, r) { - let o = M(), i = o[m], s = e12 + F, a = i.firstCreatePass ? Vh(s, i, 2, t, n, r) : i.data[s]; - return eh(a, o, e12, t, Og), r != null && yu(o, a), j; -} -function B() { - let e12 = pe(), t = th(e12); - return Cc(t) && bc(), Dc(), B; -} -var Og = (e12, t, n, r, o) => (pr(true), ou(t[O], r, jc())); -function me(e12, t, n) { - let r = M(), o = en(); - if (yn(r, o, t)) { - let i = oe(), s = Fc(); - Qp(s, r, e12, t, r[O], n); - } - return me; -} -var En = "en-US"; -var kg = En; -function Wu(e12) { - typeof e12 == "string" && (kg = e12.toLowerCase().replace(/_/g, "-")); -} -function Ve(e12, t, n) { - let r = M(), o = oe(), i = pe(); - return (i.type & 3 || n) && $h(i, o, r, n, r[O], e12, t, Bh(i, r, t)), Ve; -} -function na(e12 = 1) { - return Lc(e12); -} -function no(e12, t, n) { - return pg(e12, t, n), no; -} -function ra(e12) { - let t = M(), n = oe(), r = _i(); - lr(r + 1); - let o = Zs(n, r); - if (e12.dirty && hc(t) === ((o.metadata.flags & 2) === 2)) { - if (o.matches === null) - e12.reset([]); - else { - let i = mg(t, r); - e12.reset(i, jf), e12.notifyOnChanges(); - } - return true; - } - return false; -} -function oa() { - return dg(M(), _i()); -} -function Er(e12, t) { - return e12 << 17 | t << 2; -} -function at(e12) { - return e12 >> 17 & 32767; -} -function Pg(e12) { - return (e12 & 2) == 2; -} -function Lg(e12, t) { - return e12 & 131071 | t << 17; -} -function bs(e12) { - return e12 | 2; -} -function Lt(e12) { - return (e12 & 131068) >> 2; -} -function Bi(e12, t) { - return e12 & -131069 | t << 2; -} -function Fg(e12) { - return (e12 & 1) === 1; -} -function Ts(e12) { - return e12 | 1; -} -function jg(e12, t, n, r, o, i) { - let s = i ? t.classBindings : t.styleBindings, a = at(s), c = Lt(s); - e12[r] = n; - let l = false, u; - if (Array.isArray(n)) { - let d = n; - u = d[1], (u === null || It(d, u) > 0) && (l = true); - } else - u = n; - if (o) - if (c !== 0) { - let f = at(e12[a + 1]); - e12[r + 1] = Er(f, a), f !== 0 && (e12[f + 1] = Bi(e12[f + 1], r)), e12[a + 1] = Lg(e12[a + 1], r); - } else - e12[r + 1] = Er(a, 0), a !== 0 && (e12[a + 1] = Bi(e12[a + 1], r)), a = r; - else - e12[r + 1] = Er(c, 0), a === 0 ? a = r : e12[c + 1] = Bi(e12[c + 1], r), c = r; - l && (e12[r + 1] = bs(e12[r + 1])), Cl(e12, u, r, true), Cl(e12, u, r, false), Hg(t, u, e12, r, i), s = Er(a, c), i ? t.classBindings = s : t.styleBindings = s; -} -function Hg(e12, t, n, r, o) { - let i = o ? e12.residualClasses : e12.residualStyles; - i != null && typeof t == "string" && It(i, t) >= 0 && (n[r + 1] = Ts(n[r + 1])); -} -function Cl(e12, t, n, r) { - let o = e12[n + 1], i = t === null, s = r ? at(o) : Lt(o), a = false; - for (; s !== 0 && (a === false || i); ) { - let c = e12[s], l = e12[s + 1]; - Vg(c, t) && (a = true, e12[s + 1] = r ? Ts(l) : bs(l)), s = r ? at(l) : Lt(l); - } - a && (e12[n + 1] = r ? bs(o) : Ts(o)); -} -function Vg(e12, t) { - return e12 === null || t == null || (Array.isArray(e12) ? e12[1] : e12) === t ? true : Array.isArray(e12) && typeof t == "string" ? It(e12, t) >= 0 : false; -} -function ro(e12, t) { - return Bg(e12, t, null, true), ro; -} -function Bg(e12, t, n, r) { - let o = M(), i = oe(), s = Sc(2); - if (i.firstUpdatePass && Ug(i, e12, s, r), t !== Se && yn(o, s, t)) { - let a = i.data[Fe()]; - Zg(i, a, o, o[O], e12, o[s + 1] = Qg(t, n), r, s); - } -} -function $g(e12, t) { - return t >= e12.expandoStartIndex; -} -function Ug(e12, t, n, r) { - let o = e12.data; - if (o[n + 1] === null) { - let i = o[Fe()], s = $g(e12, n); - Yg(i, r) && t === null && !s && (t = false), t = zg(o, i, t, r), jg(o, i, t, n, s, r); - } -} -function zg(e12, t, n, r) { - let o = Rc(e12), i = r ? t.residualClasses : t.residualStyles; - if (o === null) - (r ? t.classBindings : t.styleBindings) === 0 && (n = $i(null, e12, t, n, r), n = pn(n, t.attrs, r), i = null); - else { - let s = t.directiveStylingLast; - if (s === -1 || e12[s] !== o) - if (n = $i(o, e12, t, n, r), i === null) { - let c = Wg(e12, t, r); - c !== void 0 && Array.isArray(c) && (c = $i(null, e12, t, c[1], r), c = pn(c, t.attrs, r), Gg(e12, t, r, c)); - } else - i = qg(e12, t, r); - } - return i !== void 0 && (r ? t.residualClasses = i : t.residualStyles = i), n; -} -function Wg(e12, t, n) { - let r = n ? t.classBindings : t.styleBindings; - if (Lt(r) !== 0) - return e12[at(r)]; -} -function Gg(e12, t, n, r) { - let o = n ? t.classBindings : t.styleBindings; - e12[at(o)] = r; -} -function qg(e12, t, n) { - let r, o = t.directiveEnd; - for (let i = 1 + t.directiveStylingLast; i < o; i++) { - let s = e12[i].hostAttrs; - r = pn(r, s, n); - } - return pn(r, t.attrs, n); -} -function $i(e12, t, n, r, o) { - let i = null, s = n.directiveEnd, a = n.directiveStylingLast; - for (a === -1 ? a = n.directiveStart : a++; a < s && (i = t[a], r = pn(r, i.hostAttrs, o), i !== e12); ) - a++; - return e12 !== null && (n.directiveStylingLast = a), r; -} -function pn(e12, t, n) { - let r = n ? 1 : 2, o = -1; - if (t !== null) - for (let i = 0; i < t.length; i++) { - let s = t[i]; - typeof s == "number" ? o = s : o === r && (Array.isArray(e12) || (e12 = e12 === void 0 ? [] : ["", e12]), oc(e12, s, n ? true : t[++i])); - } - return e12 === void 0 ? null : e12; -} -function Zg(e12, t, n, r, o, i, s, a) { - if (!(t.type & 3)) - return; - let c = e12.data, l = c[a + 1], u = Fg(l) ? bl(c, t, n, o, Lt(l), s) : void 0; - if (!Lr(u)) { - Lr(i) || Pg(l) && (i = bl(c, null, n, o, a, s)); - let d = vi(Fe(), n); - zp(r, s, d, o, i); - } -} -function bl(e12, t, n, r, o, i) { - let s = t === null, a; - for (; o > 0; ) { - let c = e12[o], l = Array.isArray(c), u = l ? c[1] : c, d = u === null, f = n[o + 1]; - f === Se && (f = d ? Ne : void 0); - let p = d ? tr(f, r) : u === r ? f : void 0; - if (l && !Lr(p) && (p = tr(c, r)), Lr(p) && (a = p, s)) - return a; - let h = e12[o + 1]; - o = s ? at(h) : Lt(h); - } - if (t !== null) { - let c = i ? t.residualClasses : t.residualStyles; - c != null && (a = tr(c, r)); - } - return a; -} -function Lr(e12) { - return e12 !== void 0; -} -function Qg(e12, t) { - return e12 == null || e12 === "" || (typeof t == "string" ? e12 = e12 + t : typeof e12 == "object" && (e12 = Qn(Me(e12)))), e12; -} -function Yg(e12, t) { - return (e12.flags & (t ? 8 : 16)) !== 0; -} -function se(e12, t = "") { - let n = M(), r = oe(), o = e12 + F, i = r.firstCreatePass ? Qr(r, o, 1, t, null) : r.data[o], s = Kg(r, n, i, t); - n[o] = s, fr() && Us(r, n, s, i), Nt(i, false); -} -var Kg = (e12, t, n, r) => (pr(true), pp(t[O], r)); -function Jg(e12, t, n, r = "") { - return yn(e12, en(), n) ? t + ii(n) + r : Se; -} -function Be(e12) { - return ia("", e12), Be; -} -function ia(e12, t, n) { - let r = M(), o = Jg(r, e12, t, n); - return o !== Se && Xg(r, Fe(), o), ia; -} -function Xg(e12, t, n) { - let r = vi(t, e12); - hp(e12[O], r, n); -} -var Gu = (() => { - class e12 { - applicationErrorHandler = E(rt); - appRef = E(vn); - taskService = E(At); - ngZone = E(Y); - zonelessEnabled = E(tn); - tracing = E(jt, { optional: true }); - zoneIsDefined = typeof Zone < "u" && !!Zone.root.run; - schedulerTickApplyArgs = [{ data: { __scheduler_tick__: true } }]; - subscriptions = new H(); - angularZoneId = this.zoneIsDefined ? this.ngZone._inner?.get(qt) : null; - scheduleInRootZone = !this.zonelessEnabled && this.zoneIsDefined && (E(ki, { optional: true }) ?? false); - cancelScheduledCallback = null; - useMicrotaskScheduler = false; - runningTick = false; - pendingRenderTaskId = null; - constructor() { - this.subscriptions.add(this.appRef.afterTick.subscribe(() => { - let n = this.taskService.add(); - if (!this.runningTick && (this.cleanup(), !this.zonelessEnabled || this.appRef.includeAllTestViews)) { - this.taskService.remove(n); - return; - } - this.switchToMicrotaskScheduler(), this.taskService.remove(n); - })), this.subscriptions.add(this.ngZone.onUnstable.subscribe(() => { - this.runningTick || this.cleanup(); - })); - } - switchToMicrotaskScheduler() { - this.ngZone.runOutsideAngular(() => { - let n = this.taskService.add(); - this.useMicrotaskScheduler = true, queueMicrotask(() => { - this.useMicrotaskScheduler = false, this.taskService.remove(n); - }); - }); - } - notify(n) { - if (!this.zonelessEnabled && n === 5) - return; - 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 6: { - this.appRef.dirtyFlags |= 2; - break; - } - case 12: { - this.appRef.dirtyFlags |= 16; - break; - } - case 13: { - this.appRef.dirtyFlags |= 2; - break; - } - case 11: - break; - default: - this.appRef.dirtyFlags |= 8; - } - if (this.appRef.tracingSnapshot = this.tracing?.snapshot(this.appRef.tracingSnapshot) ?? null, !this.shouldScheduleTick()) - return; - let r = this.useMicrotaskScheduler ? Uc : xi; - this.pendingRenderTaskId = this.taskService.add(), this.scheduleInRootZone ? this.cancelScheduledCallback = Zone.root.run(() => r(() => this.tick())) : this.cancelScheduledCallback = this.ngZone.runOutsideAngular(() => r(() => this.tick())); - } - shouldScheduleTick() { - return !(this.appRef.destroyed || this.pendingRenderTaskId !== null || this.runningTick || this.appRef._runningTick || !this.zonelessEnabled && this.zoneIsDefined && Zone.current.get(qt + this.angularZoneId)); - } - tick() { - if (this.runningTick || this.appRef.destroyed) - return; - if (this.appRef.dirtyFlags === 0) { - this.cleanup(); - return; - } - !this.zonelessEnabled && this.appRef.dirtyFlags & 7 && (this.appRef.dirtyFlags |= 1); - let n = this.taskService.add(); - try { - this.ngZone.run(() => { - this.runningTick = true, this.appRef._tick(); - }, void 0, this.schedulerTickApplyArgs); - } catch (r) { - this.applicationErrorHandler(r); - } finally { - this.taskService.remove(n), this.cleanup(); - } - } - ngOnDestroy() { - this.subscriptions.unsubscribe(), this.cleanup(); - } - cleanup() { - if (this.runningTick = false, this.cancelScheduledCallback?.(), this.cancelScheduledCallback = null, this.pendingRenderTaskId !== null) { - let n = this.pendingRenderTaskId; - this.pendingRenderTaskId = null, this.taskService.remove(n); - } - } - static \u0275fac = function(r) { - return new (r || e12)(); - }; - static \u0275prov = _({ token: e12, factory: e12.\u0275fac, providedIn: "root" }); - } - return e12; -})(); -function sa() { - return ct("NgZoneless"), Dt([...aa(), []]); -} -function aa() { - return [{ provide: Ze, useExisting: Gu }, { provide: Y, useClass: Zt }, { provide: tn, useValue: true }]; -} -function em() { - return typeof $localize < "u" && $localize.locale || En; -} -var ca = new D("", { factory: () => E(ca, { optional: true, skipSelf: true }) || em() }); -function $e(e12, t) { - return On(e12, t?.equal); -} -var la = new D(""); -var um = new D(""); -function In(e12) { - return !e12.moduleRef; -} -function dm(e12) { - let t = In(e12) ? e12.r3Injector : e12.moduleRef.injector, n = t.get(Y); - return n.run(() => { - In(e12) ? e12.r3Injector.resolveInjectorInitializers() : e12.moduleRef.resolveInjectorInitializers(); - let r = t.get(rt), o; - if (n.runOutsideAngular(() => { - o = n.onError.subscribe({ next: r }); - }), In(e12)) { - let i = () => t.destroy(), s = e12.platformInjector.get(la); - s.add(i), t.onDestroy(() => { - o.unsubscribe(), s.delete(i); - }); - } else { - let i = () => e12.moduleRef.destroy(), s = e12.platformInjector.get(la); - s.add(i), e12.moduleRef.onDestroy(() => { - on(e12.allPlatformModules, e12.moduleRef), o.unsubscribe(), s.delete(i); - }); - } - return pm(r, n, () => { - let i = t.get(At), s = i.add(), a = t.get(Js); - return a.runInitializers(), a.donePromise.then(() => { - let c = t.get(ca, En); - if (Wu(c || En), !t.get(um, true)) - return In(e12) ? t.get(vn) : (e12.allPlatformModules.push(e12.moduleRef), e12.moduleRef); - if (In(e12)) { - let u = t.get(vn); - return e12.rootComponent !== void 0 && u.bootstrap(e12.rootComponent), u; - } else - return fm?.(e12.moduleRef, e12.allPlatformModules), e12.moduleRef; - }).finally(() => { - i.remove(s); - }); - }); - }); -} -var fm; -function pm(e12, t, n) { - try { - let r = n(); - return Ks(r) ? r.catch((o) => { - throw t.runOutsideAngular(() => e12(o)), o; - }) : r; - } catch (r) { - throw t.runOutsideAngular(() => e12(r)), r; - } -} -var oo = null; -function hm(e12 = [], t) { - return ce.create({ name: t, providers: [{ provide: Yt, useValue: "platform" }, { provide: la, useValue: /* @__PURE__ */ new Set([() => oo = null]) }, ...e12] }); -} -function gm(e12 = []) { - if (oo) - return oo; - let t = hm(e12); - return oo = t, Uu(), mm(t), t; -} -function mm(e12) { - let t = e12.get(Hr, null); - nr(e12, () => { - t?.forEach((n) => n()); - }); -} -var ym = 1e4; -var VM = ym - 1e3; -function Zu(e12) { - let { rootComponent: t, appProviders: n, platformProviders: r, platformRef: o } = e12; - T(C.BootstrapApplicationStart); - try { - let i = o?.injector ?? gm(r), s = [aa(), Wc, ...n || []], a = new fn({ providers: s, parent: i, debugName: "", runEnvironmentInitializers: false }); - return dm({ r3Injector: a.injector, platformInjector: i, rootComponent: t }); - } catch (i) { - return Promise.reject(i); - } finally { - T(C.BootstrapApplicationEnd); - } -} -var Qu = null; -function Ht() { - return Qu; -} -function ua(e12) { - Qu ??= e12; -} -var wn = class { -}; -function da(e12, t) { - t = encodeURIComponent(t); - for (let n of e12.split(";")) { - let r = n.indexOf("="), [o, i] = r == -1 ? [n, ""] : [n.slice(0, r), n.slice(r + 1)]; - if (o.trim() === t) - return decodeURIComponent(i); - } - return null; -} -var Cn = class { -}; -var Yu = "browser"; -var bn = class { - _doc; - constructor(t) { - this._doc = t; - } - manager; -}; -var io = (() => { - class e12 extends bn { - constructor(n) { - super(n); - } - supports(n) { - return true; - } - addEventListener(n, r, o, i) { - return n.addEventListener(r, o, i), () => this.removeEventListener(n, r, o, i); - } - removeEventListener(n, r, o, i) { - return n.removeEventListener(r, o, i); - } - static \u0275fac = function(r) { - return new (r || e12)(w(U)); - }; - static \u0275prov = _({ token: e12, factory: e12.\u0275fac }); - } - return e12; -})(); -var co = new D(""); -var ga = (() => { - class e12 { - _zone; - _plugins; - _eventNameToPlugin = /* @__PURE__ */ new Map(); - constructor(n, r) { - this._zone = r, n.forEach((s) => { - s.manager = this; - }); - let o = n.filter((s) => !(s instanceof io)); - this._plugins = o.slice().reverse(); - let i = n.find((s) => s instanceof io); - i && this._plugins.push(i); - } - addEventListener(n, r, o, i) { - return this._findPluginFor(r).addEventListener(n, r, o, i); - } - getZone() { - return this._zone; - } - _findPluginFor(n) { - let r = this._eventNameToPlugin.get(n); - if (r) - return r; - if (r = this._plugins.find((i) => i.supports(n)), !r) - throw new v(5101, false); - return this._eventNameToPlugin.set(n, r), r; - } - static \u0275fac = function(r) { - return new (r || e12)(w(co), w(Y)); - }; - static \u0275prov = _({ token: e12, factory: e12.\u0275fac }); - } - return e12; -})(); -var fa = "ng-app-id"; -function Ku(e12) { - for (let t of e12) - t.remove(); -} -function Ju(e12, t) { - let n = t.createElement("style"); - return n.textContent = e12, n; -} -function vm(e12, t, n, r) { - let o = e12.head?.querySelectorAll(`style[${fa}="${t}"],link[${fa}="${t}"]`); - if (o) - for (let i of o) - i.removeAttribute(fa), i instanceof HTMLLinkElement ? r.set(i.href.slice(i.href.lastIndexOf("/") + 1), { usage: 0, elements: [i] }) : i.textContent && n.set(i.textContent, { usage: 0, elements: [i] }); -} -function ha(e12, t) { - let n = t.createElement("link"); - return n.setAttribute("rel", "stylesheet"), n.setAttribute("href", e12), n; -} -var ma = (() => { - class e12 { - doc; - appId; - nonce; - inline = /* @__PURE__ */ new Map(); - external = /* @__PURE__ */ new Map(); - hosts = /* @__PURE__ */ new Set(); - constructor(n, r, o, i = {}) { - this.doc = n, this.appId = r, this.nonce = o, vm(n, r, this.inline, this.external), this.hosts.add(n.head); - } - addStyles(n, r) { - for (let o of n) - this.addUsage(o, this.inline, Ju); - r?.forEach((o) => this.addUsage(o, this.external, ha)); - } - removeStyles(n, r) { - for (let o of n) - this.removeUsage(o, this.inline); - r?.forEach((o) => this.removeUsage(o, this.external)); - } - addUsage(n, r, o) { - let i = r.get(n); - i ? i.usage++ : r.set(n, { usage: 1, elements: [...this.hosts].map((s) => this.addElement(s, o(n, this.doc))) }); - } - removeUsage(n, r) { - let o = r.get(n); - o && (o.usage--, o.usage <= 0 && (Ku(o.elements), r.delete(n))); - } - ngOnDestroy() { - for (let [, { elements: n }] of [...this.inline, ...this.external]) - Ku(n); - this.hosts.clear(); - } - addHost(n) { - this.hosts.add(n); - for (let [r, { elements: o }] of this.inline) - o.push(this.addElement(n, Ju(r, this.doc))); - for (let [r, { elements: o }] of this.external) - o.push(this.addElement(n, ha(r, this.doc))); - } - removeHost(n) { - this.hosts.delete(n); - } - addElement(n, r) { - return this.nonce && r.setAttribute("nonce", this.nonce), n.appendChild(r); - } - static \u0275fac = function(r) { - return new (r || e12)(w(U), w(jr), w(Vr, 8), w(gn)); - }; - static \u0275prov = _({ token: e12, factory: e12.\u0275fac }); - } - return e12; -})(); -var pa = { 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" }; -var ya = /%COMP%/g; -var ed = "%COMP%"; -var Em = `_nghost-${ed}`; -var Im = `_ngcontent-${ed}`; -var Dm = true; -var wm = new D("", { factory: () => Dm }); -function Cm(e12) { - return Im.replace(ya, e12); -} -function bm(e12) { - return Em.replace(ya, e12); -} -function td(e12, t) { - return t.map((n) => n.replace(ya, e12)); -} -var va = (() => { - class e12 { - eventManager; - sharedStylesHost; - appId; - removeStylesOnCompDestroy; - doc; - ngZone; - nonce; - tracingService; - rendererByCompId = /* @__PURE__ */ new Map(); - defaultRenderer; - constructor(n, r, o, i, s, a, c = null, l = null) { - this.eventManager = n, this.sharedStylesHost = r, this.appId = o, this.removeStylesOnCompDestroy = i, this.doc = s, this.ngZone = a, this.nonce = c, this.tracingService = l, this.defaultRenderer = new Tn(n, s, a, this.tracingService); - } - createRenderer(n, r) { - if (!n || !r) - return this.defaultRenderer; - let o = this.getOrCreateRenderer(n, r); - return o instanceof ao ? o.applyToHost(n) : o instanceof Mn && o.applyStyles(), o; - } - getOrCreateRenderer(n, r) { - let o = this.rendererByCompId, i = o.get(r.id); - if (!i) { - let s = this.doc, a = this.ngZone, c = this.eventManager, l = this.sharedStylesHost, u = this.removeStylesOnCompDestroy, d = this.tracingService; - switch (r.encapsulation) { - case ie.Emulated: - i = new ao(c, l, r, this.appId, u, s, a, d); - break; - case ie.ShadowDom: - return new so(c, n, r, s, a, this.nonce, d, l); - case ie.ExperimentalIsolatedShadowDom: - return new so(c, n, r, s, a, this.nonce, d); - default: - i = new Mn(c, l, r, u, s, a, d); - break; - } - o.set(r.id, i); - } - return i; - } - ngOnDestroy() { - this.rendererByCompId.clear(); - } - componentReplaced(n) { - this.rendererByCompId.delete(n); - } - static \u0275fac = function(r) { - return new (r || e12)(w(ga), w(ma), w(jr), w(wm), w(U), w(Y), w(Vr), w(jt, 8)); - }; - static \u0275prov = _({ token: e12, factory: e12.\u0275fac }); - } - return e12; -})(); -var Tn = class { - eventManager; - doc; - ngZone; - tracingService; - data = /* @__PURE__ */ Object.create(null); - throwOnSyntheticProps = true; - constructor(t, n, r, o) { - this.eventManager = t, this.doc = n, this.ngZone = r, this.tracingService = o; - } - destroy() { - } - destroyNode = null; - createElement(t, n) { - return n ? this.doc.createElementNS(pa[n] || n, t) : this.doc.createElement(t); - } - createComment(t) { - return this.doc.createComment(t); - } - createText(t) { - return this.doc.createTextNode(t); - } - appendChild(t, n) { - (Xu(t) ? t.content : t).appendChild(n); - } - insertBefore(t, n, r) { - t && (Xu(t) ? t.content : t).insertBefore(n, r); - } - removeChild(t, n) { - n.remove(); - } - selectRootElement(t, n) { - let r = typeof t == "string" ? this.doc.querySelector(t) : t; - if (!r) - throw new v(-5104, false); - return n || (r.textContent = ""), r; - } - parentNode(t) { - return t.parentNode; - } - nextSibling(t) { - return t.nextSibling; - } - setAttribute(t, n, r, o) { - if (o) { - n = o + ":" + n; - let i = pa[o]; - i ? t.setAttributeNS(i, n, r) : t.setAttribute(n, r); - } else - t.setAttribute(n, r); - } - removeAttribute(t, n, r) { - if (r) { - let o = pa[r]; - o ? t.removeAttributeNS(o, n) : t.removeAttribute(`${r}:${n}`); - } else - t.removeAttribute(n); - } - addClass(t, n) { - t.classList.add(n); - } - removeClass(t, n) { - t.classList.remove(n); - } - setStyle(t, n, r, o) { - o & (Te.DashCase | Te.Important) ? t.style.setProperty(n, r, o & Te.Important ? "important" : "") : t.style[n] = r; - } - removeStyle(t, n, r) { - r & Te.DashCase ? t.style.removeProperty(n) : t.style[n] = ""; - } - setProperty(t, n, r) { - t != null && (t[n] = r); - } - setValue(t, n) { - t.nodeValue = n; - } - listen(t, n, r, o) { - if (typeof t == "string" && (t = Ht().getGlobalEventTarget(this.doc, t), !t)) - throw new v(5102, false); - let i = this.decoratePreventDefault(r); - return this.tracingService?.wrapEventListener && (i = this.tracingService.wrapEventListener(t, n, i)), this.eventManager.addEventListener(t, n, i, o); - } - decoratePreventDefault(t) { - return (n) => { - if (n === "__ngUnwrap__") - return t; - t(n) === false && n.preventDefault(); - }; - } -}; -function Xu(e12) { - return e12.tagName === "TEMPLATE" && e12.content !== void 0; -} -var so = class extends Tn { - hostEl; - sharedStylesHost; - shadowRoot; - constructor(t, n, r, o, i, s, a, c) { - super(t, o, i, a), this.hostEl = n, this.sharedStylesHost = c, this.shadowRoot = n.attachShadow({ mode: "open" }), this.sharedStylesHost && this.sharedStylesHost.addHost(this.shadowRoot); - let l = r.styles; - l = td(r.id, l); - for (let d of l) { - let f = document.createElement("style"); - s && f.setAttribute("nonce", s), f.textContent = d, this.shadowRoot.appendChild(f); - } - let u = r.getExternalStyles?.(); - if (u) - for (let d of u) { - let f = ha(d, o); - s && f.setAttribute("nonce", s), this.shadowRoot.appendChild(f); - } - } - nodeOrShadowRoot(t) { - return t === this.hostEl ? this.shadowRoot : t; - } - appendChild(t, n) { - return super.appendChild(this.nodeOrShadowRoot(t), n); - } - insertBefore(t, n, r) { - return super.insertBefore(this.nodeOrShadowRoot(t), n, r); - } - removeChild(t, n) { - return super.removeChild(null, n); - } - parentNode(t) { - return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(t))); - } - destroy() { - this.sharedStylesHost && this.sharedStylesHost.removeHost(this.shadowRoot); - } -}; -var Mn = class extends Tn { - sharedStylesHost; - removeStylesOnCompDestroy; - styles; - styleUrls; - constructor(t, n, r, o, i, s, a, c) { - super(t, i, s, a), this.sharedStylesHost = n, this.removeStylesOnCompDestroy = o; - let l = r.styles; - this.styles = c ? td(c, l) : l, this.styleUrls = r.getExternalStyles?.(c); - } - applyStyles() { - this.sharedStylesHost.addStyles(this.styles, this.styleUrls); - } - destroy() { - this.removeStylesOnCompDestroy && it.size === 0 && this.sharedStylesHost.removeStyles(this.styles, this.styleUrls); - } -}; -var ao = class extends Mn { - contentAttr; - hostAttr; - constructor(t, n, r, o, i, s, a, c) { - let l = o + "-" + r.id; - super(t, n, r, i, s, a, c, l), this.contentAttr = Cm(l), this.hostAttr = bm(l); - } - applyToHost(t) { - this.applyStyles(), this.setAttribute(t, this.hostAttr, ""); - } - createElement(t, n) { - let r = super.createElement(t, n); - return super.setAttribute(r, this.contentAttr, ""), r; - } -}; -var lo = class e9 extends wn { - supportsDOMEvents = true; - static makeCurrent() { - ua(new e9()); - } - onAndCancel(t, n, r, o) { - return t.addEventListener(n, r, o), () => { - t.removeEventListener(n, r, o); - }; - } - dispatchEvent(t, n) { - t.dispatchEvent(n); - } - remove(t) { - t.remove(); - } - createElement(t, n) { - return n = n || this.getDefaultDocument(), n.createElement(t); - } - createHtmlDocument() { - return document.implementation.createHTMLDocument("fakeTitle"); - } - getDefaultDocument() { - return document; - } - isElementNode(t) { - return t.nodeType === Node.ELEMENT_NODE; - } - isShadowRoot(t) { - return t instanceof DocumentFragment; - } - getGlobalEventTarget(t, n) { - return n === "window" ? window : n === "document" ? t : n === "body" ? t.body : null; - } - getBaseHref(t) { - let n = Tm(); - return n == null ? null : Mm(n); - } - resetBaseElement() { - _n = null; - } - getUserAgent() { - return window.navigator.userAgent; - } - getCookie(t) { - return da(document.cookie, t); - } -}; -var _n = null; -function Tm() { - return _n = _n || document.head.querySelector("base"), _n ? _n.getAttribute("href") : null; -} -function Mm(e12) { - return new URL(e12, document.baseURI).pathname; -} -var _m = (() => { - class e12 { - build() { - return new XMLHttpRequest(); - } - static \u0275fac = function(r) { - return new (r || e12)(); - }; - static \u0275prov = _({ token: e12, factory: e12.\u0275fac }); - } - return e12; -})(); -var nd = ["alt", "control", "meta", "shift"]; -var Sm = { "\b": "Backspace", " ": "Tab", "\x7F": "Delete", "\x1B": "Escape", Del: "Delete", Esc: "Escape", Left: "ArrowLeft", Right: "ArrowRight", Up: "ArrowUp", Down: "ArrowDown", Menu: "ContextMenu", Scroll: "ScrollLock", Win: "OS" }; -var Nm = { alt: (e12) => e12.altKey, control: (e12) => e12.ctrlKey, meta: (e12) => e12.metaKey, shift: (e12) => e12.shiftKey }; -var rd = (() => { - class e12 extends bn { - constructor(n) { - super(n); - } - supports(n) { - return e12.parseEventName(n) != null; - } - addEventListener(n, r, o, i) { - let s = e12.parseEventName(r), a = e12.eventCallback(s.fullKey, o, this.manager.getZone()); - return this.manager.getZone().runOutsideAngular(() => Ht().onAndCancel(n, s.domEventName, a, i)); - } - static parseEventName(n) { - let r = n.toLowerCase().split("."), o = r.shift(); - if (r.length === 0 || !(o === "keydown" || o === "keyup")) - return null; - let i = e12._normalizeKey(r.pop()), s = "", a = r.indexOf("code"); - if (a > -1 && (r.splice(a, 1), s = "code."), nd.forEach((l) => { - let u = r.indexOf(l); - u > -1 && (r.splice(u, 1), s += l + "."); - }), s += i, r.length != 0 || i.length === 0) - return null; - let c = {}; - return c.domEventName = o, c.fullKey = s, c; - } - static matchEventFullKeyCode(n, r) { - let o = Sm[n.key] || n.key, i = ""; - return r.indexOf("code.") > -1 && (o = n.code, i = "code."), o == null || !o ? false : (o = o.toLowerCase(), o === " " ? o = "space" : o === "." && (o = "dot"), nd.forEach((s) => { - if (s !== o) { - let a = Nm[s]; - a(n) && (i += s + "."); - } - }), i += o, i === r); - } - static eventCallback(n, r, o) { - return (i) => { - e12.matchEventFullKeyCode(i, n) && o.runGuarded(() => r(i)); - }; - } - static _normalizeKey(n) { - return n === "esc" ? "escape" : n; - } - static \u0275fac = function(r) { - return new (r || e12)(w(U)); - }; - static \u0275prov = _({ token: e12, factory: e12.\u0275fac }); - } - return e12; -})(); -async function Ea(e12, t) { - return Zu(xm(e12, t)); -} -function xm(e12, t) { - return { platformRef: t?.platformRef, appProviders: [...Pm, ...e12?.providers ?? []], platformProviders: km }; -} -function Am() { - lo.makeCurrent(); -} -function Rm() { - return new Ie(); -} -function Om() { - return Ns(document), document; -} -var km = [{ provide: gn, useValue: Yu }, { provide: Hr, useValue: Am, multi: true }, { provide: U, useFactory: Om }]; -var Pm = [{ provide: Yt, useValue: "root" }, { provide: Ie, useFactory: Rm }, { provide: co, useClass: io, multi: true }, { provide: co, useClass: rd, multi: true }, va, ma, ga, { provide: st, useExisting: va }, { provide: Cn, useClass: _m }, []]; -var Ia = (() => { - class e12 { - static \u0275fac = function(r) { - return new (r || e12)(); - }; - static \u0275prov = _({ token: e12, factory: function(r) { - let o = null; - return r ? o = new (r || e12)() : o = w(Lm), o; - }, providedIn: "root" }); - } - return e12; -})(); -var Lm = (() => { - class e12 extends Ia { - _doc; - constructor(n) { - super(), this._doc = n; - } - sanitize(n, r) { - if (r == null) - return null; - switch (n) { - case ge.NONE: - return r; - case ge.HTML: - return He(r, "HTML") ? Me(r) : Ur(this._doc, String(r)).toString(); - case ge.STYLE: - return He(r, "Style") ? Me(r) : r; - case ge.SCRIPT: - if (He(r, "Script")) - return Me(r); - throw new v(5200, false); - case ge.URL: - return He(r, "URL") ? Me(r) : $r(String(r)); - case ge.RESOURCE_URL: - if (He(r, "ResourceURL")) - return Me(r); - throw new v(5201, false); - default: - throw new v(5202, false); - } - } - bypassSecurityTrustHtml(n) { - return As(n); - } - bypassSecurityTrustStyle(n) { - return Rs(n); - } - bypassSecurityTrustScript(n) { - return Os(n); - } - bypassSecurityTrustUrl(n) { - return ks(n); - } - bypassSecurityTrustResourceUrl(n) { - return Ps(n); - } - static \u0275fac = function(r) { - return new (r || e12)(w(U)); - }; - static \u0275prov = _({ token: e12, factory: e12.\u0275fac, providedIn: "root" }); - } - return e12; -})(); -var uo = class e10 { - constructor(t) { - this.model = t; - if (t) { - this.page.set(t.get("page") ?? 0), this.pageSize.set(t.get("page_size") ?? 10), this.maxColumns.set(t.get("max_columns") ?? 0), this.rowCount.set(t.get("row_count") ?? null), this.tableHtml.set(t.get("table_html") ?? ""), this.sortContext.set(t.get("sort_context") ?? []), this.orderableColumns.set(t.get("orderable_columns") ?? []); - let n = t.get("error_message") ?? t.get("_error_message") ?? null; - this.errorMessage.set(n), t.on("change:page", () => { - this.page.set(t.get("page")); - }), t.on("change:page_size", () => { - this.pageSize.set(t.get("page_size")); - }), t.on("change:max_columns", () => { - this.maxColumns.set(t.get("max_columns")); - }), t.on("change:row_count", () => { - this.rowCount.set(t.get("row_count")); - }), t.on("change:table_html", () => { - this.tableHtml.set(t.get("table_html")); - }), t.on("change:sort_context", () => { - this.sortContext.set(t.get("sort_context")); - }), t.on("change:orderable_columns", () => { - this.orderableColumns.set(t.get("orderable_columns")); - }); - let r = () => { - let o = t.get("error_message") ?? t.get("_error_message") ?? null; - this.errorMessage.set(o); - }; - t.on("change:error_message", r), t.on("change:_error_message", r); - } - } - page = q(0); - pageSize = q(10); - maxColumns = q(0); - rowCount = q(null); - tableHtml = q(""); - sortContext = q([]); - orderableColumns = q([]); - errorMessage = q(null); - setPage(t) { - this.page.set(t), this.model && (this.model.set("page", t), this.model.save_changes()); - } - setPageSize(t) { - this.pageSize.set(t), this.page.set(0), this.model && (this.model.set("page_size", t), this.model.set("page", 0), this.model.save_changes()); - } - setMaxColumns(t) { - this.maxColumns.set(t), this.model && (this.model.set("max_columns", t), this.model.save_changes()); - } - setSortContext(t) { - this.sortContext.set(t), this.model && (this.model.set("sort_context", t), this.model.save_changes()); - } - static \u0275fac = function(n) { - return new (n || e10)(w("ANYWIDGET_MODEL")); - }; - static \u0275prov = _({ token: e10, factory: e10.\u0275fac, providedIn: "root" }); -}; -var Fm = ["tableContainer"]; -function jm(e12, t) { - if (e12 & 1 && (j(0, "div", 2), se(1), B()), e12 & 2) { - let n = na(); - V(), Be(n.errorMessage()); - } -} -function Hm(e12, t) { - if (e12 & 1 && (j(0, "option", 13), se(1), B()), e12 & 2) { - let n = t.$implicit; - me("value", n), V(), Be(n === 0 ? "All" : n); - } -} -function Vm(e12, t) { - if (e12 & 1 && (j(0, "option", 13), se(1), B()), e12 & 2) { - let n = t.$implicit; - me("value", n), V(), Be(n); - } -} -var fo = class e11 { - state = E(uo); - sanitizer = E(Ia); - maxColumnOptions = [5, 10, 15, 20, 0]; - pageSizeOptions = [10, 25, 50, 100]; - errorMessage = this.state.errorMessage; - maxColumns = this.state.maxColumns; - pageSize = this.state.pageSize; - page = this.state.page; - rowCount = this.state.rowCount; - sanitizedHtml = $e(() => this.sanitizer.bypassSecurityTrustHtml(this.state.tableHtml())); - totalPages = $e(() => { - let t = this.rowCount(), n = this.pageSize(); - return t !== null && n > 0 ? Math.ceil(t / n) : null; - }); - pageIndicatorText = $e(() => { - let t = this.page(), n = this.rowCount(), r = this.totalPages(), o = (t + 1).toLocaleString(), i = (r ?? 1).toLocaleString(); - return `Page ${o} of ${i}`; - }); - rowCountText = $e(() => { - let t = this.rowCount(); - return t === null ? "Total rows unknown" : t === 0 ? "0 total rows" : `${t.toLocaleString()} total rows`; - }); - prevPageDisabled = $e(() => this.page() === 0); - nextPageDisabled = $e(() => { - let t = this.page(), n = this.rowCount(), r = this.totalPages(); - return n === null ? false : n === 0 ? true : r !== null && t >= r - 1; - }); - isDarkMode = q(false); - themeObserver = null; - tableContainerRef; - constructor() { - Pi(() => { - let t = this.state.tableHtml(), n = this.state.sortContext(), r = this.state.orderableColumns(); - setTimeout(() => { - this.applySortIndicators(); - }, 0); - }); - } - ngOnInit() { - this.initThemeDetection(); - } - ngOnDestroy() { - this.themeObserver?.disconnect(); - } - handlePageChange(t) { - let n = this.page() + t; - this.state.setPage(n); - } - handlePageSizeChange(t) { - let n = t.target, r = Number(n.value); - r && this.state.setPageSize(r); - } - handleMaxColumnsChange(t) { - let n = t.target, r = Number(n.value); - this.state.setMaxColumns(r); - } - handleTableClick(t) { - let r = t.target.closest("th"); - if (!r) - return; - let o = r.querySelector("div.bf-header-content"); - if (!o) - return; - let i = this.getColumnName(o), s = this.state.orderableColumns(); - if (!i || !s.includes(i)) - return; - let a = [...this.state.sortContext()], c = a.findIndex((u) => u.column === i), l = [...a]; - t.shiftKey ? c !== -1 ? l[c].ascending ? l[c] = A(N({}, l[c]), { ascending: false }) : l.splice(c, 1) : l.push({ column: i, ascending: true }) : c !== -1 && l.length === 1 ? l[c].ascending ? l[c] = A(N({}, l[c]), { ascending: false }) : l = [] : l = [{ column: i, ascending: true }], this.state.setSortContext(l); - } - getColumnName(t) { - let n = t.cloneNode(true); - return n.querySelector(".sort-indicator")?.remove(), n.textContent?.trim() || ""; - } - applySortIndicators() { - let t = this.tableContainerRef?.nativeElement; - if (!t) - return; - let n = this.state.orderableColumns(), r = this.state.sortContext() || [], o = (s) => r.findIndex((a) => a.column === s); - t.querySelectorAll("th").forEach((s) => { - let a = s.querySelector("div.bf-header-content"); - if (!a) - return; - let c = this.getColumnName(a); - if (c && n.includes(c)) { - let l = a.querySelector(".sort-indicator"); - l || (l = document.createElement("span"), l.classList.add("sort-indicator"), l.style.paddingLeft = "5px", a.appendChild(l)); - let u = o(c); - if (u !== -1) { - let d = r[u].ascending; - l.textContent = d ? "\u25B2" : "\u25BC", l.style.visibility = "visible"; - } else - l.textContent = "\u25CF", l.style.visibility = "hidden"; - } - }); - } - initThemeDetection() { - this.updateTheme(); - let t = new MutationObserver(() => this.updateTheme()); - t.observe(document.body, { attributes: true, attributeFilter: ["class", "data-theme", "data-vscode-theme-kind"] }), this.themeObserver = t; - } - updateTheme() { - let t = document.body, n = t.classList.contains("vscode-dark") || t.classList.contains("theme-dark") || t.dataset.theme === "dark" || t.getAttribute("data-vscode-theme-kind") === "vscode-dark"; - this.isDarkMode.set(n); - } - static \u0275fac = function(n) { - return new (n || e11)(); - }; - static \u0275cmp = Qs({ type: e11, selectors: [["app-root"]], viewQuery: function(n, r) { - if (n & 1 && no(Fm, 7), n & 2) { - let o; - ra(o = oa()) && (r.tableContainerRef = o.first); - } - }, decls: 27, vars: 10, consts: [["tableContainer", ""], [1, "bigframes-widget"], [1, "bigframes-error-message"], [1, "table-container", 3, "click", "innerHTML"], [1, "footer"], [1, "row-count"], [1, "pagination"], [3, "click", "disabled"], [1, "page-indicator"], [1, "settings"], [1, "max-columns"], ["for", "max-cols-select"], ["id", "max-cols-select", 3, "change", "value"], [3, "value"], [1, "page-size"], ["for", "page-size-select"], ["id", "page-size-select", 3, "change", "value"]], template: function(n, r) { - n & 1 && (j(0, "div", 1), Xs(1, jm, 2, 1, "div", 2), j(2, "div", 3, 0), Ve("click", function(i) { - return r.handleTableClick(i); - }), B(), j(4, "footer", 4)(5, "span", 5), se(6), B(), j(7, "div", 6)(8, "button", 7), Ve("click", function() { - return r.handlePageChange(-1); - }), se(9, "<"), B(), j(10, "span", 8), se(11), B(), j(12, "button", 7), Ve("click", function() { - return r.handlePageChange(1); - }), se(13, ">"), B()(), j(14, "div", 9)(15, "div", 10)(16, "label", 11), se(17, "Max columns:"), B(), j(18, "select", 12), Ve("change", function(i) { - return r.handleMaxColumnsChange(i); - }), eo(19, Hm, 2, 2, "option", 13, Xr), B()(), j(21, "div", 14)(22, "label", 15), se(23, "Page size:"), B(), j(24, "select", 16), Ve("change", function(i) { - return r.handlePageSizeChange(i); - }), eo(25, Vm, 2, 2, "option", 13, Xr), B()()()()()), n & 2 && (ro("bigframes-dark-mode", r.isDarkMode()), V(), ta(r.errorMessage() ? 1 : -1), V(), me("innerHTML", r.sanitizedHtml(), Ls), V(4), Be(r.rowCountText()), V(2), me("disabled", r.prevPageDisabled()), V(3), Be(r.pageIndicatorText()), V(), me("disabled", r.nextPageDisabled()), V(6), me("value", r.maxColumns()), V(), to(r.maxColumnOptions), V(5), me("value", r.pageSize()), V(), to(r.pageSizeOptions)); - }, styles: [".bigframes-widget.bigframes-widget[_ngcontent-%COMP%]{--bf-bg: white;--bf-border-color: #ccc;--bf-error-bg: #fbe;--bf-error-border: red;--bf-error-fg: black;--bf-fg: black;--bf-header-bg: #f5f5f5;--bf-null-fg: gray;--bf-row-even-bg: #f5f5f5;--bf-row-odd-bg: white;background-color:var(--bf-bg);box-sizing:border-box;color:var(--bf-fg);display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0;padding:0}.bigframes-widget[_ngcontent-%COMP%] *[_ngcontent-%COMP%]{box-sizing:border-box}@media(prefers-color-scheme:dark){.bigframes-widget.bigframes-widget[_ngcontent-%COMP%]{--bf-bg: var(--vscode-editor-background, #202124);--bf-border-color: #444;--bf-error-bg: #511;--bf-error-border: #f88;--bf-error-fg: #fcc;--bf-fg: white;--bf-header-bg: var(--vscode-editor-background, black);--bf-null-fg: #aaa;--bf-row-even-bg: #202124;--bf-row-odd-bg: #383838}}.bigframes-widget.bigframes-dark-mode.bigframes-dark-mode[_ngcontent-%COMP%]{--bf-bg: var(--vscode-editor-background, #202124);--bf-border-color: #444;--bf-error-bg: #511;--bf-error-border: #f88;--bf-error-fg: #fcc;--bf-fg: white;--bf-header-bg: var(--vscode-editor-background, black);--bf-null-fg: #aaa;--bf-row-even-bg: #202124;--bf-row-odd-bg: #383838}.bigframes-widget[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%]{background-color:var(--bf-bg);margin:0;max-height:620px;overflow:auto;padding:0}.bigframes-widget[_ngcontent-%COMP%] .footer[_ngcontent-%COMP%]{align-items:center;background-color:var(--bf-bg);color:var(--bf-fg);display:flex;font-size:.8rem;justify-content:space-between;padding:8px}.bigframes-widget[_ngcontent-%COMP%] .footer[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{flex:1}.bigframes-widget[_ngcontent-%COMP%] .pagination[_ngcontent-%COMP%]{align-items:center;display:flex;flex-direction:row;gap:4px;justify-content:center;padding:4px}.bigframes-widget[_ngcontent-%COMP%] .page-indicator[_ngcontent-%COMP%], .bigframes-widget[_ngcontent-%COMP%] .row-count[_ngcontent-%COMP%]{margin:0 8px}.bigframes-widget[_ngcontent-%COMP%] .settings[_ngcontent-%COMP%]{align-items:center;display:flex;flex-direction:row;gap:16px;justify-content:end}.bigframes-widget[_ngcontent-%COMP%] .page-size[_ngcontent-%COMP%], .bigframes-widget[_ngcontent-%COMP%] .max-columns[_ngcontent-%COMP%]{align-items:center;display:flex;flex-direction:row;gap:4px}.bigframes-widget[_ngcontent-%COMP%] .page-size[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .bigframes-widget[_ngcontent-%COMP%] .max-columns[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{margin-right:8px}.bigframes-widget[_ngcontent-%COMP%] table.bigframes-widget-table, .bigframes-widget[_ngcontent-%COMP%] table.dataframe{background-color:var(--bf-bg);border:1px solid var(--bf-border-color);border-collapse:collapse;border-spacing:0;box-shadow:none;color:var(--bf-fg);margin:0;outline:none;text-align:left;width:auto}.bigframes-widget[_ngcontent-%COMP%] tr{border:none}.bigframes-widget[_ngcontent-%COMP%] th{background-color:var(--bf-header-bg);border:1px solid var(--bf-border-color);color:var(--bf-fg);padding:0;position:sticky;text-align:left;top:0;z-index:1}.bigframes-widget[_ngcontent-%COMP%] td{border:1px solid var(--bf-border-color);color:var(--bf-fg);padding:.5em}.bigframes-widget[_ngcontent-%COMP%] table tbody tr:nth-child(odd), .bigframes-widget[_ngcontent-%COMP%] table tbody tr:nth-child(odd) td{background-color:var(--bf-row-odd-bg)}.bigframes-widget[_ngcontent-%COMP%] table tbody tr:nth-child(2n), .bigframes-widget[_ngcontent-%COMP%] table tbody tr:nth-child(2n) td{background-color:var(--bf-row-even-bg)}.bigframes-widget[_ngcontent-%COMP%] .bf-header-content{box-sizing:border-box;height:100%;overflow:auto;padding:.5em;resize:horizontal;width:100%}.bigframes-widget[_ngcontent-%COMP%] th .sort-indicator{padding-left:4px;visibility:hidden}.bigframes-widget[_ngcontent-%COMP%] th:hover .sort-indicator{visibility:visible}.bigframes-widget[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background-color:transparent;border:1px solid currentColor;border-radius:4px;color:inherit;cursor:pointer;display:inline-block;padding:2px 8px;text-align:center;text-decoration:none;-webkit-user-select:none;user-select:none;vertical-align:middle}.bigframes-widget[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{opacity:.65;pointer-events:none}.bigframes-widget[_ngcontent-%COMP%] .bigframes-error-message[_ngcontent-%COMP%]{background-color:var(--bf-error-bg);border:1px solid var(--bf-error-border);border-radius:4px;color:var(--bf-error-fg);font-size:14px;margin-bottom:8px;padding:8px}.bigframes-widget[_ngcontent-%COMP%] .cell-align-right{text-align:right}.bigframes-widget[_ngcontent-%COMP%] .cell-align-left{text-align:left}.bigframes-widget[_ngcontent-%COMP%] .null-value{color:var(--bf-null-fg)}.bigframes-widget[_ngcontent-%COMP%] .debug-info{border-top:1px solid var(--bf-border-color)}"] }); -}; -function Bm({ model: e12, el: t }) { - let n = document.createElement("app-root"); - t.appendChild(n); - let r = { providers: [Oi(), sa(), { provide: "ANYWIDGET_MODEL", useValue: e12 }] }; - Ea(r).then((o) => { - o.bootstrap(fo, n); - }).catch((o) => console.error(o)); -} -var tS = { render: Bm }; -export { - tS as default -}; +var Ba=Object.defineProperty,qa=Object.defineProperties,Ua=Object.getOwnPropertyDescriptors,Fi=Object.getOwnPropertySymbols,Za=Object.prototype.hasOwnProperty,$a=Object.prototype.propertyIsEnumerable,Hi=(e,t,n)=>t in e?Ba(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,$=(e,t)=>{for(var n in t||={})Za.call(t,n)&&Hi(e,n,t[n]);if(Fi)for(var n of Fi(t))$a.call(t,n)&&Hi(e,n,t[n]);return e},Q=(e,t)=>qa(e,Ua(t)),R=null,Ft=!1,Qr=1,Qa=null,ne=Symbol("SIGNAL");function m(e){let t=R;return R=e,t}function Wa(){return R}var St={version:0,lastCleanEpoch:0,dirty:!1,producers:void 0,producersTail:void 0,consumers:void 0,consumersTail:void 0,recomputing:!1,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:"unknown",producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Wo(e){if(Ft)throw new Error("");if(R===null)return;R.consumerOnSignalRead(e);let t=R.producersTail;if(t!==void 0&&t.producer===e)return;let n,r=R.recomputing;if(r&&(n=t!==void 0?t.nextProducer:R.producers,n!==void 0&&n.producer===e)){R.producersTail=n,n.lastReadVersion=e.version;return}let i=e.consumersTail;if(i!==void 0&&i.consumer===R&&(!r||Ja(i,R)))return;let o=tt(R),s={producer:e,consumer:R,nextProducer:n,prevConsumer:i,lastReadVersion:e.version,nextConsumer:void 0};R.producersTail=s,t!==void 0?t.nextProducer=s:R.producers=s,o&&Xo(e,s)}function Ga(){Qr++}function Go(e){if(!(tt(e)&&!e.dirty)&&!(!e.dirty&&e.lastCleanEpoch===Qr)){if(!e.producerMustRecompute(e)&&!Gr(e)){zi(e);return}e.producerRecomputeValue(e),zi(e)}}function Yo(e){if(e.consumers===void 0)return;let t=Ft;Ft=!0;try{for(let n=e.consumers;n!==void 0;n=n.nextConsumer){let r=n.consumer;r.dirty||Ya(r)}}finally{Ft=t}}function Ko(){return R?.consumerAllowSignalWrites!==!1}function Ya(e){e.dirty=!0,Yo(e),e.consumerMarkedDirty?.(e)}function zi(e){e.dirty=!1,e.lastCleanEpoch=Qr}function Gt(e){return e&&Ka(e),m(e)}function Ka(e){e.producersTail=void 0,e.recomputing=!0}function Wr(e,t){m(t),e&&Xa(e)}function Xa(e){e.recomputing=!1;let t=e.producersTail,n=t!==void 0?t.nextProducer:e.producers;if(n!==void 0){if(tt(e))do n=Yr(n);while(n!==void 0);t!==void 0?t.nextProducer=void 0:e.producers=void 0}}function Gr(e){for(let t=e.producers;t!==void 0;t=t.nextProducer){let n=t.producer,r=t.lastReadVersion;if(r!==n.version||(Go(n),r!==n.version))return!0}return!1}function vn(e){if(tt(e)){let t=e.producers;for(;t!==void 0;)t=Yr(t)}e.producers=void 0,e.producersTail=void 0,e.consumers=void 0,e.consumersTail=void 0}function Xo(e,t){let n=e.consumersTail,r=tt(e);if(n!==void 0?(t.nextConsumer=n.nextConsumer,n.nextConsumer=t):(t.nextConsumer=void 0,e.consumers=t),t.prevConsumer=n,e.consumersTail=t,!r)for(let i=e.producers;i!==void 0;i=i.nextProducer)Xo(i.producer,i)}function Yr(e){let t=e.producer,n=e.nextProducer,r=e.nextConsumer,i=e.prevConsumer;if(e.nextConsumer=void 0,e.prevConsumer=void 0,r!==void 0?r.prevConsumer=i:t.consumersTail=i,i!==void 0)i.nextConsumer=r;else if(t.consumers=r,!tt(t)){let o=t.producers;for(;o!==void 0;)o=Yr(o)}return n}function tt(e){return e.consumerIsAlwaysLive||e.consumers!==void 0}function Jo(e){Qa?.(e)}function Ja(e,t){let n=t.producersTail;if(n!==void 0){let r=t.producers;do{if(r===e)return!0;if(r===n)break;r=r.nextProducer}while(r!==void 0)}return!1}function es(e,t){return Object.is(e,t)}function eu(e,t){let n=Object.create(tu);n.computation=e,t!==void 0&&(n.equal=t);let r=()=>{if(Go(n),Wo(n),n.value===Ht)throw n.error;return n.value};return r[ne]=n,Jo(n),r}var Ln=Symbol("UNSET"),jn=Symbol("COMPUTING"),Ht=Symbol("ERRORED"),tu=Q($({},St),{value:Ln,dirty:!0,error:null,equal:es,kind:"computed",producerMustRecompute(e){return e.value===Ln||e.value===jn},producerRecomputeValue(e){if(e.value===jn)throw new Error("");let t=e.value;e.value=jn;let n=Gt(e),r,i=!1;try{r=e.computation(),m(null),i=t!==Ln&&t!==Ht&&r!==Ht&&e.equal(t,r)}catch(o){r=Ht,e.error=o}finally{Wr(e,n)}if(i){e.value=t;return}e.value=r,e.version++}});function nu(){throw new Error}var ts=nu;function ns(e){ts(e)}function ru(e){ts=e}var iu=null;function ou(e,t){let n=Object.create(au);n.value=e,t!==void 0&&(n.equal=t);let r=()=>su(n);return r[ne]=n,Jo(n),[r,i=>rs(n,i),i=>lu(n,i)]}function su(e){return Wo(e),e.value}function rs(e,t){Ko()||ns(e),e.equal(e.value,t)||(e.value=t,uu(e))}function lu(e,t){Ko()||ns(e),rs(e,t(e.value))}var au=Q($({},St),{equal:es,value:void 0,kind:"signal"});function uu(e){e.version++,Ga(),Yo(e),iu?.(e)}var cu=Q($({},St),{consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,kind:"effect"});function du(e){if(e.dirty=!1,e.version>0&&!Gr(e))return;e.version++;let t=Gt(e);try{e.cleanup(),e.fn()}finally{Wr(e,t)}}function Y(e){return typeof e=="function"}function is(e){let t=e(n=>{Error.call(n),n.stack=new Error().stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var Fn=is(e=>function(t){e(this),this.message=t?`${t.length} errors occurred during unsubscription: +${t.map((n,r)=>`${r+1}) ${n.toString()}`).join(` + `)}`:"",this.name="UnsubscriptionError",this.errors=t});function ir(e,t){if(e){let n=e.indexOf(t);0<=n&&e.splice(n,1)}}var me=class or{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;let{_parentage:n}=this;if(n)if(this._parentage=null,Array.isArray(n))for(let o of n)o.remove(this);else n.remove(this);let{initialTeardown:r}=this;if(Y(r))try{r()}catch(o){t=o instanceof Fn?o.errors:[o]}let{_finalizers:i}=this;if(i){this._finalizers=null;for(let o of i)try{Bi(o)}catch(s){t=t??[],s instanceof Fn?t=[...t,...s.errors]:t.push(s)}}if(t)throw new Fn(t)}}add(t){var n;if(t&&t!==this)if(this.closed)Bi(t);else{if(t instanceof or){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(n=this._finalizers)!==null&&n!==void 0?n:[]).push(t)}}_hasParent(t){let{_parentage:n}=this;return n===t||Array.isArray(n)&&n.includes(t)}_addParent(t){let{_parentage:n}=this;this._parentage=Array.isArray(n)?(n.push(t),n):n?[n,t]:t}_removeParent(t){let{_parentage:n}=this;n===t?this._parentage=null:Array.isArray(n)&&ir(n,t)}remove(t){let{_finalizers:n}=this;n&&ir(n,t),t instanceof or&&t._removeParent(this)}};me.EMPTY=(()=>{let e=new me;return e.closed=!0,e})();var os=me.EMPTY;function ss(e){return e instanceof me||e&&"closed"in e&&Y(e.remove)&&Y(e.add)&&Y(e.unsubscribe)}function Bi(e){Y(e)?e():e.unsubscribe()}var je={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Yt={setTimeout(e,t,...n){let{delegate:r}=Yt;return r?.setTimeout?r.setTimeout(e,t,...n):setTimeout(e,t,...n)},clearTimeout(e){let{delegate:t}=Yt;return(t?.clearTimeout||clearTimeout)(e)},delegate:void 0};function fu(e){Yt.setTimeout(()=>{let{onUnhandledError:t}=je;if(t)t(e);else throw e})}function qi(){}var hu=Kr("C",void 0,void 0);function pu(e){return Kr("E",void 0,e)}function gu(e){return Kr("N",e,void 0)}function Kr(e,t,n){return{kind:e,value:t,error:n}}var ke=null;function zt(e){if(je.useDeprecatedSynchronousErrorHandling){let t=!ke;if(t&&(ke={errorThrown:!1,error:null}),e(),t){let{errorThrown:n,error:r}=ke;if(ke=null,n)throw r}}else e()}function mu(e){je.useDeprecatedSynchronousErrorHandling&&ke&&(ke.errorThrown=!0,ke.error=e)}var Xr=class extends me{constructor(e){super(),this.isStopped=!1,e?(this.destination=e,ss(e)&&e.add(this)):this.destination=wu}static create(e,t,n){return new sr(e,t,n)}next(e){this.isStopped?zn(gu(e),this):this._next(e)}error(e){this.isStopped?zn(pu(e),this):(this.isStopped=!0,this._error(e))}complete(){this.isStopped?zn(hu,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(e){this.destination.next(e)}_error(e){try{this.destination.error(e)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}},yu=Function.prototype.bind;function Hn(e,t){return yu.call(e,t)}var vu=class{constructor(e){this.partialObserver=e}next(e){let{partialObserver:t}=this;if(t.next)try{t.next(e)}catch(n){At(n)}}error(e){let{partialObserver:t}=this;if(t.error)try{t.error(e)}catch(n){At(n)}else At(e)}complete(){let{partialObserver:e}=this;if(e.complete)try{e.complete()}catch(t){At(t)}}},sr=class extends Xr{constructor(e,t,n){super();let r;if(Y(e)||!e)r={next:e??void 0,error:t??void 0,complete:n??void 0};else{let i;this&&je.useDeprecatedNextContext?(i=Object.create(e),i.unsubscribe=()=>this.unsubscribe(),r={next:e.next&&Hn(e.next,i),error:e.error&&Hn(e.error,i),complete:e.complete&&Hn(e.complete,i)}):r=e}this.destination=new vu(r)}};function At(e){je.useDeprecatedSynchronousErrorHandling?mu(e):fu(e)}function bu(e){throw e}function zn(e,t){let{onStoppedNotification:n}=je;n&&Yt.setTimeout(()=>n(e,t))}var wu={closed:!0,next:qi,error:bu,complete:qi},_u=typeof Symbol=="function"&&Symbol.observable||"@@observable";function Cu(e){return e}function xu(e){return e.length===0?Cu:e.length===1?e[0]:function(t){return e.reduce((n,r)=>r(n),t)}}var lr=(()=>{class e{constructor(n){n&&(this._subscribe=n)}lift(n){let r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,i){let o=Su(n)?n:new sr(n,r,i);return zt(()=>{let{operator:s,source:l}=this;o.add(s?s.call(o,l):l?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(n){try{return this._subscribe(n)}catch(r){n.error(r)}}forEach(n,r){return r=Ui(r),new r((i,o)=>{let s=new sr({next:l=>{try{n(l)}catch(a){o(a),s.unsubscribe()}},error:o,complete:i});this.subscribe(s)})}_subscribe(n){var r;return(r=this.source)===null||r===void 0?void 0:r.subscribe(n)}[_u](){return this}pipe(...n){return xu(n)(this)}toPromise(n){return n=Ui(n),new n((r,i)=>{let o;this.subscribe(s=>o=s,s=>i(s),()=>r(o))})}}return e.create=t=>new e(t),e})();function Ui(e){var t;return(t=e??je.Promise)!==null&&t!==void 0?t:Promise}function ku(e){return e&&Y(e.next)&&Y(e.error)&&Y(e.complete)}function Su(e){return e&&e instanceof Xr||ku(e)&&ss(e)}function Eu(e){return Y(e?.lift)}function Iu(e){return t=>{if(Eu(t))return t.lift(function(n){try{return e(n,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function Tu(e,t,n,r,i){return new Ou(e,t,n,r,i)}var Ou=class extends Xr{constructor(e,t,n,r,i,o){super(e),this.onFinalize=i,this.shouldUnsubscribe=o,this._next=t?function(s){try{t(s)}catch(l){e.error(l)}}:super._next,this._error=r?function(s){try{r(s)}catch(l){e.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=n?function(){try{n()}catch(s){e.error(s)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:t}=this;super.unsubscribe(),!t&&((e=this.onFinalize)===null||e===void 0||e.call(this))}}},Du=is(e=>function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}),Et=(()=>{class e extends lr{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(n){let r=new Zi(this,this);return r.operator=n,r}_throwIfClosed(){if(this.closed)throw new Du}next(n){zt(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let r of this.currentObservers)r.next(n)}})}error(n){zt(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=n;let{observers:r}=this;for(;r.length;)r.shift().error(n)}})}complete(){zt(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:n}=this;for(;n.length;)n.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var n;return((n=this.observers)===null||n===void 0?void 0:n.length)>0}_trySubscribe(n){return this._throwIfClosed(),super._trySubscribe(n)}_subscribe(n){return this._throwIfClosed(),this._checkFinalizedStatuses(n),this._innerSubscribe(n)}_innerSubscribe(n){let{hasError:r,isStopped:i,observers:o}=this;return r||i?os:(this.currentObservers=null,o.push(n),new me(()=>{this.currentObservers=null,ir(o,n)}))}_checkFinalizedStatuses(n){let{hasError:r,thrownError:i,isStopped:o}=this;r?n.error(i):o&&n.complete()}asObservable(){let n=new lr;return n.source=this,n}}return e.create=(t,n)=>new Zi(t,n),e})(),Zi=class extends Et{constructor(e,t){super(),this.destination=e,this.source=t}next(e){var t,n;(n=(t=this.destination)===null||t===void 0?void 0:t.next)===null||n===void 0||n.call(t,e)}error(e){var t,n;(n=(t=this.destination)===null||t===void 0?void 0:t.error)===null||n===void 0||n.call(t,e)}complete(){var e,t;(t=(e=this.destination)===null||e===void 0?void 0:e.complete)===null||t===void 0||t.call(e)}_subscribe(e){var t,n;return(n=(t=this.source)===null||t===void 0?void 0:t.subscribe(e))!==null&&n!==void 0?n:os}},Mu=class extends Et{constructor(e){super(),this._value=e}get value(){return this.getValue()}_subscribe(e){let t=super._subscribe(e);return!t.closed&&e.next(this._value),t}getValue(){let{hasError:e,thrownError:t,_value:n}=this;if(e)throw t;return this._throwIfClosed(),n}next(e){super.next(this._value=e)}};function Pu(e,t){return Iu((n,r)=>{let i=0;n.subscribe(Tu(r,o=>{r.next(e.call(t,o,i++))}))})}var ar;function ls(){return ar}function fe(e){let t=ar;return ar=e,t}var Nu=Symbol("NotFound");function Jr(e){return e===Nu||e?.name==="\u0275NotFound"}var as="https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss",w=class extends Error{code;constructor(e,t){super(Vu(e,t)),this.code=e}};function Au(e){return`NG0${Math.abs(e)}`}function Vu(e,t){return`${Au(e)}${t?": "+t:""}`}var Kt=globalThis;function k(e){for(let t in e)if(e[t]===k)return t;throw Error("")}function us(e){if(typeof e=="string")return e;if(Array.isArray(e))return`[${e.map(us).join(", ")}]`;if(e==null)return""+e;let t=e.overriddenName||e.name;if(t)return`${t}`;let n=e.toString();if(n==null)return""+n;let r=n.indexOf(` +`);return r>=0?n.slice(0,r):n}function $i(e,t){return e?t?`${e} ${t}`:e:t||""}var Ru=k({__forward_ref__:k});function cs(e){return e.__forward_ref__=cs,e}function j(e){return Lu(e)?e():e}function Lu(e){return typeof e=="function"&&e.hasOwnProperty(Ru)&&e.__forward_ref__===cs}function D(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function ei(e){return ju(e,ds)}function ju(e,t){return e.hasOwnProperty(t)&&e[t]||null}function Fu(e){return(e?.[ds]??null)||null}function Qi(e){return e&&e.hasOwnProperty(Wi)?e[Wi]:null}var ds=k({\u0275prov:k}),Wi=k({\u0275inj:k}),E=class{_desc;ngMetadataName="InjectionToken";\u0275prov;constructor(e,t){this._desc=e,this.\u0275prov=void 0,typeof t=="number"?this.__NG_ELEMENT_ID__=t:t!==void 0&&(this.\u0275prov=D({token:this,providedIn:t.providedIn||"root",factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function fs(e){return e&&!!e.\u0275providers}var Hu=k({\u0275cmp:k}),zu=k({\u0275dir:k}),Bu=k({\u0275pipe:k}),Gi=k({\u0275fac:k}),ht=k({__NG_ELEMENT_ID__:k}),Yi=k({__NG_ENV_ID__:k});function gt(e){return ti(e,"@Component"),e[Hu]||null}function hs(e){return ti(e,"@Directive"),e[zu]||null}function qu(e){return ti(e,"@Pipe"),e[Bu]||null}function ti(e,t){if(e==null)throw new w(-919,!1)}function ps(e){return typeof e=="string"?e:e==null?"":String(e)}var gs=k({ngErrorCode:k}),Uu=k({ngErrorMessage:k}),Zu=k({ngTokenPath:k});function ms(e,t){return ys("",-200,t)}function ni(e,t){throw new w(-201,!1)}function ys(e,t,n){let r=new w(t,e);return r[gs]=t,r[Uu]=e,n&&(r[Zu]=n),r}function $u(e){return e[gs]}var ur;function vs(){return ur}function z(e){let t=ur;return ur=e,t}function bs(e,t,n){let r=ei(e);if(r&&r.providedIn=="root")return r.value===void 0?r.value=r.factory():r.value;if(n&8)return null;if(t!==void 0)return t;ni(e,"")}var Qu={},Ee=Qu,Wu="__NG_DI_FLAG__",Gu=class{injector;constructor(e){this.injector=e}retrieve(e,t){let n=mt(t)||0;try{return this.injector.get(e,n&8?null:Ee,n)}catch(r){if(Jr(r))return r;throw r}}};function Yu(e,t=0){let n=ls();if(n===void 0)throw new w(-203,!1);if(n===null)return bs(e,void 0,t);{let r=Ku(t),i=n.retrieve(e,r);if(Jr(i)){if(r.optional)return null;throw i}return i}}function C(e,t=0){return(vs()||Yu)(j(e),t)}function b(e,t){return C(e,mt(t))}function mt(e){return typeof e>"u"||typeof e=="number"?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Ku(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function cr(e){let t=[];for(let n=0;nArray.isArray(n)?ri(n,t):t(n))}function ws(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function Xt(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function tc(e,t,n,r){let i=e.length;if(i==t)e.push(n,r);else if(i===1)e.push(r,e[0]),e[0]=n;else{for(i--,e.push(e[i-1],e[i]);i>t;){let o=i-2;e[i]=e[o],i--}e[t]=n,e[t+1]=r}}function nc(e,t,n){let r=It(e,t);return r>=0?e[r|1]=n:(r=~r,tc(e,r,t,n)),r}function Bn(e,t){let n=It(e,t);if(n>=0)return e[n|1]}function It(e,t){return rc(e,t,1)}function rc(e,t,n){let r=0,i=e.length>>n;for(;i!==r;){let o=r+(i-r>>1),s=e[o<t?i=o:r=o+1}return~(i<{n.push(s)};return ri(t,s=>{let l=s;dr(l,o,[],r)&&(i||=[],i.push(l))}),i!==void 0&&Ss(i,o),n}function Ss(e,t){for(let n=0;n{t(o,r)})}}function dr(e,t,n,r){if(e=j(e),!e)return!1;let i=null,o=Qi(e),s=!o&>(e);if(!o&&!s){let a=e.ngModule;if(o=Qi(a),o)i=a;else return!1}else{if(s&&!s.standalone)return!1;i=e}let l=r.has(i);if(s){if(l)return!1;if(r.add(i),s.dependencies){let a=typeof s.dependencies=="function"?s.dependencies():s.dependencies;for(let u of a)dr(u,t,n,r)}}else if(o){if(o.imports!=null&&!l){r.add(i);let u;ri(o.imports,c=>{dr(c,t,n,r)&&(u||=[],u.push(c))}),u!==void 0&&Ss(u,t)}if(!l){let u=yt(i)||(()=>new i);t({provide:i,useFactory:u,deps:Te},i),t({provide:Cs,useValue:i,multi:!0},i),t({provide:bn,useValue:()=>C(i),multi:!0},i)}let a=o.providers;if(a!=null&&!l){let u=e;oi(a,c=>{t(c,u)})}}else return!1;return i!==e&&e.providers!==void 0}function oi(e,t){for(let n of e)fs(n)&&(n=n.\u0275providers),Array.isArray(n)?oi(n,t):t(n)}var sc=k({provide:String,useValue:k});function Es(e){return e!==null&&typeof e=="object"&&sc in e}function lc(e){return!!(e&&e.useExisting)}function ac(e){return!!(e&&e.useFactory)}function Ke(e){return typeof e=="function"}function uc(e){return!!e.useClass}var si=new E(""),Bt={},Ki={},qn;function li(){return qn===void 0&&(qn=new xs),qn}var ye=class{},ai=class extends ye{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(e,t,n,r){super(),this.parent=t,this.source=n,this.scopes=r,hr(e,o=>this.processProvider(o)),this.records.set(_s,$e(void 0,this)),r.has("environment")&&this.records.set(ye,$e(void 0,this));let i=this.records.get(si);i!=null&&typeof i.value=="string"&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(Cs,Te,{self:!0}))}retrieve(e,t){let n=mt(t)||0;try{return this.get(e,Ee,n)}catch(r){if(Jr(r))return r;throw r}}destroy(){ut(this),this._destroyed=!0;let e=m(null);try{for(let n of this._ngOnDestroyHooks)n.ngOnDestroy();let t=this._onDestroyHooks;this._onDestroyHooks=[];for(let n of t)n()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),m(e)}}onDestroy(e){return ut(this),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){ut(this);let t=fe(this),n=z(void 0),r;try{return e()}finally{fe(t),z(n)}}get(e,t=Ee,n){if(ut(this),e.hasOwnProperty(Yi))return e[Yi](this);let r=mt(n),i,o=fe(this),s=z(void 0);try{if(!(r&4)){let a=this.records.get(e);if(a===void 0){let u=pc(e)&&ei(e);u&&this.injectableDefInScope(u)?a=$e(fr(e),Bt):a=null,this.records.set(e,a)}if(a!=null)return this.hydrate(e,a,r)}let l=r&2?li():this.parent;return t=r&8&&t===Ee?null:t,l.get(e,t)}catch(l){let a=$u(l);throw a===-200||a===-201?new w(a,null):l}finally{z(s),fe(o)}}resolveInjectorInitializers(){let e=m(null),t=fe(this),n=z(void 0),r;try{let i=this.get(bn,Te,{self:!0});for(let o of i)o()}finally{fe(t),z(n),m(e)}}toString(){return"R3Injector[...]"}processProvider(e){e=j(e);let t=Ke(e)?e:j(e&&e.provide),n=dc(e);if(!Ke(e)&&e.multi===!0){let r=this.records.get(t);r||(r=$e(void 0,Bt,!0),r.factory=()=>cr(r.multi),this.records.set(t,r)),t=e,r.multi.push(e)}this.records.set(t,n)}hydrate(e,t,n){let r=m(null);try{if(t.value===Ki)throw ms("");return t.value===Bt&&(t.value=Ki,t.value=t.factory(void 0,n)),typeof t.value=="object"&&t.value&&hc(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{m(r)}}injectableDefInScope(e){if(!e.providedIn)return!1;let t=j(e.providedIn);return typeof t=="string"?t==="any"||this.scopes.has(t):this.injectorDefTypes.has(t)}removeOnDestroy(e){let t=this._onDestroyHooks.indexOf(e);t!==-1&&this._onDestroyHooks.splice(t,1)}};function fr(e){let t=ei(e),n=t!==null?t.factory:yt(e);if(n!==null)return n;if(e instanceof E)throw new w(-204,!1);if(e instanceof Function)return cc(e);throw new w(-204,!1)}function cc(e){if(e.length>0)throw new w(-204,!1);let t=Fu(e);return t!==null?()=>t.factory(e):()=>new e}function dc(e){if(Es(e))return $e(void 0,e.useValue);{let t=Is(e);return $e(t,Bt)}}function Is(e,t,n){let r;if(Ke(e)){let i=j(e);return yt(i)||fr(i)}else if(Es(e))r=()=>j(e.useValue);else if(ac(e))r=()=>e.useFactory(...cr(e.deps||[]));else if(lc(e))r=(i,o)=>C(j(e.useExisting),o!==void 0&&o&8?8:void 0);else{let i=j(e&&(e.useClass||e.provide));if(fc(e))r=()=>new i(...cr(e.deps));else return yt(i)||fr(i)}return r}function ut(e){if(e.destroyed)throw new w(-205,!1)}function $e(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function fc(e){return!!e.deps}function hc(e){return e!==null&&typeof e=="object"&&typeof e.ngOnDestroy=="function"}function pc(e){return typeof e=="function"||typeof e=="object"&&e.ngMetadataName==="InjectionToken"}function hr(e,t){for(let n of e)Array.isArray(n)?hr(n,t):n&&fs(n)?hr(n.\u0275providers,t):t(n)}function Ts(e,t){let n;e instanceof ai?(ut(e),n=e):n=new Gu(e);let r,i=fe(n),o=z(void 0);try{return t()}finally{fe(i),z(o)}}function gc(){return vs()!==void 0||ls()!=null}var le=0,g=1,y=2,A=3,Z=4,W=5,vt=6,Jt=7,O=8,ve=9,ie=10,V=11,bt=12,Xi=13,nt=14,K=15,Oe=16,Qe=17,oe=18,be=19,Os=20,ge=21,Un=22,De=23,q=24,Zn=25,Me=26,F=27,Ds=1,Ji=6,Pe=7,en=8,Xe=9,T=10;function Ie(e){return Array.isArray(e)&&typeof e[Ds]=="object"}function ae(e){return Array.isArray(e)&&e[Ds]===!0}function Ms(e){return(e.flags&4)!==0}function wn(e){return e.componentOffset>-1}function Ps(e){return(e.flags&1)===1}function rt(e){return!!e.template}function tn(e){return(e[y]&512)!==0}function it(e){return(e[y]&256)===256}var mc="svg",yc="math";function X(e){for(;Array.isArray(e);)e=e[le];return e}function Ns(e,t){return X(t[e])}function ue(e,t){return X(t[e.index])}function ui(e,t){return e.data[t]}function Ne(e,t){let n=t[e];return Ie(n)?n:n[le]}function vc(e){return(e[y]&4)===4}function ci(e){return(e[y]&128)===128}function bc(e){return ae(e[A])}function se(e,t){return t==null?null:e[t]}function As(e){e[Qe]=0}function Vs(e){e[y]&1024||(e[y]|=1024,ci(e)&&Tt(e))}function wc(e,t){for(;e>0;)t=t[nt],e--;return t}function nn(e){return!!(e[y]&9216||e[q]?.dirty)}function pr(e){e[ie].changeDetectionScheduler?.notify(8),e[y]&64&&(e[y]|=1024),nn(e)&&Tt(e)}function Tt(e){e[ie].changeDetectionScheduler?.notify(0);let t=Ae(e);for(;t!==null&&!(t[y]&8192||(t[y]|=8192,!ci(t)));)t=Ae(t)}function Rs(e,t){if(it(e))throw new w(911,!1);e[ge]===null&&(e[ge]=[]),e[ge].push(t)}function _c(e,t){if(e[ge]===null)return;let n=e[ge].indexOf(t);n!==-1&&e[ge].splice(n,1)}function Ae(e){let t=e[A];return ae(t)?t[A]:t}function Ls(e){return e[Jt]??=[]}function js(e){return e.cleanup??=[]}function Cc(e,t,n,r){let i=Ls(t);i.push(n),e.firstCreatePass&&js(e).push(r,i.length-1)}var v={lFrame:Zs(null),bindingsEnabled:!0,skipHydrationRootTNode:null},gr=!1;function xc(){return v.lFrame.elementDepthCount}function kc(){v.lFrame.elementDepthCount++}function Sc(){v.lFrame.elementDepthCount--}function Ec(){return v.skipHydrationRootTNode!==null}function Ic(e){return v.skipHydrationRootTNode===e}function Tc(){v.skipHydrationRootTNode=null}function S(){return v.lFrame.lView}function U(){return v.lFrame.tView}function qe(e){return v.lFrame.contextLView=e,e[O]}function Ue(e){return v.lFrame.contextLView=null,e}function ce(){let e=Fs();for(;e!==null&&e.type===64;)e=e.parent;return e}function Fs(){return v.lFrame.currentTNode}function Oc(){let e=v.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function Ot(e,t){let n=v.lFrame;n.currentTNode=e,n.isParent=t}function Hs(){return v.lFrame.isParent}function Dc(){v.lFrame.isParent=!1}function zs(){return gr}function rn(e){let t=gr;return gr=e,t}function Mc(e){return v.lFrame.bindingIndex=e}function _n(){return v.lFrame.bindingIndex++}function Pc(e){let t=v.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}function Nc(){return v.lFrame.inI18n}function Ac(e,t){let n=v.lFrame;n.bindingIndex=n.bindingRootIndex=e,mr(t)}function Vc(){return v.lFrame.currentDirectiveIndex}function mr(e){v.lFrame.currentDirectiveIndex=e}function Rc(e){let t=v.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function Bs(){return v.lFrame.currentQueryIndex}function di(e){v.lFrame.currentQueryIndex=e}function Lc(e){let t=e[g];return t.type===2?t.declTNode:t.type===1?e[W]:null}function qs(e,t,n){if(n&4){let i=t,o=e;for(;(i=i.parent,i===null&&!(n&1))&&(i=Lc(o),!(i===null||(o=o[nt],i.type&10))););if(i===null)return!1;t=i,e=o}let r=v.lFrame=Us();return r.currentTNode=t,r.lView=e,!0}function fi(e){let t=Us(),n=e[g];v.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function Us(){let e=v.lFrame,t=e===null?null:e.child;return t===null?Zs(e):t}function Zs(e){let 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 e!==null&&(e.child=t),t}function $s(){let e=v.lFrame;return v.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var Qs=$s;function hi(){let e=$s();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 jc(e){return(v.lFrame.contextLView=wc(e,v.lFrame.contextLView))[O]}function Fe(){return v.lFrame.selectedIndex}function Ve(e){v.lFrame.selectedIndex=e}function Fc(){let e=v.lFrame;return ui(e.tView,e.selectedIndex)}function Hc(){return v.lFrame.currentNamespace}var Ws=!0;function pi(){return Ws}function gi(e){Ws=e}function eo(e,t=null,n=null,r){let i=zc(e,t,n,r);return i.resolveInjectorInitializers(),i}function zc(e,t=null,n=null,r,i=new Set){let o=[n||Te,oc(e)],s;return new ai(o,t||li(),s||null,i)}var Cn=class Gs{static THROW_IF_NOT_FOUND=Ee;static NULL=new xs;static create(t,n){if(Array.isArray(t))return eo({name:""},n,t,"");{let r=t.name??"";return eo({name:r},t.parent,t.providers,r)}}static \u0275prov=D({token:Gs,providedIn:"any",factory:()=>C(_s)});static __NG_ELEMENT_ID__=-1},we=new E(""),xn=(()=>{class e{static __NG_ELEMENT_ID__=Bc;static __NG_ENV_ID__=n=>n}return e})(),Ys=class extends xn{_lView;constructor(e){super(),this._lView=e}get destroyed(){return it(this._lView)}onDestroy(e){let t=this._lView;return Rs(t,e),()=>_c(t,e)}};function Bc(){return new Ys(S())}var qc=!1,Uc=new E(""),kn=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new Mu(!1);debugTaskTracker=b(Uc,{optional:!0});get hasPendingTasks(){return this.destroyed?!1:this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new lr(n=>{n.next(!1),n.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let n=this.taskId++;return this.pendingTasks.add(n),this.debugTaskTracker?.add(n),n}has(n){return this.pendingTasks.has(n)}remove(n){this.pendingTasks.delete(n),this.debugTaskTracker?.remove(n),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static \u0275prov=D({token:e,providedIn:"root",factory:()=>new e})}return e})(),Zc=class extends Et{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(e=!1){super(),this.__isAsync=e,gc()&&(this.destroyRef=b(xn,{optional:!0})??void 0,this.pendingTasks=b(kn,{optional:!0})??void 0)}emit(e){let t=m(null);try{super.next(e)}finally{m(t)}}subscribe(e,t,n){let r=e,i=t||(()=>null),o=n;if(e&&typeof e=="object"){let l=e;r=l.next?.bind(l),i=l.error?.bind(l),o=l.complete?.bind(l)}this.__isAsync&&(i=this.wrapInTimeout(i),r&&(r=this.wrapInTimeout(r)),o&&(o=this.wrapInTimeout(o)));let s=super.subscribe({next:r,error:i,complete:o});return e instanceof me&&e.add(s),s}wrapInTimeout(e){return t=>{let n=this.pendingTasks?.add();setTimeout(()=>{try{e(t)}finally{n!==void 0&&this.pendingTasks?.remove(n)}})}}},pe=Zc;function on(...e){}function Ks(e){let t,n;function r(){e=on;try{n!==void 0&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(n),t!==void 0&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame=="function"&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function $c(e){return queueMicrotask(()=>e()),()=>{e=on}}var mi="isAngularZone",sn=mi+"_ID",Qc=0,He=class yr{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new pe(!1);onMicrotaskEmpty=new pe(!1);onStable=new pe(!1);onError=new pe(!1);constructor(t){let{enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:r=!1,shouldCoalesceRunChangeDetection:i=!1,scheduleInRootZone:o=qc}=t;if(typeof Zone>"u")throw new w(908,!1);Zone.assertZonePatched();let s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!i&&r,s.shouldCoalesceRunChangeDetection=i,s.callbackScheduled=!1,s.scheduleInRootZone=o,Yc(s)}static isInAngularZone(){return typeof Zone<"u"&&Zone.current.get(mi)===!0}static assertInAngularZone(){if(!yr.isInAngularZone())throw new w(909,!1)}static assertNotInAngularZone(){if(yr.isInAngularZone())throw new w(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,i){let o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+i,t,Wc,on,on);try{return o.runTask(s,n,r)}finally{o.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}},Wc={};function yi(e){if(e._nesting==0&&!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 Gc(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){Ks(()=>{e.callbackScheduled=!1,vr(e),e.isCheckStableRunning=!0,yi(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),vr(e)}function Yc(e){let t=()=>{Gc(e)},n=Qc++;e._inner=e._inner.fork({name:"angular",properties:{[mi]:!0,[sn]:n,[sn+n]:!0},onInvokeTask:(r,i,o,s,l,a)=>{if(Xc(a))return r.invokeTask(o,s,l,a);try{return to(e),r.invokeTask(o,s,l,a)}finally{(e.shouldCoalesceEventChangeDetection&&s.type==="eventTask"||e.shouldCoalesceRunChangeDetection)&&t(),no(e)}},onInvoke:(r,i,o,s,l,a,u)=>{try{return to(e),r.invoke(o,s,l,a,u)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!Jc(a)&&t(),no(e)}},onHasTask:(r,i,o,s)=>{r.hasTask(o,s),i===o&&(s.change=="microTask"?(e._hasPendingMicrotasks=s.microTask,vr(e),yi(e)):s.change=="macroTask"&&(e.hasPendingMacrotasks=s.macroTask))},onHandleError:(r,i,o,s)=>(r.handleError(o,s),e.runOutsideAngular(()=>e.onError.emit(s)),!1)})}function vr(e){e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0?e.hasPendingMicrotasks=!0:e.hasPendingMicrotasks=!1}function to(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function no(e){e._nesting--,yi(e)}var Kc=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new pe;onMicrotaskEmpty=new pe;onStable=new pe;onError=new pe;run(e,t,n){return e.apply(t,n)}runGuarded(e,t,n){return e.apply(t,n)}runOutsideAngular(e){return e()}runTask(e,t,n,r){return e.apply(t,n)}};function Xc(e){return Xs(e,"__ignore_ng_zone__")}function Jc(e){return Xs(e,"__scheduler_tick__")}function Xs(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var Sn=class{_console=console;handleError(e){this._console.error("ERROR",e)}},Dt=new E("",{factory:()=>{let e=b(He),t=b(ye),n;return r=>{e.runOutsideAngular(()=>{t.destroyed&&!n?setTimeout(()=>{throw r}):(n??=t.get(Sn),n.handleError(r))})}}}),ed={provide:bn,useValue:()=>{let e=b(Sn,{optional:!0})},multi:!0},td=new E("",{factory:()=>{let e=b(we).defaultView;if(!e)return;let t=b(Dt),n=o=>{t(o.reason),o.preventDefault()},r=o=>{o.error?t(o.error):t(new Error(o.message,{cause:o})),o.preventDefault()},i=()=>{e.addEventListener("unhandledrejection",n),e.addEventListener("error",r)};typeof Zone<"u"?Zone.root.run(i):i(),b(xn).onDestroy(()=>{e.removeEventListener("error",r),e.removeEventListener("unhandledrejection",n)})}});function nd(){return ii([ic(()=>{b(td)})])}function H(e,t){let[n,r,i]=ou(e,t?.equal),o=n,s=o[ne];return o.set=r,o.update=i,o.asReadonly=rd.bind(o),o}function rd(){let e=this[ne];if(e.readonlyFn===void 0){let t=()=>this();t[ne]=e,e.readonlyFn=t}return e.readonlyFn}var Js=(()=>{class e{view;node;constructor(n,r){this.view=n,this.node=r}static __NG_ELEMENT_ID__=id}return e})();function id(){return new Js(S(),ce())}var vi=class{},bi=new E("",{factory:()=>!0}),od=new E(""),el=(()=>{class e{static \u0275prov=D({token:e,providedIn:"root",factory:()=>new sd})}return e})(),sd=class{dirtyEffectCount=0;queues=new Map;add(e){this.enqueue(e),this.schedule(e)}schedule(e){e.dirty&&this.dirtyEffectCount++}remove(e){let t=e.zone,n=this.queues.get(t);n.has(e)&&(n.delete(e),e.dirty&&this.dirtyEffectCount--)}enqueue(e){let t=e.zone;this.queues.has(t)||this.queues.set(t,new Set);let n=this.queues.get(t);n.has(e)||n.add(e)}flush(){for(;this.dirtyEffectCount>0;){let e=!1;for(let[t,n]of this.queues)t===null?e||=this.flushQueue(n):e||=t.run(()=>this.flushQueue(n));e||(this.dirtyEffectCount=0)}}flushQueue(e){let t=!1;for(let n of e)n.dirty&&(this.dirtyEffectCount--,t=!0,n.run());return t}},ld=class{[ne];constructor(e){this[ne]=e}destroy(){this[ne].destroy()}};function ro(e,t){let n=t?.injector??b(Cn),r=t?.manualCleanup!==!0?n.get(xn):null,i,o=n.get(Js,null,{optional:!0}),s=n.get(vi);return o!==null?(i=cd(o.view,s,e),r instanceof Ys&&r._lView===o.view&&(r=null)):i=dd(e,n.get(el),s),i.injector=n,r!==null&&(i.onDestroyFns=[r.onDestroy(()=>i.destroy())]),new ld(i)}var tl=Q($({},cu),{cleanupFns:void 0,zone:null,onDestroyFns:null,run(){let e=rn(!1);try{du(this)}finally{rn(e)}},cleanup(){if(!this.cleanupFns?.length)return;let e=m(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],m(e)}}}),ad=Q($({},tl),{consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(vn(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.scheduler.remove(this)}}),ud=Q($({},tl),{consumerMarkedDirty(){this.view[y]|=8192,Tt(this.view),this.notifier.notify(13)},destroy(){if(vn(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.view[De]?.delete(this)}});function cd(e,t,n){let r=Object.create(ud);return r.view=e,r.zone=typeof Zone<"u"?Zone.current:null,r.notifier=t,r.fn=nl(r,n),e[De]??=new Set,e[De].add(r),r.consumerMarkedDirty(r),r}function dd(e,t,n){let r=Object.create(ad);return r.fn=nl(r,e),r.scheduler=t,r.notifier=n,r.zone=typeof Zone<"u"?Zone.current:null,r.scheduler.add(r),r.notifier.notify(12),r}function nl(e,t){return()=>{t(n=>(e.cleanupFns??=[]).push(n))}}function fd(e){return{toString:e}.toString()}function hd(e){return typeof e=="function"}function rl(e,t,n,r){t!==null?t.applyValueToInputSignal(t,r):e[n]=r}var pd=class{previousValue;currentValue;firstChange;constructor(e,t,n){this.previousValue=e,this.currentValue=t,this.firstChange=n}isFirstChange(){return this.firstChange}};function gd(e){return e.type.prototype.ngOnChanges&&(e.setInput=yd),md}function md(){let e=ol(this),t=e?.current;if(t){let n=e.previous;if(n===Ye)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function yd(e,t,n,r,i){let o=this.declaredInputs[r],s=ol(e)||vd(e,{previous:Ye,current:null}),l=s.current||(s.current={}),a=s.previous,u=a[o];l[o]=new pd(u&&u.currentValue,n,a===Ye),rl(e,t,i,n)}var il="__ngSimpleChanges__";function ol(e){return e[il]||null}function vd(e,t){return e[il]=t}var io=[],x=function(e,t=null,n){for(let r=0;r=r)break}else t[a]<0&&(e[Qe]+=65536),(l>14>16&&(e[y]&3)===t&&(e[y]+=16384,oo(l,o)):oo(l,o)}var Ge=-1,Mt=class{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(e,t,n,r){this.factory=e,this.name=r,this.canSeeViewProviders=t,this.injectImpl=n}};function Cd(e,t,n){let r=0;for(;rt){s=o-1;break}}}for(;o>16}function an(e,t){let n=kd(e),r=t;for(;n>0;)r=r[nt],n--;return r}var br=!0;function lo(e){let t=br;return br=e,t}var Sd=256,al=Sd-1,ul=5,Ed=0,G={};function Id(e,t,n){let r;typeof n=="string"?r=n.charCodeAt(0)||0:n.hasOwnProperty(ht)&&(r=n[ht]),r==null&&(r=n[ht]=Ed++);let i=r&al,o=1<>ul)]|=o}function un(e,t){let n=cl(e,t);if(n!==-1)return n;let r=t[g];r.firstCreatePass&&(e.injectorIndex=t.length,Qn(r.data,e),Qn(t,null),Qn(r.blueprint,null));let i=wi(e,t),o=e.injectorIndex;if(ll(i)){let s=ln(i),l=an(i,t),a=l[g].data;for(let u=0;u<8;u++)t[o+u]=l[s+u]|a[s+u]}return t[o+8]=i,o}function Qn(e,t){e.push(0,0,0,0,0,0,0,0,t)}function cl(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function wi(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,i=t;for(;i!==null;){if(r=gl(i),r===null)return Ge;if(n++,i=i[nt],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return Ge}function wr(e,t,n){Id(e,t,n)}function dl(e,t,n){if(n&8||e!==void 0)return e;ni(t,"NodeInjector")}function fl(e,t,n,r){if(n&8&&r===void 0&&(r=null),(n&3)===0){let i=e[ve],o=z(void 0);try{return i?i.get(t,r,n&8):bs(t,r,n&8)}finally{z(o)}}return dl(r,t,n)}function hl(e,t,n,r=0,i){if(e!==null){if(t[y]&2048&&!(r&2)){let s=Md(e,t,n,r,G);if(s!==G)return s}let o=pl(e,t,n,r,G);if(o!==G)return o}return fl(t,n,r,i)}function pl(e,t,n,r,i){let o=Od(n);if(typeof o=="function"){if(!qs(t,e,r))return r&1?dl(i,n,r):fl(t,n,r,i);try{let s;if(s=o(r),s==null&&!(r&8))ni(n);else return s}finally{Qs()}}else if(typeof o=="number"){let s=null,l=cl(e,t),a=Ge,u=r&1?t[K][W]:null;for((l===-1||r&4)&&(a=l===-1?wi(e,t):t[l+8],a===Ge||!uo(r,!1)?l=-1:(s=t[g],l=ln(a),t=an(a,t)));l!==-1;){let c=t[g];if(ao(o,l,c.data)){let d=Td(l,t,n,s,r,u);if(d!==G)return d}a=t[l+8],a!==Ge&&uo(r,t[g].data[l+8]===u)&&ao(o,l,t)?(s=c,l=ln(a),t=an(a,t)):l=-1}}return i}function Td(e,t,n,r,i,o){let s=t[g],l=s.data[e+8],a=r==null?wn(l)&&br:r!=s&&(l.type&3)!==0,u=i&1&&o===l,c=Zt(l,s,n,a,u);return c!==null?wt(t,s,c,l,i):G}function Zt(e,t,n,r,i){let o=e.providerIndexes,s=t.data,l=o&1048575,a=e.directiveStart,u=e.directiveEnd,c=o>>20,d=r?l:l+c,h=i?l+c:u;for(let f=d;f=a&&p.type===n)return f}if(i){let f=s[a];if(f&&rt(f)&&f.type===n)return a}return null}function wt(e,t,n,r,i){let o=e[n],s=t.data;if(o instanceof Mt){let l=o;if(l.resolving)throw ms("");let a=lo(l.canSeeViewProviders);l.resolving=!0;let u=s[n].type||s[n],c,d=l.injectImpl?z(l.injectImpl):null,h=qs(e,r,0);try{o=e[n]=l.factory(void 0,i,s,e,r),t.firstCreatePass&&n>=r.directiveStart&&bd(n,s[n],t)}finally{d!==null&&z(d),lo(a),l.resolving=!1,Qs()}}return o}function Od(e){if(typeof e=="string")return e.charCodeAt(0)||0;let t=e.hasOwnProperty(ht)?e[ht]:void 0;return typeof t=="number"?t>=0?t&al:Dd:t}function ao(e,t,n){let r=1<>ul)]&r)}function uo(e,t){return!(e&2)&&!(e&1&&t)}var pt=class{_tNode;_lView;constructor(e,t){this._tNode=e,this._lView=t}get(e,t,n){return hl(this._tNode,this._lView,e,mt(n),t)}};function Dd(){return new pt(ce(),S())}function Md(e,t,n,r,i){let o=e,s=t;for(;o!==null&&s!==null&&s[y]&2048&&!tn(s);){let l=pl(o,s,n,r|2,G);if(l!==G)return l;let a=o.parent;if(!a){let u=s[Os];if(u){let c=u.get(n,G,r&-5);if(c!==G)return c}a=gl(s),s=s[nt]}o=a}return i}function gl(e){let t=e[g],n=t.type;return n===2?t.declTNode:n===1?e[W]:null}function Pd(){return ot(ce(),S())}function ot(e,t){return new In(ue(e,t))}var In=(()=>{class e{nativeElement;constructor(n){this.nativeElement=n}static __NG_ELEMENT_ID__=Pd}return e})();function Nd(e){return e instanceof In?e.nativeElement:e}function Ad(){return this._results[Symbol.iterator]()}var Vd=class{_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 Et}constructor(e=!1){this._emitDistinctChangesOnly=e}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,t){return this._results.reduce(e,t)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,t){this.dirty=!1;let n=ec(e);(this._changesDetected=!Ju(this._results,n,t))&&(this._results=n,this.length=n.length,this.last=n[this.length-1],this.first=n[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.next(this)}onDirty(e){this._onDirty=e}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}[Symbol.iterator]=Ad};function ml(e){return(e.flags&128)===128}var yl=function(e){return e[e.OnPush=0]="OnPush",e[e.Eager=1]="Eager",e[e.Default=1]="Default",e}(yl||{}),vl=new Map,Rd=0;function Ld(){return Rd++}function jd(e){vl.set(e[be],e)}function _r(e){vl.delete(e[be])}var co="__ngContext__";function Je(e,t){Ie(t)?(e[co]=t[be],jd(t)):e[co]=t}function bl(e){return _l(e[bt])}function wl(e){return _l(e[Z])}function _l(e){for(;e!==null&&!ae(e);)e=e[Z];return e}var Cr;function Fd(e){Cr=e}function Hd(){if(Cr!==void 0)return Cr;if(typeof document<"u")return document;throw new w(210,!1)}var Cl=new E("",{factory:()=>zd}),zd="ng",xl=new E(""),kl=new E("",{providedIn:"platform",factory:()=>"unknown"}),Sl=new E("",{factory:()=>b(we).body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null}),Bd="r",qd="di",El=!1,Ud=new E("",{factory:()=>El}),fo=new WeakMap;function Zd(e,t){if(e==null||typeof e!="object")return;let n=fo.get(e);n||(n=new WeakSet,fo.set(e,n)),n.add(t)}var $d=(e,t,n,r)=>{};function Qd(e,t,n,r){$d(e,t,n,r)}function Il(e){return(e.flags&32)===32}var Wd=()=>null;function Tl(e,t,n=!1){return Wd(e,t,n)}function Ol(e,t){let n=e.contentQueries;if(n!==null){let r=m(null);try{for(let i=0;ie,createScript:e=>e,createScriptURL:e=>e})}catch{}return Vt}function Tn(e){return Yd()?.createHTML(e)||e}var Rt;function Kd(){if(Rt===void 0&&(Rt=null,Kt.trustedTypes))try{Rt=Kt.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return Rt}function ho(e){return Kd()?.createHTML(e)||e}var ze=class{changingThisBreaksApplicationSecurity;constructor(e){this.changingThisBreaksApplicationSecurity=e}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${as})`}},Xd=class extends ze{getTypeName(){return"HTML"}},Jd=class extends ze{getTypeName(){return"Style"}},ef=class extends ze{getTypeName(){return"Script"}},tf=class extends ze{getTypeName(){return"URL"}},nf=class extends ze{getTypeName(){return"ResourceURL"}};function Ce(e){return e instanceof ze?e.changingThisBreaksApplicationSecurity:e}function Ze(e,t){let n=rf(e);if(n!=null&&n!==t){if(n==="ResourceURL"&&t==="URL")return!0;throw new Error(`Required a safe ${t}, got a ${n} (see ${as})`)}return n===t}function rf(e){return e instanceof ze&&e.getTypeName()||null}function of(e){return new Xd(e)}function sf(e){return new Jd(e)}function lf(e){return new ef(e)}function af(e){return new tf(e)}function uf(e){return new nf(e)}function cf(e){let t=new ff(e);return hf()?new df(t):t}var df=class{inertDocumentHelper;constructor(e){this.inertDocumentHelper=e}getInertBodyElement(e){e=""+e;try{let t=new window.DOMParser().parseFromString(Tn(e),"text/html").body;return t===null?this.inertDocumentHelper.getInertBodyElement(e):(t.firstChild?.remove(),t)}catch{return null}}},ff=class{defaultDoc;inertDocument;constructor(e){this.defaultDoc=e,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(e){let t=this.inertDocument.createElement("template");return t.innerHTML=Tn(e),t}};function hf(){try{return!!new window.DOMParser().parseFromString(Tn(""),"text/html")}catch{return!1}}var pf=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Dl(e){return e=String(e),e.match(pf)?e:"unsafe:"+e}function de(e){let t={};for(let n of e.split(","))t[n]=!0;return t}function Pt(...e){let t={};for(let n of e)for(let r in n)n.hasOwnProperty(r)&&(t[r]=!0);return t}var Ml=de("area,br,col,hr,img,wbr"),Pl=de("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),Nl=de("rp,rt"),gf=Pt(Nl,Pl),mf=Pt(Pl,de("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")),yf=Pt(Nl,de("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")),po=Pt(Ml,mf,yf,gf),Al=de("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),vf=de("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"),bf=de("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"),wf=Pt(Al,vf,bf),_f=de("script,style,template"),Cf=class{sanitizedSomething=!1;buf=[];sanitizeChildren(e){let t=e.firstChild,n=!0,r=[];for(;t;){if(t.nodeType===Node.ELEMENT_NODE?n=this.startElement(t):t.nodeType===Node.TEXT_NODE?this.chars(t.nodeValue):this.sanitizedSomething=!0,n&&t.firstChild){r.push(t),t=Sf(t);continue}for(;t;){t.nodeType===Node.ELEMENT_NODE&&this.endElement(t);let i=kf(t);if(i){t=i;break}t=r.pop()}}return this.buf.join("")}startElement(e){let t=go(e).toLowerCase();if(!po.hasOwnProperty(t))return this.sanitizedSomething=!0,!_f.hasOwnProperty(t);this.buf.push("<"),this.buf.push(t);let n=e.attributes;for(let r=0;r"),!0}endElement(e){let t=go(e).toLowerCase();po.hasOwnProperty(t)&&!Ml.hasOwnProperty(t)&&(this.buf.push(""))}chars(e){this.buf.push(mo(e))}};function xf(e,t){return(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}function kf(e){let t=e.nextSibling;if(t&&e!==t.previousSibling)throw Vl(t);return t}function Sf(e){let t=e.firstChild;if(t&&xf(e,t))throw Vl(t);return t}function go(e){let t=e.nodeName;return typeof t=="string"?t:"FORM"}function Vl(e){return new Error(`Failed to sanitize html because the element is clobbered: ${e.outerHTML}`)}var Ef=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,If=/([^\#-~ |!])/g;function mo(e){return e.replace(/&/g,"&").replace(Ef,function(t){let n=t.charCodeAt(0),r=t.charCodeAt(1);return"&#"+((n-55296)*1024+(r-56320)+65536)+";"}).replace(If,function(t){return"&#"+t.charCodeAt(0)+";"}).replace(//g,">")}var Lt;function Rl(e,t){let n=null;try{Lt=Lt||cf(e);let r=t?String(t):"";n=Lt.getInertBodyElement(r);let i=5,o=r;do{if(i===0)throw new Error("Failed to sanitize html because the input is unstable");i--,r=o,o=n.innerHTML,n=Lt.getInertBodyElement(r)}while(r!==o);let s=new Cf().sanitizeChildren(yo(n)||n);return Tn(s)}finally{if(n){let r=yo(n)||n;for(;r.firstChild;)r.firstChild.remove()}}}function yo(e){return"content"in e&&Tf(e)?e.content:null}function Tf(e){return e.nodeType===Node.ELEMENT_NODE&&e.nodeName==="TEMPLATE"}function Of(e,t){return e.createText(t)}function Df(e,t,n){e.setValue(t,n)}function Ll(e,t,n){return e.createElement(t,n)}function cn(e,t,n,r,i){e.insertBefore(t,n,r,i)}function jl(e,t,n){e.appendChild(t,n)}function vo(e,t,n,r,i){r!==null?cn(e,t,n,r,i):jl(e,t,n)}function Fl(e,t,n,r){e.removeChild(null,t,n,r)}function Mf(e,t,n){e.setAttribute(t,"style",n)}function Pf(e,t,n){n===""?e.removeAttribute(t,"class"):e.setAttribute(t,"class",n)}function Hl(e,t,n){let{mergedAttrs:r,classes:i,styles:o}=n;r!==null&&Cd(e,t,r),i!==null&&Pf(e,t,i),o!==null&&Mf(e,t,o)}var he=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}(he||{});function Nf(e){let t=Af();return t?ho(t.sanitize(he.HTML,e)||""):Ze(e,"HTML")?ho(Ce(e)):Rl(Hd(),ps(e))}function Af(){let e=S();return e&&e[ie].sanitizer}var Vf="ng-template";function Rf(e){return e.type===4&&e.value!==Vf}function kr(e){return(e&1)===0}function bo(e,t){return e?":not("+t.trim()+")":t}function Lf(e){let t=e[0],n=1,r=2,i="",o=!1;for(;n0?'="'+l+'"':"")+"]"}else r&8?i+="."+s:r&4&&(i+=" "+s);else i!==""&&!kr(s)&&(t+=bo(o,i),i=""),r=s,o=o||!kr(r);n++}return i!==""&&(t+=bo(o,i)),t}function jf(e){return e.map(Lf).join(",")}function Ff(e){let t=[],n=[],r=1,i=2;for(;r=0;o--){let s=n[o],l=s.parentNode;s===t?(n.splice(o,1),ct.add(s),s.dispatchEvent(new CustomEvent("animationend",{detail:{cancel:!0}}))):(i&&s===i||l&&r&&l!==r)&&(n.splice(o,1),s.dispatchEvent(new CustomEvent("animationend",{detail:{cancel:!0}})),s.parentNode?.removeChild(s))}}function Zf(e,t){let n=Er.get(e);n?n.includes(t)||n.push(t):Er.set(e,[t])}var _t=new Set,Ul=function(e){return e[e.CHANGE_DETECTION=0]="CHANGE_DETECTION",e[e.AFTER_NEXT_RENDER=1]="AFTER_NEXT_RENDER",e}(Ul||{}),Dn=new E(""),wo=new Set;function st(e){wo.has(e)||(wo.add(e),performance?.mark?.("mark_feature_usage",{detail:{feature:e}}))}var $f=(()=>{class e{impl=null;execute(){this.impl?.execute()}static \u0275prov=D({token:e,providedIn:"root",factory:()=>new e})}return e})(),Zl=new E("",{factory:()=>({queue:new Set,isScheduled:!1,scheduler:null,injector:b(ye)})});function $l(e,t,n){let r=e.get(Zl);if(Array.isArray(t))for(let i of t)r.queue.add(i),n?.detachedLeaveAnimationFns?.push(i);else r.queue.add(t),n?.detachedLeaveAnimationFns?.push(t);r.scheduler&&r.scheduler(e)}function Qf(e,t){let n=e.get(Zl);if(t.detachedLeaveAnimationFns){for(let r of t.detachedLeaveAnimationFns)n.queue.delete(r);t.detachedLeaveAnimationFns=void 0}}function Wf(e,t){for(let[n,r]of t)$l(e,r.animateFns)}function _o(e,t,n,r){let i=e?.[Me]?.enter;t!==null&&i&&i.has(n.index)&&Wf(r,i)}function We(e,t,n,r,i,o,s,l){if(i!=null){let a,u=!1;ae(i)?a=i:Ie(i)&&(u=!0,i=i[le]);let c=X(i);e===0&&r!==null?(_o(l,r,o,n),s==null?jl(t,r,c):cn(t,r,c,s||null,!0)):e===1&&r!==null?(_o(l,r,o,n),cn(t,r,c,s||null,!0),Uf(o,c)):e===2?(l?.[Me]?.leave?.has(o.index)&&Zf(o,c),ct.delete(c),Co(l,o,n,d=>{if(ct.has(c)){ct.delete(c);return}Fl(t,c,u,d)})):e===3&&(ct.delete(c),Co(l,o,n,()=>{t.destroyNode(c)})),a!=null&&lh(t,e,n,a,o,r,s)}}function Gf(e,t){Ql(e,t),t[le]=null,t[W]=null}function Yf(e,t,n,r,i,o){r[le]=i,r[W]=t,Pn(e,r,n,1,i,o)}function Ql(e,t){t[ie].changeDetectionScheduler?.notify(9),Pn(e,t,t[V],2,null,null)}function Kf(e){let t=e[bt];if(!t)return Wn(e[g],e);for(;t;){let n=null;if(Ie(t))n=t[bt];else{let r=t[T];r&&(n=r)}if(!n){for(;t&&!t[Z]&&t!==e;)Ie(t)&&Wn(t[g],t),t=t[A];t===null&&(t=e),Ie(t)&&Wn(t[g],t),n=t&&t[Z]}t=n}}function Si(e,t){let n=e[Xe],r=n.indexOf(t);n.splice(r,1)}function Mn(e,t){if(it(t))return;let n=t[V];n.destroyNode&&Pn(e,t,n,3,null,null),Kf(t)}function Wn(e,t){if(it(t))return;let n=m(null);try{t[y]&=-129,t[y]|=256,t[q]&&vn(t[q]),eh(e,t),Jf(e,t),t[g].type===1&&t[V].destroy();let r=t[Oe];if(r!==null&&ae(t[A])){r!==t[A]&&Si(r,t);let i=t[oe];i!==null&&i.detachView(e)}_r(t)}finally{m(n)}}function Co(e,t,n,r){let i=e?.[Me];if(i==null||i.leave==null||!i.leave.has(t.index))return r(!1);e&&_t.add(e[be]),$l(n,()=>{if(i.leave&&i.leave.has(t.index)){let o=i.leave.get(t.index),s=[];if(o){for(let l=0;l{e[Me].running=void 0,_t.delete(e[be]),t(!0)});return}t(!1)}function Jf(e,t){let n=e.cleanup,r=t[Jt];if(n!==null)for(let s=0;s=0?r[l]():r[-l].unsubscribe(),s+=2}else{let l=r[n[s+1]];n[s].call(l)}r!==null&&(t[Jt]=null);let i=t[ge];if(i!==null){t[ge]=null;for(let s=0;sF&&ql(e,t,F,!1);let l=s?_.TemplateUpdateStart:_.TemplateCreateStart;x(l,i,n),n(r,i)}finally{Ve(o);let l=s?_.TemplateUpdateEnd:_.TemplateCreateEnd;x(l,i,n)}}function uh(e,t,n){ph(e,t,n),(n.flags&64)===64&&gh(e,t,n)}function Yl(e,t,n=ue){let r=t.localNames;if(r!==null){let i=t.index+1;for(let o=0;onull;function hh(e,t,n,r,i,o){if(e.type&3){let s=ue(e,t);r=o!=null?o(r,e.value||"",n):r,i.setProperty(s,n,r)}else e.type&12}function ph(e,t,n){let r=n.directiveStart,i=n.directiveEnd;wn(n)&&Bf(t,n,e.data[r+n.componentOffset]),e.firstCreatePass||un(n,t);let o=n.initialInputs;for(let s=r;s{Tt(e.lView)},consumerOnSignalRead(){this.lView[q]=this}});function Dh(e){let t=e[q]??Object.create(Mh);return t.lView=e,t}var Mh=Q($({},St),{consumerIsAlwaysLive:!0,kind:"template",consumerMarkedDirty:e=>{let t=Ae(e.lView);for(;t&&!Jl(t[g]);)t=Ae(t);t&&Vs(t)},consumerOnSignalRead(){this.lView[q]=this}});function Jl(e){return e.type!==2}function ea(e){if(e[De]===null)return;let t=!0;for(;t;){let n=!1;for(let r of e[De])r.dirty&&(n=!0,r.zone===null||Zone.current===r.zone?r.run():r.zone.run(()=>r.run()));t=n&&!!(e[y]&8192)}}var Ph=100;function ta(e,t=0){let n=e[ie].rendererFactory,r=!1;r||n.begin?.();try{Nh(e,t)}finally{r||n.end?.()}}function Nh(e,t){let n=zs();try{rn(!0),Tr(e,t);let r=0;for(;nn(e);){if(r===Ph)throw new w(103,!1);r++,Tr(e,1)}}finally{rn(n)}}function Ah(e,t,n,r){if(it(t))return;let i=t[y],o=!1,s=!1;fi(t);let l=!0,a=null,u=null;o||(Jl(e)?(u=Eh(t),a=Gt(u)):Wa()===null?(l=!1,u=Dh(t),a=Gt(u)):t[q]&&(vn(t[q]),t[q]=null));try{As(t),Mc(e.bindingStartIndex),n!==null&&Gl(e,t,n,2,r);let c=(i&3)===3;if(!o)if(c){let f=e.preOrderCheckHooks;f!==null&&qt(t,f,null)}else{let f=e.preOrderHooks;f!==null&&Ut(t,f,0,null),$n(t,0)}if(s||Vh(t),ea(t),na(t,0),e.contentQueries!==null&&Ol(e,t),!o)if(c){let f=e.contentCheckHooks;f!==null&&qt(t,f)}else{let f=e.contentHooks;f!==null&&Ut(t,f,1),$n(t,1)}Lh(e,t);let d=e.components;d!==null&&ia(t,d,0);let h=e.viewQuery;if(h!==null&&xr(2,h,r),!o)if(c){let f=e.viewCheckHooks;f!==null&&qt(t,f)}else{let f=e.viewHooks;f!==null&&Ut(t,f,2),$n(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[Un]){for(let f of t[Un])f();t[Un]=null}o||(Kl(t),t[y]&=-73)}catch(c){throw o||Tt(t),c}finally{u!==null&&(Wr(u,a),l&&Th(u)),hi()}}function na(e,t){for(let n=bl(e);n!==null;n=wl(n))for(let r=T;r0&&(e[n-1][Z]=r[Z]);let o=Xt(e,T+t);Gf(r[g],r);let s=o[oe];s!==null&&s.detachView(o[g]),r[A]=null,r[Z]=null,r[y]&=-129}return r}function jh(e,t,n,r){let i=T+r,o=n.length;r>0&&(n[i-1][Z]=t),r-1&&(xt(e,n),Xt(t,n))}this._attachedToViewContainer=!1}Mn(this._lView[g],this._lView)}onDestroy(e){Rs(this._lView,e)}markForCheck(){Oi(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[y]&=-129}reattach(){pr(this._lView),this._lView[y]|=128}detectChanges(){this._lView[y]|=1024,ta(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new w(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let e=tn(this._lView),t=this._lView[Oe];t!==null&&!e&&Si(t,this._lView),Ql(this._lView[g],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new w(902,!1);this._appRef=e;let t=tn(this._lView),n=this._lView[Oe];n!==null&&!t&&aa(n,this._lView),pr(this._lView)}},fn=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=Fh;constructor(n,r,i){this._declarationLView=n,this._declarationTContainer=r,this.elementRef=i}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(n,r){return this.createEmbeddedViewImpl(n,r)}createEmbeddedViewImpl(n,r,i){let o=Nn(this._declarationLView,this._declarationTContainer,n,{embeddedViewInjector:r,dehydratedView:i});return new Di(o)}}return e})();function Fh(){return Mi(ce(),S())}function Mi(e,t){return e.type&4?new fn(t,e,ot(e,t)):null}function Vn(e,t,n,r,i){let o=e.data[t];if(o===null)o=Hh(e,t,n,r,i),Nc()&&(o.flags|=32);else if(o.type&64){o.type=n,o.value=r,o.attrs=i;let s=Oc();o.injectorIndex=s===null?-1:s.injectorIndex}return Ot(o,!0),o}function Hh(e,t,n,r,i){let o=Fs(),s=Hs(),l=s?o:o&&o.parent,a=e.data[t]=Bh(e,l,n,t,r,i);return zh(e,a,o,s),a}function zh(e,t,n,r){e.firstChild===null&&(e.firstChild=t),n!==null&&(r?n.child==null&&t.parent!==null&&(n.child=t):n.next===null&&(n.next=t,t.prev=n))}function Bh(e,t,n,r,i,o){let s=t?t.injectorIndex:-1,l=0;return Ec()&&(l|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:l,providerIndexes:0,value:i,attrs:o,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex: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}}function qh(e){let t=e[Ji]??[],n=e[A][V],r=[];for(let i of t)i.data[qd]!==void 0?r.push(i):Uh(i,n);e[Ji]=r}function Uh(e,t){let n=0,r=e.firstChild;if(r){let i=e.data[Bd];for(;nnull,$h=()=>null;function Or(e,t){return Zh(e,t)}function ua(e,t,n){return $h(e,t,n)}var Qh=class{},ca=class{},Wh=class{resolveComponentFactory(e){throw new w(917,!1)}},Pi=class{static NULL=new Wh},Ni=class{},Gh=(()=>{class e{static \u0275prov=D({token:e,providedIn:"root",factory:()=>null})}return e})(),Gn={},Yh=class{injector;parentInjector;constructor(e,t){this.injector=e,this.parentInjector=t}get(e,t,n){let r=this.injector.get(e,Gn,n);return r!==Gn||t===Gn?r:this.parentInjector.get(e,t,n)}};function hn(e,t,n){let r=n?e.styles:null,i=n?e.classes:null,o=0;if(t!==null)for(let s=0;s0&&(n.directiveToIndex=new Map);for(let h=0;h0;){let n=e[--t];if(typeof n=="number"&&n<0)return n}return 0}function op(e,t,n){if(n){if(t.exportAs)for(let r=0;rr(X(M[e.index])):e.index;pp(p,t,n,o,l,f,!1)}}return u}function fp(e){return e.startsWith("animation")||e.startsWith("transition")}function hp(e,t,n,r){let i=e.cleanup;if(i!=null)for(let o=0;oa?l[a]:null}typeof s=="string"&&(o+=2)}return null}function pp(e,t,n,r,i,o,s){let l=t.firstCreatePass?js(t):null,a=Ls(n),u=a.length;a.push(i,o),l&&l.push(r,e,u,(u+1)*(s?-1:1))}var Dr=Symbol("BINDING");function gp(e){return e.debugInfo?.className||e.type.name||null}var mp=class extends Pi{ngModule;constructor(e){super(),this.ngModule=e}resolveComponentFactory(e){let t=gt(e);return new fa(t,this.ngModule)}};function yp(e){return Object.keys(e).map(t=>{let[n,r,i]=e[t],o={propName:n,templateName:t,isSignal:(r&On.SignalBased)!==0};return i&&(o.transform=i),o})}function vp(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function bp(e,t,n){let r=t instanceof ye?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new Yh(n,r):n}function wp(e){let t=e.get(Ni,null);if(t===null)throw new w(407,!1);let n=e.get(Gh,null),r=e.get(vi,null),i=e.get(Dn,null,{optional:!0});return{rendererFactory:t,sanitizer:n,changeDetectionScheduler:r,ngReflect:!1,tracingService:i}}function _p(e,t){let n=Cp(e);return Ll(t,n,n==="svg"?mc:n==="math"?yc:null)}function Cp(e){return(e.selectors[0][0]||"div").toLowerCase()}var fa=class extends ca{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=yp(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=vp(this.componentDef.outputs),this.cachedOutputs}constructor(e,t){super(),this.componentDef=e,this.ngModule=t,this.componentType=e.type,this.selector=jf(e.selectors),this.ngContentSelectors=e.ngContentSelectors??[],this.isBoundToModule=!!t}create(e,t,n,r,i,o){x(_.DynamicComponentStart);let s=m(null);try{let l=this.componentDef,a=bp(l,r||this.ngModule,e),u=wp(a),c=u.tracingService;return c&&c.componentCreate?c.componentCreate(gp(l),()=>this.createComponentRef(u,a,t,n,i,o)):this.createComponentRef(u,a,t,n,i,o)}finally{m(s)}}createComponentRef(e,t,n,r,i,o){let s=this.componentDef,l=xp(r,s,o,i),a=e.rendererFactory.createRenderer(null,s),u=r?ch(a,r,s.encapsulation,t):_p(s,a),c=o?.some(To)||i?.some(f=>typeof f!="function"&&f.bindings.some(To)),d=Ci(null,l,null,512|zl(s),null,null,e,a,t,null,Tl(u,t,!0));d[F]=u,fi(d);let h=null;try{let f=lp(F,d,2,"#host",()=>l.directiveRegistry,!0,0);Hl(a,u,f),Je(u,d),uh(l,d,f),Gd(l,f,d),ap(l,f),n!==void 0&&Ep(f,this.ngContentSelectors,n),h=Ne(f.index,d),d[O]=h[O],Ti(l,d,null)}catch(f){throw h!==null&&_r(h),_r(d),f}finally{x(_.DynamicComponentEnd),hi()}return new Sp(this.componentType,d,!!c)}};function xp(e,t,n,r){let i=e?["ng-version","21.2.11"]:Ff(t.selectors[0]),o=null,s=null,l=0;if(n)for(let u of n)l+=u[Dr].requiredVars,u.create&&(u.targetIdx=0,(o??=[]).push(u)),u.update&&(u.targetIdx=0,(s??=[]).push(u));if(r)for(let u=0;u{if(n&1&&e)for(let r of e)r.create();if(n&2&&t)for(let r of t)r.update()}}function To(e){let t=e[Dr].kind;return t==="input"||t==="twoWay"}var Sp=class extends Qh{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(e,t,n){super(),this._rootLView=t,this._hasInputBindings=n,this._tNode=ui(t[g],F),this.location=ot(this._tNode,t),this.instance=Ne(this._tNode.index,t)[O],this.hostView=this.changeDetectorRef=new Di(t,void 0),this.componentType=e}setInput(e,t){this._hasInputBindings;let n=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(e)&&Object.is(this.previousInputValues.get(e),t))return;let r=this._rootLView,i=_h(n,r[g],r,e,t);this.previousInputValues.set(e,t);let o=Ne(n.index,r);Oi(o,1)}get injector(){return new pt(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(e){this.hostView.onDestroy(e)}};function Ep(e,t,n){let r=e.projection=[];for(let i=0;i{class e{static __NG_ELEMENT_ID__=Ip}return e})();function Ip(){let e=ce();return pa(e,S())}var Tp=class ha extends Vi{_lContainer;_hostTNode;_hostLView;constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return ot(this._hostTNode,this._hostLView)}get injector(){return new pt(this._hostTNode,this._hostLView)}get parentInjector(){let t=wi(this._hostTNode,this._hostLView);if(ll(t)){let n=an(t,this._hostLView),r=ln(t),i=n[g].data[r+8];return new pt(i,n)}else return new pt(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){let n=Oo(this._lContainer);return n!==null&&n[t]||null}get length(){return this._lContainer.length-T}createEmbeddedView(t,n,r){let i,o;typeof r=="number"?i=r:r!=null&&(i=r.index,o=r.injector);let s=Or(this._lContainer,t.ssrId),l=t.createEmbeddedViewImpl(n||{},o,s);return this.insertImpl(l,i,Ct(this._hostTNode,s)),l}createComponent(t,n,r,i,o,s,l){let a=t&&!hd(t),u;if(a)u=n;else{let I=n||{};u=I.index,r=I.injector,i=I.projectableNodes,o=I.environmentInjector||I.ngModuleRef,s=I.directives,l=I.bindings}let c=a?t:new fa(gt(t)),d=r||this.parentInjector;if(!o&&c.ngModule==null){let I=(a?d:this.parentInjector).get(ye,null);I&&(o=I)}let h=gt(c.componentType??{}),f=Or(this._lContainer,h?.id??null),p=f?.firstChild??null,M=c.create(d,i,p,o,s,l);return this.insertImpl(M.hostView,u,Ct(this._hostTNode,f)),M}insert(t,n){return this.insertImpl(t,n,!0)}insertImpl(t,n,r){let i=t._lView;if(bc(i)){let l=this.indexOf(t);if(l!==-1)this.detach(l);else{let a=i[A],u=new ha(a,a[W],a[A]);u.detach(u.indexOf(t))}}let o=this._adjustIndex(n),s=this._lContainer;return An(s,i,o,r),t.attachToViewContainerRef(),ws(Yn(s),o,t),t}move(t,n){return this.insert(t,n)}indexOf(t){let n=Oo(this._lContainer);return n!==null?n.indexOf(t):-1}remove(t){let n=this._adjustIndex(t,-1),r=xt(this._lContainer,n);r&&(Xt(Yn(this._lContainer),n),Mn(r[g],r))}detach(t){let n=this._adjustIndex(t,-1),r=xt(this._lContainer,n);return r&&Xt(Yn(this._lContainer),n)!=null?new Di(r):null}_adjustIndex(t,n=0){return t??this.length+n}};function Oo(e){return e[en]}function Yn(e){return e[en]||(e[en]=[])}function pa(e,t){let n,r=t[e.index];return ae(r)?n=r:(n=oa(r,t,null,e),t[e.index]=n,xi(t,n)),Dp(n,t,e,r),new Tp(n,e,t)}function Op(e,t){let n=e[V],r=n.createComment(""),i=ue(t,e),o=n.parentNode(i);return cn(n,o,r,n.nextSibling(i),!1),r}var Dp=Np,Mp=()=>!1;function Pp(e,t,n){return Mp(e,t,n)}function Np(e,t,n,r){if(e[Pe])return;let i;n.type&8?i=X(r):i=Op(t,n),e[Pe]=i}var Ap=class ga{queryList;matches=null;constructor(t){this.queryList=t}clone(){return new ga(this.queryList)}setDirty(){this.queryList.setDirty()}},Vp=class ma{queries;constructor(t=[]){this.queries=t}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries!==null?t.contentQueries[0]:n.length,i=[];for(let o=0;o0)r.push(s[l/2]);else{let u=o[l+1],c=t[-a];for(let d=T;dt.trim())}function Qp(e,t,n){e.queries===null&&(e.queries=new Lp),e.queries.track(new jp(t,n))}function Ri(e,t){return e.queries.getByIndex(t)}function Wp(e,t){let n=e[g],r=Ri(n,t);return r.crossesNgTemplate?Mr(n,e,t,[]):ba(n,e,r,t)}var Pr=class{},wa=class extends Pr{injector;componentFactoryResolver=new mp(this);instance=null;constructor(e){super();let t=new ai([...e.providers,{provide:Pr,useValue:this},{provide:Pi,useValue:this.componentFactoryResolver}],e.parent||li(),e.debugName,new Set(["environment"]));this.injector=t,e.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function Gp(e,t,n=null){return new wa({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var Yp=(()=>{class e{_injector;cachedInjectors=new Map;constructor(n){this._injector=n}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){let r=ks(!1,n.type),i=r.length>0?Gp([r],this._injector,""):null;this.cachedInjectors.set(n,i)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&&n.destroy()}finally{this.cachedInjectors.clear()}}static \u0275prov=D({token:e,providedIn:"environment",factory:()=>new e(C(ye))})}return e})();function Kp(e){return fd(()=>{let t=tg(e),n=Q($({},t),{decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===yl.OnPush,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?i=>i.get(Yp).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||re.Emulated,styles:e.styles||Te,_:null,schemas:e.schemas||null,tView:null,id:""});t.standalone&&st("NgStandalone"),ng(n);let r=e.dependencies;return n.directiveDefs=Do(r,Xp),n.pipeDefs=Do(r,qu),n.id=rg(n),n})}function Xp(e){return gt(e)||hs(e)}function Jp(e,t){if(e==null)return Ye;let n={};for(let r in e)if(e.hasOwnProperty(r)){let i=e[r],o,s,l,a;Array.isArray(i)?(l=i[0],o=i[1],s=i[2]??o,a=i[3]||null):(o=i,s=i,l=On.None,a=null),n[o]=[r,l,a],t[o]=s}return n}function eg(e){if(e==null)return Ye;let t={};for(let n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}function tg(e){let t={};return{type:e.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputConfig:e.inputs||Ye,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||Te,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,inputs:Jp(e.inputs,t),outputs:eg(e.outputs),debugInfo:null}}function ng(e){e.features?.forEach(t=>t(e))}function Do(e,t){return e?()=>{let n=typeof e=="function"?e():e,r=[];for(let i of n){let o=t(i);o!==null&&r.push(o)}return r}:null}function rg(e){let t=0,n=typeof e.consts=="function"?"":e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,n,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(let i of r.join("|"))t=Math.imul(31,t)+i.charCodeAt(0)<<0;return t+=2147483648,"c"+t}function ig(e,t,n,r,i,o,s,l){if(n.firstCreatePass){e.mergedAttrs=En(e.mergedAttrs,e.attrs);let c=e.tView=_i(2,e,i,o,s,n.directiveRegistry,n.pipeRegistry,null,n.schemas,n.consts,null);n.queries!==null&&(n.queries.template(n,e),c.queries=n.queries.embeddedTView(e))}l&&(e.flags|=l),Ot(e,!1);let a=og(n,t,e,r);pi()&&Ei(n,t,a,e),Je(a,t);let u=oa(a,t,a,e);t[r+F]=u,xi(t,u),Pp(u,e,t)}function pn(e,t,n,r,i,o,s,l,a,u,c){let d=n+F,h;if(t.firstCreatePass){if(h=Vn(t,d,4,s||null,l||null),u!=null){let f=se(t.consts,u);h.localNames=[];for(let p=0;p{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((n,r)=>{this.resolve=n,this.reject=r});appInits=b(ug,{optional:!0})??[];injector=b(Cn);constructor(){}runInitializers(){if(this.initialized)return;let n=[];for(let i of this.appInits){let o=Ts(this.injector,i);if(_a(o))n.push(o);else if(ag(o)){let s=new Promise((l,a)=>{o.subscribe({complete:l,error:a})});n.push(s)}}let r=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{r()}).catch(i=>{this.reject(i)}),n.length===0&&r(),this.initialized=!0}static \u0275fac=function(n){return new(n||e)};static \u0275prov=D({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),cg=new E("");function dg(){ru(()=>{let e="";throw new w(600,e)})}function fg(e){return e.isBoundToModule}var hg=10,Nr=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=b(Dt);afterRenderManager=b($f);zonelessEnabled=b(bi);rootEffectScheduler=b(el);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new Et;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=b(kn);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(Pu(n=>!n))}constructor(){b(Dn,{optional:!0})}whenStable(){let n;return new Promise(r=>{n=this.isStable.subscribe({next:i=>{i&&r()}})}).finally(()=>{n.unsubscribe()})}_injector=b(ye);_rendererFactory=null;get injector(){return this._injector}bootstrap(n,r){return this.bootstrapImpl(n,r)}bootstrapImpl(n,r,i=Cn.NULL){return this._injector.get(He).run(()=>{x(_.BootstrapComponentStart);let o=n instanceof ca;if(!this._injector.get(Ca).done){let h="";throw new w(405,h)}let s;o?s=n:s=this._injector.get(Pi).resolveComponentFactory(n),this.componentTypes.push(s.componentType);let l=fg(s)?void 0:this._injector.get(Pr),a=r||s.selector,u=s.create(i,[],a,l),c=u.location.nativeElement,d=u.injector.get(lg,null);return d?.registerApplication(c),u.onDestroy(()=>{this.detachView(u.hostView),$t(this.components,u),d?.unregisterApplication(c)}),this._loadComponent(u),x(_.BootstrapComponentEnd,u),u})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){x(_.ChangeDetectionStart),this.tracingSnapshot!==null?this.tracingSnapshot.run(Ul.CHANGE_DETECTION,this.tickImpl):this.tickImpl()}tickImpl=()=>{if(this._runningTick)throw x(_.ChangeDetectionEnd),new w(101,!1);let n=m(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,m(n),this.afterTick.next(),x(_.ChangeDetectionEnd)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(Ni,null,{optional:!0}));let n=0;for(;this.dirtyFlags!==0&&n++nn(n))){this.dirtyFlags|=2;return}else this.dirtyFlags&=-8}attachView(n){let r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){let r=n;$t(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView);try{this.tick()}catch(r){this.internalErrorHandler(r)}this.components.push(n),this._injector.get(cg,[]).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),()=>$t(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new w(406,!1);let n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}static \u0275fac=function(n){return new(n||e)};static \u0275prov=D({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function $t(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}var pg=class{destroy(e){}updateValue(e,t){}swap(e,t){let n=Math.min(e,t),r=Math.max(e,t),i=this.detach(r);if(r-n>1){let o=this.detach(n);this.attach(n,i),this.attach(r,o)}else this.attach(n,i)}move(e,t){this.attach(t,this.detach(e))}};function Kn(e,t,n,r,i){return e===n&&Object.is(t,r)?1:Object.is(i(e,t),i(n,r))?-1:0}function gg(e,t,n,r){let i,o,s=0,l=e.length-1,a;if(Array.isArray(t)){m(r);let u=t.length-1;for(m(null);s<=l&&s<=u;){let c=e.at(s),d=t[s],h=Kn(s,c,s,d,n);if(h!==0){h<0&&e.updateValue(s,d),s++;continue}let f=e.at(l),p=t[u],M=Kn(l,f,u,p,n);if(M!==0){M<0&&e.updateValue(l,p),l--,u--;continue}let I=n(s,c),J=n(l,f),lt=n(s,d);if(Object.is(lt,J)){let Rn=n(u,p);Object.is(Rn,I)?(e.swap(s,l),e.updateValue(l,p),u--,l--):e.move(l,s),e.updateValue(s,d),s++;continue}if(i??=new No,o??=Po(e,s,l,n),Ar(e,i,s,lt))e.updateValue(s,d),s++,l++;else if(o.has(lt))i.set(I,e.detach(s)),l--;else{let Rn=e.create(s,t[s]);e.attach(s,Rn),s++,l++}}for(;s<=u;)Mo(e,i,n,s,t[s]),s++}else if(t!=null){m(r);let u=t[Symbol.iterator]();m(null);let c=u.next();for(;!c.done&&s<=l;){let d=e.at(s),h=c.value,f=Kn(s,d,s,h,n);if(f!==0)f<0&&e.updateValue(s,h),s++,c=u.next();else{i??=new No,o??=Po(e,s,l,n);let p=n(s,h);if(Ar(e,i,s,p))e.updateValue(s,h),s++,l++,c=u.next();else if(!o.has(p))e.attach(s,e.create(s,h)),s++,l++,c=u.next();else{let M=n(s,d);i.set(M,e.detach(s)),l--}}}for(;!c.done;)Mo(e,i,n,e.length,c.value),c=u.next()}for(;s<=l;)e.destroy(e.detach(l--));i?.forEach(u=>{e.destroy(u)})}function Ar(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function Mo(e,t,n,r,i){if(Ar(e,t,r,n(r,i)))e.updateValue(r,i);else{let o=e.create(r,i);e.attach(r,o)}}function Po(e,t,n,r){let i=new Set;for(let o=t;o<=n;o++)i.add(r(o,e.at(o)));return i}var No=class{kvMap=new Map;_vMap=void 0;has(e){return this.kvMap.has(e)}delete(e){if(!this.has(e))return!1;let t=this.kvMap.get(e);return this._vMap!==void 0&&this._vMap.has(t)?(this.kvMap.set(e,this._vMap.get(t)),this._vMap.delete(t)):this.kvMap.delete(e),!0}get(e){return this.kvMap.get(e)}set(e,t){if(this.kvMap.has(e)){let n=this.kvMap.get(e);this._vMap===void 0&&(this._vMap=new Map);let r=this._vMap;for(;r.has(n);)n=r.get(n);r.set(n,t)}else this.kvMap.set(e,t)}forEach(e){for(let[t,n]of this.kvMap)if(e(n,t),this._vMap!==void 0){let r=this._vMap;for(;r.has(n);)n=r.get(n),e(n,t)}}};function Vr(e,t,n,r,i,o,s,l){st("NgControlFlow");let a=S(),u=U(),c=se(u.consts,o);return pn(a,u,e,t,n,r,i,c,256,s,l),xa}function xa(e,t,n,r,i,o,s,l){st("NgControlFlow");let a=S(),u=U(),c=se(u.consts,o);return pn(a,u,e,t,n,r,i,c,512,s,l),xa}function Rr(e,t){st("NgControlFlow");let n=S(),r=_n(),i=n[r]!==_e?n[r]:-1,o=i!==-1?gn(n,F+i):void 0,s=0;if(Nt(n,r,e)){let l=m(null);try{if(o!==void 0&&la(o,s),e!==-1){let a=F+e,u=gn(n,a),c=Lr(n[g],a),d=ua(u,c,n),h=Nn(n,c,t,{dehydratedView:d});An(u,h,s,Ct(c,d))}}finally{m(l)}}else if(o!==void 0){let l=sa(o,s);l!==void 0&&(l[O]=t)}}var mg=class{lContainer;$implicit;$index;constructor(e,t,n){this.lContainer=e,this.$implicit=t,this.$index=n}get $count(){return this.lContainer.length-T}};function Ao(e,t){return t}var yg=class{hasEmptyBlock;trackByFn;liveCollection;constructor(e,t,n){this.hasEmptyBlock=e,this.trackByFn=t,this.liveCollection=n}};function Vo(e,t,n,r,i,o,s,l,a,u,c,d,h){st("NgControlFlow");let f=S(),p=U(),M=a!==void 0,I=S(),J=l?s.bind(I[K][O]):s,lt=new yg(M,J);I[F+e]=lt,pn(f,p,e+1,t,n,r,i,se(p.consts,o),256),M&&pn(f,p,e+2,a,u,c,d,se(p.consts,h),512)}var vg=class extends pg{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(e,t,n){super(),this.lContainer=e,this.hostLView=t,this.templateTNode=n}get length(){return this.lContainer.length-T}at(e){return this.getLView(e)[O].$implicit}attach(e,t){let n=t[vt];this.needsIndexUpdate||=e!==this.length,An(this.lContainer,t,e,Ct(this.templateTNode,n)),bg(this.lContainer,e)}detach(e){return this.needsIndexUpdate||=e!==this.length-1,wg(this.lContainer,e),_g(this.lContainer,e)}create(e,t){let n=Or(this.lContainer,this.templateTNode.tView.ssrId);return Nn(this.hostLView,this.templateTNode,new mg(this.lContainer,t,e),{dehydratedView:n})}destroy(e){Mn(e[g],e)}updateValue(e,t){this.getLView(e)[O].$implicit=t}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let e=0;e0){let o=r[ve];Qf(o,i),_t.delete(r[be]),i.detachedLeaveAnimationFns=void 0}}function wg(e,t){if(e.length<=T)return;let n=T+t,r=e[n],i=r?r[Me]:void 0;i&&i.leave&&i.leave.size>0&&(i.detachedLeaveAnimationFns=[])}function _g(e,t){return xt(e,t)}function Cg(e,t){return sa(e,t)}function Lr(e,t){return ui(e,t)}function P(e,t,n,r){let i=S(),o=i[g],s=e+F,l=o.firstCreatePass?up(s,o,2,t,n,r):o.data[s];return vh(l,i,e,t,xg),r!=null&&Yl(i,l),P}function N(){let e=ce(),t=bh(e);return Ic(t)&&Tc(),Sc(),N}function ka(e,t,n,r){return P(e,t,n,r),N(),ka}var xg=(e,t,n,r,i)=>(gi(!0),Ll(t[V],r,Hc()));function Sa(){return S()}function te(e,t,n){let r=S(),i=_n();if(Nt(r,i,t)){let o=U(),s=Fc();hh(s,r,e,t,r[V],n)}return te}var mn="en-US",kg=mn;function Sg(e){typeof e=="string"&&(kg=e.toLowerCase().replace(/_/g,"-"))}function xe(e,t,n){let r=S(),i=U(),o=ce();return(o.type&3||n)&&dp(o,i,r,n,r[V],e,t,cp(o,r,t)),xe}function ee(e=1){return jc(e)}function Ea(e,t,n){return Zp(e,t,n),Ea}function Eg(e){let t=S(),n=U(),r=Bs();di(r+1);let i=Ri(n,r);if(e.dirty&&vc(t)===((i.metadata.flags&2)===2)){if(i.matches===null)e.reset([]);else{let o=Wp(t,r);e.reset(o,Nd),e.notifyOnChanges()}return!0}return!1}function Ig(){return qp(S(),Bs())}function jt(e,t){return e<<17|t<<2}function Re(e){return e>>17&32767}function Tg(e){return(e&2)==2}function Og(e,t){return e&131071|t<<17}function jr(e){return e|2}function et(e){return(e&131068)>>2}function Xn(e,t){return e&-131069|t<<2}function Dg(e){return(e&1)===1}function Fr(e){return e|1}function Mg(e,t,n,r,i,o){let s=o?t.classBindings:t.styleBindings,l=Re(s),a=et(s);e[r]=n;let u=!1,c;if(Array.isArray(n)){let d=n;c=d[1],(c===null||It(d,c)>0)&&(u=!0)}else c=n;if(i)if(a!==0){let d=Re(e[l+1]);e[r+1]=jt(d,l),d!==0&&(e[d+1]=Xn(e[d+1],r)),e[l+1]=Og(e[l+1],r)}else e[r+1]=jt(l,0),l!==0&&(e[l+1]=Xn(e[l+1],r)),l=r;else e[r+1]=jt(a,0),l===0?l=r:e[a+1]=Xn(e[a+1],r),a=r;u&&(e[r+1]=jr(e[r+1])),Lo(e,c,r,!0),Lo(e,c,r,!1),Pg(t,c,e,r,o),s=jt(l,a),o?t.classBindings=s:t.styleBindings=s}function Pg(e,t,n,r,i){let o=i?e.residualClasses:e.residualStyles;o!=null&&typeof t=="string"&&It(o,t)>=0&&(n[r+1]=Fr(n[r+1]))}function Lo(e,t,n,r){let i=e[n+1],o=t===null,s=r?Re(i):et(i),l=!1;for(;s!==0&&(l===!1||o);){let a=e[s],u=e[s+1];Ng(a,t)&&(l=!0,e[s+1]=r?Fr(u):jr(u)),s=r?Re(u):et(u)}l&&(e[n+1]=r?jr(i):Fr(i))}function Ng(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t=="string"?It(e,t)>=0:!1}function Ia(e,t){return Ag(e,t,null,!0),Ia}function Ag(e,t,n,r){let i=S(),o=U(),s=Pc(2);if(o.firstUpdatePass&&Rg(o,e,s,r),t!==_e&&Nt(i,s,t)){let l=o.data[Fe()];zg(o,l,i,i[V],e,i[s+1]=Bg(t,n),r,s)}}function Vg(e,t){return t>=e.expandoStartIndex}function Rg(e,t,n,r){let i=e.data;if(i[n+1]===null){let o=i[Fe()],s=Vg(e,n);qg(o,r)&&t===null&&!s&&(t=!1),t=Lg(i,o,t,r),Mg(i,o,t,n,s,r)}}function Lg(e,t,n,r){let i=Rc(e),o=r?t.residualClasses:t.residualStyles;if(i===null)(r?t.classBindings:t.styleBindings)===0&&(n=Jn(null,e,t,n,r),n=kt(n,t.attrs,r),o=null);else{let s=t.directiveStylingLast;if(s===-1||e[s]!==i)if(n=Jn(i,e,t,n,r),o===null){let l=jg(e,t,r);l!==void 0&&Array.isArray(l)&&(l=Jn(null,e,t,l[1],r),l=kt(l,t.attrs,r),Fg(e,t,r,l))}else o=Hg(e,t,r)}return o!==void 0&&(r?t.residualClasses=o:t.residualStyles=o),n}function jg(e,t,n){let r=n?t.classBindings:t.styleBindings;if(et(r)!==0)return e[Re(r)]}function Fg(e,t,n,r){let i=n?t.classBindings:t.styleBindings;e[Re(i)]=r}function Hg(e,t,n){let r,i=t.directiveEnd;for(let o=1+t.directiveStylingLast;o0;){let a=e[i],u=Array.isArray(a),c=u?a[1]:a,d=c===null,h=n[i+1];h===_e&&(h=d?Te:void 0);let f=d?Bn(h,r):c===r?h:void 0;if(u&&!yn(f)&&(f=Bn(a,r)),yn(f)&&(l=f,s))return l;let p=e[i+1];i=s?Re(p):et(p)}if(t!==null){let a=o?t.residualClasses:t.residualStyles;a!=null&&(l=Bn(a,r))}return l}function yn(e){return e!==void 0}function Bg(e,t){return e==null||e===""||(typeof t=="string"?e=e+t:typeof e=="object"&&(e=us(Ce(e)))),e}function qg(e,t){return(e.flags&(t?8:16))!==0}function B(e,t=""){let n=S(),r=U(),i=e+F,o=r.firstCreatePass?Vn(r,i,1,t,null):r.data[i],s=Ug(r,n,o,t);n[i]=s,pi()&&Ei(r,n,s,o),Ot(o,!1)}var Ug=(e,t,n,r)=>(gi(!0),Of(t[V],r));function Zg(e,t,n,r=""){return Nt(e,_n(),n)?t+ps(n)+r:_e}function Le(e){return Ta("",e),Le}function Ta(e,t,n){let r=S(),i=Zg(r,e,t,n);return i!==_e&&$g(r,Fe(),i),Ta}function $g(e,t,n){let r=Ns(t,e);Df(e[V],r,n)}function Fo(e,t,n){let r=U();r.firstCreatePass&&Oa(t,r.data,r.blueprint,rt(e),n)}function Oa(e,t,n,r,i){if(e=j(e),Array.isArray(e))for(let o=0;o>20;if(Ke(e)||!e.multi){let f=new Mt(u,i,Ai,null),p=tr(a,t,i?c:c+h,d);p===-1?(wr(un(l,s),o,a),er(o,e,t.length),t.push(a),l.directiveStart++,l.directiveEnd++,i&&(l.providerIndexes+=1048576),n.push(f),s.push(f)):(n[p]=f,s[p]=f)}else{let f=tr(a,t,c+h,d),p=tr(a,t,c,c+h),M=f>=0&&n[f],I=p>=0&&n[p];if(i&&!I||!i&&!M){wr(un(l,s),o,a);let J=Gg(i?Wg:Qg,n.length,i,r,u,e);!i&&I&&(n[p].providerFactory=J),er(o,e,t.length,0),t.push(a),l.directiveStart++,l.directiveEnd++,i&&(l.providerIndexes+=1048576),n.push(J),s.push(J)}else{let J=Da(n[i?p:f],u,!i&&r);er(o,e,f>-1?f:p,J)}!i&&r&&I&&n[p].componentProviders++}}}function er(e,t,n,r){let i=Ke(t),o=uc(t);if(i||o){let s=(o?j(t.useClass):t).prototype.ngOnDestroy;if(s){let l=e.destroyHooks||(e.destroyHooks=[]);if(!i&&t.multi){let a=l.indexOf(n);a===-1?l.push(n,[r,s]):l[a+1].push(r,s)}else l.push(n,s)}}}function Da(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function tr(e,t,n,r){for(let i=n;i{n.providersResolver=(r,i)=>Fo(r,i?i(e):e,!1),t&&(n.viewProvidersResolver=(r,i)=>Fo(r,i?i(t):t,!0))}}var Kg=(()=>{class e{applicationErrorHandler=b(Dt);appRef=b(Nr);taskService=b(kn);ngZone=b(He);zonelessEnabled=b(bi);tracing=b(Dn,{optional:!0});zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new me;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(sn):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(b(od,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{let n=this.taskService.add();if(!this.runningTick&&(this.cleanup(),!this.zonelessEnabled||this.appRef.includeAllTestViews)){this.taskService.remove(n);return}this.switchToMicrotaskScheduler(),this.taskService.remove(n)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{let n=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(n)})})}notify(n){if(!this.zonelessEnabled&&n===5)return;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 6:{this.appRef.dirtyFlags|=2;break}case 12:{this.appRef.dirtyFlags|=16;break}case 13:{this.appRef.dirtyFlags|=2;break}case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;let r=this.useMicrotaskScheduler?$c:Ks;this.pendingRenderTaskId=this.taskService.add(),this.scheduleInRootZone?this.cancelScheduledCallback=Zone.root.run(()=>r(()=>this.tick())):this.cancelScheduledCallback=this.ngZone.runOutsideAngular(()=>r(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(sn+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRef.dirtyFlags===0){this.cleanup();return}!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let n=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(r){this.applicationErrorHandler(r)}finally{this.taskService.remove(n),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let n=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(n)}}static \u0275fac=function(n){return new(n||e)};static \u0275prov=D({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function Xg(){return st("NgZoneless"),ii([...Ma(),[]])}function Ma(){return[{provide:vi,useExisting:Kg},{provide:He,useClass:Kc},{provide:bi,useValue:!0}]}function Jg(){return typeof $localize<"u"&&$localize.locale||mn}var Pa=new E("",{factory:()=>b(Pa,{optional:!0,skipSelf:!0})||Jg()});function Be(e,t){return eu(e,t?.equal)}var zr=new E(""),em=new E("");function at(e){return!e.moduleRef}function tm(e){let t=at(e)?e.r3Injector:e.moduleRef.injector,n=t.get(He);return n.run(()=>{at(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(Dt),i;if(n.runOutsideAngular(()=>{i=n.onError.subscribe({next:r})}),at(e)){let o=()=>t.destroy(),s=e.platformInjector.get(zr);s.add(o),t.onDestroy(()=>{i.unsubscribe(),s.delete(o)})}else{let o=()=>e.moduleRef.destroy(),s=e.platformInjector.get(zr);s.add(o),e.moduleRef.onDestroy(()=>{$t(e.allPlatformModules,e.moduleRef),i.unsubscribe(),s.delete(o)})}return rm(r,n,()=>{let o=t.get(kn),s=o.add(),l=t.get(Ca);return l.runInitializers(),l.donePromise.then(()=>{let a=t.get(Pa,mn);if(Sg(a||mn),!t.get(em,!0))return at(e)?t.get(Nr):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(at(e)){let u=t.get(Nr);return e.rootComponent!==void 0&&u.bootstrap(e.rootComponent),u}else return nm?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>{o.remove(s)})})})}var nm;function rm(e,t,n){try{let r=n();return _a(r)?r.catch(i=>{throw t.runOutsideAngular(()=>e(i)),i}):r}catch(r){throw t.runOutsideAngular(()=>e(r)),r}}var Qt=null;function im(e=[],t){return Cn.create({name:t,providers:[{provide:si,useValue:"platform"},{provide:zr,useValue:new Set([()=>Qt=null])},...e]})}function om(e=[]){if(Qt)return Qt;let t=im(e);return Qt=t,dg(),sm(t),t}function sm(e){let t=e.get(xl,null);Ts(e,()=>{t?.forEach(n=>n())})}var lm=1e4,Wm=lm-1e3;function am(e){let{rootComponent:t,appProviders:n,platformProviders:r,platformRef:i}=e;x(_.BootstrapApplicationStart);try{let o=i?.injector??om(r),s=[Ma(),ed,...n||[]],l=new wa({providers:s,parent:o,debugName:"",runEnvironmentInitializers:!1});return tm({r3Injector:l.injector,platformInjector:o,rootComponent:t})}catch(o){return Promise.reject(o)}finally{x(_.BootstrapApplicationEnd)}}var Na=null;function Aa(){return Na}function um(e){Na??=e}var cm=class{};function dm(e,t){t=encodeURIComponent(t);for(let n of e.split(";")){let r=n.indexOf("="),[i,o]=r==-1?[n,""]:[n.slice(0,r),n.slice(r+1)];if(i.trim()===t)return decodeURIComponent(o)}return null}var fm=class{},hm="browser",Va=class{_doc;constructor(e){this._doc=e}manager},Br=(()=>{class e extends Va{constructor(n){super(n)}supports(n){return!0}addEventListener(n,r,i,o){return n.addEventListener(r,i,o),()=>this.removeEventListener(n,r,i,o)}removeEventListener(n,r,i,o){return n.removeEventListener(r,i,o)}static \u0275fac=function(n){return new(n||e)(C(we))};static \u0275prov=D({token:e,factory:e.\u0275fac})}return e})(),qr=new E(""),Ra=(()=>{class e{_zone;_plugins;_eventNameToPlugin=new Map;constructor(n,r){this._zone=r,n.forEach(s=>{s.manager=this});let i=n.filter(s=>!(s instanceof Br));this._plugins=i.slice().reverse();let o=n.find(s=>s instanceof Br);o&&this._plugins.push(o)}addEventListener(n,r,i,o){return this._findPluginFor(r).addEventListener(n,r,i,o)}getZone(){return this._zone}_findPluginFor(n){let r=this._eventNameToPlugin.get(n);if(r)return r;if(r=this._plugins.find(i=>i.supports(n)),!r)throw new w(5101,!1);return this._eventNameToPlugin.set(n,r),r}static \u0275fac=function(n){return new(n||e)(C(qr),C(He))};static \u0275prov=D({token:e,factory:e.\u0275fac})}return e})(),nr="ng-app-id";function Ho(e){for(let t of e)t.remove()}function zo(e,t){let n=t.createElement("style");return n.textContent=e,n}function pm(e,t,n,r){let i=e.head?.querySelectorAll(`style[${nr}="${t}"],link[${nr}="${t}"]`);if(i)for(let o of i)o.removeAttribute(nr),o instanceof HTMLLinkElement?r.set(o.href.slice(o.href.lastIndexOf("/")+1),{usage:0,elements:[o]}):o.textContent&&n.set(o.textContent,{usage:0,elements:[o]})}function Ur(e,t){let n=t.createElement("link");return n.setAttribute("rel","stylesheet"),n.setAttribute("href",e),n}var La=(()=>{class e{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(n,r,i,o={}){this.doc=n,this.appId=r,this.nonce=i,pm(n,r,this.inline,this.external),this.hosts.add(n.head)}addStyles(n,r){for(let i of n)this.addUsage(i,this.inline,zo);r?.forEach(i=>this.addUsage(i,this.external,Ur))}removeStyles(n,r){for(let i of n)this.removeUsage(i,this.inline);r?.forEach(i=>this.removeUsage(i,this.external))}addUsage(n,r,i){let o=r.get(n);o?o.usage++:r.set(n,{usage:1,elements:[...this.hosts].map(s=>this.addElement(s,i(n,this.doc)))})}removeUsage(n,r){let i=r.get(n);i&&(i.usage--,i.usage<=0&&(Ho(i.elements),r.delete(n)))}ngOnDestroy(){for(let[,{elements:n}]of[...this.inline,...this.external])Ho(n);this.hosts.clear()}addHost(n){this.hosts.add(n);for(let[r,{elements:i}]of this.inline)i.push(this.addElement(n,zo(r,this.doc)));for(let[r,{elements:i}]of this.external)i.push(this.addElement(n,Ur(r,this.doc)))}removeHost(n){this.hosts.delete(n)}addElement(n,r){return this.nonce&&r.setAttribute("nonce",this.nonce),n.appendChild(r)}static \u0275fac=function(n){return new(n||e)(C(we),C(Cl),C(Sl,8),C(kl))};static \u0275prov=D({token:e,factory:e.\u0275fac})}return e})(),rr={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"},Li=/%COMP%/g,ja="%COMP%",gm=`_nghost-${ja}`,mm=`_ngcontent-${ja}`,ym=!0,vm=new E("",{factory:()=>ym});function bm(e){return mm.replace(Li,e)}function wm(e){return gm.replace(Li,e)}function Fa(e,t){return t.map(n=>n.replace(Li,e))}var Bo=(()=>{class e{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;constructor(n,r,i,o,s,l,a=null,u=null){this.eventManager=n,this.sharedStylesHost=r,this.appId=i,this.removeStylesOnCompDestroy=o,this.doc=s,this.ngZone=l,this.nonce=a,this.tracingService=u,this.defaultRenderer=new ji(n,s,l,this.tracingService)}createRenderer(n,r){if(!n||!r)return this.defaultRenderer;let i=this.getOrCreateRenderer(n,r);return i instanceof Zo?i.applyToHost(n):i instanceof Zr&&i.applyStyles(),i}getOrCreateRenderer(n,r){let i=this.rendererByCompId,o=i.get(r.id);if(!o){let s=this.doc,l=this.ngZone,a=this.eventManager,u=this.sharedStylesHost,c=this.removeStylesOnCompDestroy,d=this.tracingService;switch(r.encapsulation){case re.Emulated:o=new Zo(a,u,r,this.appId,c,s,l,d);break;case re.ShadowDom:return new Uo(a,n,r,s,l,this.nonce,d,u);case re.ExperimentalIsolatedShadowDom:return new Uo(a,n,r,s,l,this.nonce,d);default:o=new Zr(a,u,r,c,s,l,d);break}i.set(r.id,o)}return o}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(n){this.rendererByCompId.delete(n)}static \u0275fac=function(n){return new(n||e)(C(Ra),C(La),C(Cl),C(vm),C(we),C(He),C(Sl),C(Dn,8))};static \u0275prov=D({token:e,factory:e.\u0275fac})}return e})(),ji=class{eventManager;doc;ngZone;tracingService;data=Object.create(null);throwOnSyntheticProps=!0;constructor(e,t,n,r){this.eventManager=e,this.doc=t,this.ngZone=n,this.tracingService=r}destroy(){}destroyNode=null;createElement(e,t){return t?this.doc.createElementNS(rr[t]||t,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,t){(qo(e)?e.content:e).appendChild(t)}insertBefore(e,t,n){e&&(qo(e)?e.content:e).insertBefore(t,n)}removeChild(e,t){t.remove()}selectRootElement(e,t){let n=typeof e=="string"?this.doc.querySelector(e):e;if(!n)throw new w(-5104,!1);return t||(n.textContent=""),n}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,t,n,r){if(r){t=r+":"+t;let i=rr[r];i?e.setAttributeNS(i,t,n):e.setAttribute(t,n)}else e.setAttribute(t,n)}removeAttribute(e,t,n){if(n){let r=rr[n];r?e.removeAttributeNS(r,t):e.removeAttribute(`${n}:${t}`)}else e.removeAttribute(t)}addClass(e,t){e.classList.add(t)}removeClass(e,t){e.classList.remove(t)}setStyle(e,t,n,r){r&(Se.DashCase|Se.Important)?e.style.setProperty(t,n,r&Se.Important?"important":""):e.style[t]=n}removeStyle(e,t,n){n&Se.DashCase?e.style.removeProperty(t):e.style[t]=""}setProperty(e,t,n){e!=null&&(e[t]=n)}setValue(e,t){e.nodeValue=t}listen(e,t,n,r){if(typeof e=="string"&&(e=Aa().getGlobalEventTarget(this.doc,e),!e))throw new w(5102,!1);let i=this.decoratePreventDefault(n);return this.tracingService?.wrapEventListener&&(i=this.tracingService.wrapEventListener(e,t,i)),this.eventManager.addEventListener(e,t,i,r)}decoratePreventDefault(e){return t=>{if(t==="__ngUnwrap__")return e;e(t)===!1&&t.preventDefault()}}};function qo(e){return e.tagName==="TEMPLATE"&&e.content!==void 0}var Uo=class extends ji{hostEl;sharedStylesHost;shadowRoot;constructor(e,t,n,r,i,o,s,l){super(e,r,i,s),this.hostEl=t,this.sharedStylesHost=l,this.shadowRoot=t.attachShadow({mode:"open"}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let a=n.styles;a=Fa(n.id,a);for(let c of a){let d=document.createElement("style");o&&d.setAttribute("nonce",o),d.textContent=c,this.shadowRoot.appendChild(d)}let u=n.getExternalStyles?.();if(u)for(let c of u){let d=Ur(c,r);o&&d.setAttribute("nonce",o),this.shadowRoot.appendChild(d)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,t){return super.appendChild(this.nodeOrShadowRoot(e),t)}insertBefore(e,t,n){return super.insertBefore(this.nodeOrShadowRoot(e),t,n)}removeChild(e,t){return super.removeChild(null,t)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}},Zr=class extends ji{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(e,t,n,r,i,o,s,l){super(e,i,o,s),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=r;let a=n.styles;this.styles=l?Fa(l,a):a,this.styleUrls=n.getExternalStyles?.(l)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&_t.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},Zo=class extends Zr{contentAttr;hostAttr;constructor(e,t,n,r,i,o,s,l){let a=r+"-"+n.id;super(e,t,n,i,o,s,l,a),this.contentAttr=bm(a),this.hostAttr=wm(a)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,"")}createElement(e,t){let n=super.createElement(e,t);return super.setAttribute(n,this.contentAttr,""),n}},_m=class Ha extends cm{supportsDOMEvents=!0;static makeCurrent(){um(new Ha)}onAndCancel(t,n,r,i){return t.addEventListener(n,r,i),()=>{t.removeEventListener(n,r,i)}}dispatchEvent(t,n){t.dispatchEvent(n)}remove(t){t.remove()}createElement(t,n){return n=n||this.getDefaultDocument(),n.createElement(t)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}isShadowRoot(t){return t instanceof DocumentFragment}getGlobalEventTarget(t,n){return n==="window"?window:n==="document"?t:n==="body"?t.body:null}getBaseHref(t){let n=Cm();return n==null?null:xm(n)}resetBaseElement(){ft=null}getUserAgent(){return window.navigator.userAgent}getCookie(t){return dm(document.cookie,t)}},ft=null;function Cm(){return ft=ft||document.head.querySelector("base"),ft?ft.getAttribute("href"):null}function xm(e){return new URL(e,document.baseURI).pathname}var km=(()=>{class e{build(){return new XMLHttpRequest}static \u0275fac=function(n){return new(n||e)};static \u0275prov=D({token:e,factory:e.\u0275fac})}return e})(),$o=["alt","control","meta","shift"],Sm={"\b":"Backspace"," ":"Tab","\x7F":"Delete","\x1B":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},Em={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},Im=(()=>{class e extends Va{constructor(n){super(n)}supports(n){return e.parseEventName(n)!=null}addEventListener(n,r,i,o){let s=e.parseEventName(r),l=e.eventCallback(s.fullKey,i,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Aa().onAndCancel(n,s.domEventName,l,o))}static parseEventName(n){let r=n.toLowerCase().split("."),i=r.shift();if(r.length===0||!(i==="keydown"||i==="keyup"))return null;let o=e._normalizeKey(r.pop()),s="",l=r.indexOf("code");if(l>-1&&(r.splice(l,1),s="code."),$o.forEach(u=>{let c=r.indexOf(u);c>-1&&(r.splice(c,1),s+=u+".")}),s+=o,r.length!=0||o.length===0)return null;let a={};return a.domEventName=i,a.fullKey=s,a}static matchEventFullKeyCode(n,r){let i=Sm[n.key]||n.key,o="";return r.indexOf("code.")>-1&&(i=n.code,o="code."),i==null||!i?!1:(i=i.toLowerCase(),i===" "?i="space":i==="."&&(i="dot"),$o.forEach(s=>{if(s!==i){let l=Em[s];l(n)&&(o+=s+".")}}),o+=i,o===r)}static eventCallback(n,r,i){return o=>{e.matchEventFullKeyCode(o,n)&&i.runGuarded(()=>r(o))}}static _normalizeKey(n){return n==="esc"?"escape":n}static \u0275fac=function(n){return new(n||e)(C(we))};static \u0275prov=D({token:e,factory:e.\u0275fac})}return e})();async function Tm(e,t){return am(Om(e,t))}function Om(e,t){return{platformRef:t?.platformRef,appProviders:[...Am,...e?.providers??[]],platformProviders:Nm}}function Dm(){_m.makeCurrent()}function Mm(){return new Sn}function Pm(){return Fd(document),document}var Nm=[{provide:kl,useValue:hm},{provide:xl,useValue:Dm,multi:!0},{provide:we,useFactory:Pm}],Am=[{provide:si,useValue:"root"},{provide:Sn,useFactory:Mm},{provide:qr,useClass:Br,multi:!0},{provide:qr,useClass:Im,multi:!0},Bo,La,Ra,{provide:Ni,useExisting:Bo},{provide:fm,useClass:km},[]],za=(()=>{class e{static \u0275fac=function(n){return new(n||e)};static \u0275prov=D({token:e,factory:function(n){let r=null;return n?r=new(n||e):r=C(Vm),r},providedIn:"root"})}return e})(),Vm=(()=>{class e extends za{_doc;constructor(n){super(),this._doc=n}sanitize(n,r){if(r==null)return null;switch(n){case he.NONE:return r;case he.HTML:return Ze(r,"HTML")?Ce(r):Rl(this._doc,String(r)).toString();case he.STYLE:return Ze(r,"Style")?Ce(r):r;case he.SCRIPT:if(Ze(r,"Script"))return Ce(r);throw new w(5200,!1);case he.URL:return Ze(r,"URL")?Ce(r):Dl(String(r));case he.RESOURCE_URL:if(Ze(r,"ResourceURL"))return Ce(r);throw new w(5201,!1);default:throw new w(5202,!1)}}bypassSecurityTrustHtml(n){return of(n)}bypassSecurityTrustStyle(n){return sf(n)}bypassSecurityTrustScript(n){return lf(n)}bypassSecurityTrustUrl(n){return af(n)}bypassSecurityTrustResourceUrl(n){return uf(n)}static \u0275fac=function(n){return new(n||e)(C(we))};static \u0275prov=D({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),Qo=class Wt{constructor(t){if(this.model=t,t){this.page.set(t.get("page")??0),this.pageSize.set(t.get("page_size")??10),this.maxColumns.set(t.get("max_columns")??0),this.rowCount.set(t.get("row_count")??null),this.tableHtml.set(t.get("table_html")??""),this.sortContext.set(t.get("sort_context")??[]),this.orderableColumns.set(t.get("orderable_columns")??[]);let n=t.get("error_message")??t.get("_error_message")??null;this.errorMessage.set(n),this.startExecution.set(t.get("start_execution")??!1),this.isDeferredMode.set(t.get("is_deferred_mode")??!1),this.dryRunInfo.set(t.get("dry_run_info")??""),t.on("change:page",()=>{this.page.set(t.get("page"))}),t.on("change:page_size",()=>{this.pageSize.set(t.get("page_size"))}),t.on("change:max_columns",()=>{this.maxColumns.set(t.get("max_columns"))}),t.on("change:row_count",()=>{this.rowCount.set(t.get("row_count"))}),t.on("change:table_html",()=>{this.tableHtml.set(t.get("table_html"))}),t.on("change:sort_context",()=>{this.sortContext.set(t.get("sort_context"))}),t.on("change:orderable_columns",()=>{this.orderableColumns.set(t.get("orderable_columns"))}),t.on("change:start_execution",()=>{this.startExecution.set(t.get("start_execution")??!1)}),t.on("change:is_deferred_mode",()=>{this.isDeferredMode.set(t.get("is_deferred_mode")??!1)}),t.on("change:dry_run_info",()=>{this.dryRunInfo.set(t.get("dry_run_info")??"")});let r=()=>{let i=t.get("error_message")??t.get("_error_message")??null;this.errorMessage.set(i)};t.on("change:error_message",r),t.on("change:_error_message",r)}}page=H(0);pageSize=H(10);maxColumns=H(0);rowCount=H(null);tableHtml=H("");sortContext=H([]);orderableColumns=H([]);errorMessage=H(null);startExecution=H(!1);isDeferredMode=H(!1);dryRunInfo=H("");setPage(t){this.page.set(t),this.model&&(this.model.set("page",t),this.model.save_changes())}setPageSize(t){this.pageSize.set(t),this.page.set(0),this.model&&(this.model.set("page_size",t),this.model.set("page",0),this.model.save_changes())}setMaxColumns(t){this.maxColumns.set(t),this.model&&(this.model.set("max_columns",t),this.model.save_changes())}setSortContext(t){this.sortContext.set(t),this.model&&(this.model.set("sort_context",t),this.model.save_changes())}setStartExecution(t){this.startExecution.set(t),this.model&&(this.model.set("start_execution",t),this.model.save_changes())}static \u0275fac=function(t){return new(t||Wt)(C("ANYWIDGET_MODEL"))};static \u0275prov=D({token:Wt,factory:Wt.\u0275fac})},Rm=["tableContainer"],Lm=["app-root",""];function jm(e,t){if(e&1&&(P(0,"div",2),B(1),N()),e&2){let n=ee();L(),Le(n.errorMessage())}}function Fm(e,t){e&1&&(ka(0,"span",7),B(1," Run Query "))}function Hm(e,t){e&1&&B(0," Run Query ")}function zm(e,t){if(e&1){let n=Sa();P(0,"div",3)(1,"div",4)(2,"p",5),B(3),N(),P(4,"button",6),xe("click",function(){qe(n);let r=ee();return Ue(r.handleRunQuery())}),Vr(5,Fm,2,0)(6,Hm,1,0),N()()()}if(e&2){let n=ee();L(3),Le(n.dryRunInfo()),L(),te("disabled",n.isLoading()),L(),Rr(n.isLoading()?5:6)}}function Bm(e,t){if(e&1&&(P(0,"option",18),B(1),N()),e&2){let n=t.$implicit;te("value",n),L(),Le(n===0?"All":n)}}function qm(e,t){if(e&1&&(P(0,"option",18),B(1),N()),e&2){let n=t.$implicit;te("value",n),L(),Le(n)}}function Um(e,t){if(e&1){let n=Sa();P(0,"div",8,0),xe("click",function(r){qe(n);let i=ee();return Ue(i.handleTableClick(r))}),N(),P(2,"footer",9)(3,"span",10),B(4),N(),P(5,"div",11)(6,"button",12),xe("click",function(){qe(n);let r=ee();return Ue(r.handlePageChange(-1))}),B(7,"<"),N(),P(8,"span",13),B(9),N(),P(10,"button",12),xe("click",function(){qe(n);let r=ee();return Ue(r.handlePageChange(1))}),B(11,">"),N()(),P(12,"div",14)(13,"div",15)(14,"label",16),B(15,"Max columns:"),N(),P(16,"select",17),xe("change",function(r){qe(n);let i=ee();return Ue(i.handleMaxColumnsChange(r))}),Vo(17,Bm,2,2,"option",18,Ao),N()(),P(19,"div",19)(20,"label",20),B(21,"Page size:"),N(),P(22,"select",21),xe("change",function(r){qe(n);let i=ee();return Ue(i.handlePageSizeChange(r))}),Vo(23,qm,2,2,"option",18,Ao),N()()()()}if(e&2){let n=ee();te("innerHTML",n.sanitizedHtml(),Nf),L(4),Le(n.rowCountText()),L(2),te("disabled",n.prevPageDisabled()),L(3),Le(n.pageIndicatorText()),L(),te("disabled",n.nextPageDisabled()),L(6),te("value",n.maxColumns()),L(),Ro(n.maxColumnOptions),L(5),te("value",n.pageSize()),L(),Ro(n.pageSizeOptions)}}var Zm=class $r{state=b(Qo);sanitizer=b(za);maxColumnOptions=[5,10,15,20,0];pageSizeOptions=[10,25,50,100];errorMessage=this.state.errorMessage;maxColumns=this.state.maxColumns;pageSize=this.state.pageSize;page=this.state.page;rowCount=this.state.rowCount;isDeferredMode=this.state.isDeferredMode;dryRunInfo=this.state.dryRunInfo;isLoading=H(!1);sanitizedHtml=Be(()=>this.sanitizer.bypassSecurityTrustHtml(this.state.tableHtml()));totalPages=Be(()=>{let t=this.rowCount(),n=this.pageSize();return t!==null&&n>0?Math.ceil(t/n):null});pageIndicatorText=Be(()=>{let t=this.page(),n=this.rowCount(),r=this.totalPages(),i=(t+1).toLocaleString(),o=(r??1).toLocaleString();return`Page ${i} of ${o}`});rowCountText=Be(()=>{let t=this.rowCount();return t===null?"Total rows unknown":t===0?"0 total rows":`${t.toLocaleString()} total rows`});prevPageDisabled=Be(()=>this.page()===0);nextPageDisabled=Be(()=>{let t=this.page(),n=this.rowCount(),r=this.totalPages();return n===null?!1:n===0?!0:r!==null&&t>=r-1});isDarkMode=H(!1);themeObserver=null;tableContainerRef;isHeightInitialized=!1;constructor(){ro(()=>{let t=this.state.tableHtml(),n=this.state.sortContext(),r=this.state.orderableColumns();this.isDeferredMode()&&(this.isHeightInitialized=!1),setTimeout(()=>{this.applySortIndicators(),this.lockInitialHeight()},0)}),ro(()=>{this.state.startExecution()||this.isLoading.set(!1)})}ngOnInit(){this.initThemeDetection()}ngOnDestroy(){this.themeObserver?.disconnect()}handleRunQuery(){this.isLoading.set(!0),this.state.setStartExecution(!0)}handlePageChange(t){let n=this.page()+t;this.state.setPage(n)}handlePageSizeChange(t){let n=t.target,r=Number(n.value);r&&this.state.setPageSize(r)}handleMaxColumnsChange(t){let n=t.target,r=Number(n.value);this.state.setMaxColumns(r)}handleTableClick(t){let n=t.target.closest("th");if(!n)return;let r=n.querySelector("div.bf-header-content");if(!r)return;let i=this.getColumnName(r),o=this.state.orderableColumns();if(!i||!o.includes(i))return;let s=[...this.state.sortContext()],l=s.findIndex(u=>u.column===i),a=[...s];t.shiftKey?l!==-1?a[l].ascending?a[l]=Q($({},a[l]),{ascending:!1}):a.splice(l,1):a.push({column:i,ascending:!0}):l!==-1&&a.length===1?a[l].ascending?a[l]=Q($({},a[l]),{ascending:!1}):a=[]:a=[{column:i,ascending:!0}],this.state.setSortContext(a)}getColumnName(t){let n=t.cloneNode(!0);return n.querySelector(".sort-indicator")?.remove(),n.textContent?.trim()||""}applySortIndicators(){let t=this.tableContainerRef?.nativeElement;if(!t)return;let n=this.state.orderableColumns(),r=this.state.sortContext()||[],i=o=>r.findIndex(s=>s.column===o);t.querySelectorAll("th").forEach(o=>{let s=o.querySelector("div.bf-header-content");if(!s)return;let l=this.getColumnName(s);if(l&&n.includes(l)){let a=s.querySelector(".sort-indicator");a||(a=document.createElement("span"),a.classList.add("sort-indicator"),a.style.paddingLeft="5px",s.appendChild(a));let u=i(l);if(u!==-1){let c=r[u].ascending;a.textContent=c?"\u25B2":"\u25BC",a.style.visibility="visible"}else a.textContent="\u25CF",a.style.visibility="hidden"}})}lockInitialHeight(){if(this.isHeightInitialized)return;let t=this.tableContainerRef?.nativeElement;if(!t)return;let n=t.querySelector("table");if(n){let r=n.offsetHeight;r>0&&(t.style.height=`${r+2}px`,this.isHeightInitialized=!0)}}initThemeDetection(){this.updateTheme();let t=new MutationObserver(()=>this.updateTheme());t.observe(document.body,{attributes:!0,attributeFilter:["class","data-theme","data-vscode-theme-kind"]}),this.themeObserver=t}updateTheme(){let t=document.body,n=t.classList.contains("vscode-dark")||t.classList.contains("theme-dark")||t.dataset.theme==="dark"||t.getAttribute("data-vscode-theme-kind")==="vscode-dark";this.isDarkMode.set(n)}static \u0275fac=function(t){return new(t||$r)};static \u0275cmp=Kp({type:$r,selectors:[["","app-root",""]],viewQuery:function(t,n){if(t&1&&Ea(Rm,5),t&2){let r;Eg(r=Ig())&&(n.tableContainerRef=r.first)}},features:[Yg([Qo])],attrs:Lm,decls:4,vars:4,consts:[["tableContainer",""],[1,"bigframes-widget"],[1,"bigframes-error-message"],[1,"deferred-container"],[1,"deferred-card"],[1,"deferred-estimate"],[1,"run-query-button",3,"click","disabled"],[1,"spinner"],[1,"table-container",3,"click","innerHTML"],[1,"footer"],[1,"row-count"],[1,"pagination"],[3,"click","disabled"],[1,"page-indicator"],[1,"settings"],[1,"max-columns"],["for","max-cols-select"],["id","max-cols-select",3,"change","value"],[3,"value"],[1,"page-size"],["for","page-size-select"],["id","page-size-select",3,"change","value"]],template:function(t,n){t&1&&(P(0,"div",1),Vr(1,jm,2,1,"div",2),Vr(2,zm,7,3,"div",3)(3,Um,25,7),N()),t&2&&(Ia("bigframes-dark-mode",n.isDarkMode()),L(),Rr(n.errorMessage()?1:-1),L(),Rr(n.isDeferredMode()?2:3))},styles:[".bigframes-widget.bigframes-widget[_ngcontent-%COMP%]{--bf-bg: white;--bf-border-color: #ccc;--bf-error-bg: #fbe;--bf-error-border: red;--bf-error-fg: black;--bf-fg: black;--bf-header-bg: #f5f5f5;--bf-null-fg: gray;--bf-row-even-bg: #f5f5f5;--bf-row-odd-bg: white;background-color:var(--bf-bg);box-sizing:border-box;color:var(--bf-fg);display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0;padding:0;width:100%}.bigframes-widget[_ngcontent-%COMP%] *[_ngcontent-%COMP%]{box-sizing:border-box}@media(prefers-color-scheme:dark){.bigframes-widget.bigframes-widget[_ngcontent-%COMP%]{--bf-bg: var(--vscode-editor-background, #202124);--bf-border-color: #444;--bf-error-bg: #511;--bf-error-border: #f88;--bf-error-fg: #fcc;--bf-fg: white;--bf-header-bg: var(--vscode-editor-background, black);--bf-null-fg: #aaa;--bf-row-even-bg: #202124;--bf-row-odd-bg: #383838}}.bigframes-widget.bigframes-dark-mode.bigframes-dark-mode[_ngcontent-%COMP%]{--bf-bg: var(--vscode-editor-background, #202124);--bf-border-color: #444;--bf-error-bg: #511;--bf-error-border: #f88;--bf-error-fg: #fcc;--bf-fg: white;--bf-header-bg: var(--vscode-editor-background, black);--bf-null-fg: #aaa;--bf-row-even-bg: #202124;--bf-row-odd-bg: #383838}.bigframes-widget[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%]{background-color:var(--bf-bg);margin:0;overflow:auto;padding:0}.bigframes-widget[_ngcontent-%COMP%] .footer[_ngcontent-%COMP%]{align-items:center;background-color:var(--bf-bg);color:var(--bf-fg);display:flex;font-size:.8rem;justify-content:space-between;padding:8px}.bigframes-widget[_ngcontent-%COMP%] .footer[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{flex:1}.bigframes-widget[_ngcontent-%COMP%] .pagination[_ngcontent-%COMP%]{align-items:center;display:flex;flex-direction:row;gap:4px;justify-content:center;padding:4px}.bigframes-widget[_ngcontent-%COMP%] .page-indicator[_ngcontent-%COMP%], .bigframes-widget[_ngcontent-%COMP%] .row-count[_ngcontent-%COMP%]{margin:0 8px}.bigframes-widget[_ngcontent-%COMP%] .settings[_ngcontent-%COMP%]{align-items:center;display:flex;flex-direction:row;gap:16px;justify-content:end}.bigframes-widget[_ngcontent-%COMP%] .page-size[_ngcontent-%COMP%], .bigframes-widget[_ngcontent-%COMP%] .max-columns[_ngcontent-%COMP%]{align-items:center;display:flex;flex-direction:row;gap:4px}.bigframes-widget[_ngcontent-%COMP%] .page-size[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .bigframes-widget[_ngcontent-%COMP%] .max-columns[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{margin-right:8px}.bigframes-widget[_ngcontent-%COMP%] table.bigframes-widget-table, .bigframes-widget[_ngcontent-%COMP%] table.dataframe{background-color:var(--bf-bg);border:1px solid var(--bf-border-color);border-collapse:collapse;border-spacing:0;box-shadow:none;color:var(--bf-fg);margin:0;outline:none;text-align:left;width:auto}.bigframes-widget[_ngcontent-%COMP%] tr{border:none}.bigframes-widget[_ngcontent-%COMP%] th{background-color:var(--bf-header-bg);border:1px solid var(--bf-border-color);color:var(--bf-fg);padding:0;position:sticky;text-align:left;top:0;z-index:1}.bigframes-widget[_ngcontent-%COMP%] td{border:1px solid var(--bf-border-color);color:var(--bf-fg);padding:.5em}.bigframes-widget[_ngcontent-%COMP%] table tbody tr:nth-child(odd), .bigframes-widget[_ngcontent-%COMP%] table tbody tr:nth-child(odd) td{background-color:var(--bf-row-odd-bg)}.bigframes-widget[_ngcontent-%COMP%] table tbody tr:nth-child(2n), .bigframes-widget[_ngcontent-%COMP%] table tbody tr:nth-child(2n) td{background-color:var(--bf-row-even-bg)}.bigframes-widget[_ngcontent-%COMP%] .bf-header-content{box-sizing:border-box;height:100%;overflow:auto;padding:.5em;resize:horizontal;width:100%}.bigframes-widget[_ngcontent-%COMP%] th .sort-indicator{padding-left:4px;visibility:hidden}.bigframes-widget[_ngcontent-%COMP%] th:hover .sort-indicator{visibility:visible}.bigframes-widget[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background-color:transparent;border:1px solid currentColor;border-radius:4px;color:inherit;cursor:pointer;display:inline-block;padding:2px 8px;text-align:center;text-decoration:none;-webkit-user-select:none;user-select:none;vertical-align:middle}.bigframes-widget[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{opacity:.65;pointer-events:none}.bigframes-widget[_ngcontent-%COMP%] .bigframes-error-message[_ngcontent-%COMP%]{background-color:var(--bf-error-bg);border:1px solid var(--bf-error-border);border-radius:4px;color:var(--bf-error-fg);font-size:14px;margin-bottom:8px;padding:8px}.bigframes-widget[_ngcontent-%COMP%] .cell-align-right{text-align:right}.bigframes-widget[_ngcontent-%COMP%] .cell-align-left{text-align:left}.bigframes-widget[_ngcontent-%COMP%] .null-value{color:var(--bf-null-fg)}.bigframes-widget[_ngcontent-%COMP%] .debug-info{border-top:1px solid var(--bf-border-color)}.bigframes-widget[_ngcontent-%COMP%] .deferred-container[_ngcontent-%COMP%]{align-items:center;display:flex;justify-content:center;min-height:220px;padding:24px;width:100%}.bigframes-widget[_ngcontent-%COMP%] .deferred-card[_ngcontent-%COMP%]{background:linear-gradient(135deg,#fff9,#ffffff4d);border:1px solid rgba(255,255,255,.4);border-radius:16px;box-shadow:0 8px 32px #1f268712;display:flex;flex-direction:column;gap:16px;max-width:500px;padding:32px;text-align:center;transition:all .3s ease-in-out}.bigframes-widget.bigframes-dark-mode[_ngcontent-%COMP%] .deferred-card[_ngcontent-%COMP%]{background:linear-gradient(135deg,#20212499,#2021244d);border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px #0000004d}@media(prefers-color-scheme:dark){.bigframes-widget[_ngcontent-%COMP%] .deferred-card[_ngcontent-%COMP%]{background:linear-gradient(135deg,#20212499,#2021244d);border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px #0000004d}}.bigframes-widget[_ngcontent-%COMP%] .deferred-title[_ngcontent-%COMP%]{font-size:1.1rem;font-weight:600;margin:0}.bigframes-widget[_ngcontent-%COMP%] .deferred-estimate[_ngcontent-%COMP%]{color:var(--bf-null-fg);font-size:.9rem;margin:0}.bigframes-widget[_ngcontent-%COMP%] .run-query-button[_ngcontent-%COMP%]{align-items:center;background-color:var(--bf-fg);border:1px solid var(--bf-fg);border-radius:8px;color:var(--bf-bg);cursor:pointer;display:inline-flex;font-size:14px;font-weight:600;gap:8px;justify-content:center;padding:10px 20px;transition:transform .2s ease,opacity .2s ease}.bigframes-widget[_ngcontent-%COMP%] .run-query-button[_ngcontent-%COMP%]:hover{opacity:.9;transform:translateY(-1px)}.bigframes-widget[_ngcontent-%COMP%] .run-query-button[_ngcontent-%COMP%]:active{transform:translateY(0)}.bigframes-widget[_ngcontent-%COMP%] .run-query-button[_ngcontent-%COMP%]:disabled{cursor:not-allowed;opacity:.6}.bigframes-widget[_ngcontent-%COMP%] .spinner[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spin 1s linear infinite;border:2px solid currentColor;border-radius:50%;border-top-color:transparent;display:inline-block;height:12px;width:12px}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}"]})};function $m({model:e,el:t}){let n=document.createElement("div");n.setAttribute("app-root",""),t.appendChild(n);let r={providers:[nd(),Xg(),{provide:"ANYWIDGET_MODEL",useValue:e}]};Tm(r).then(i=>{i.bootstrap(Zm,n),n.removeAttribute("app-root")}).catch(i=>console.error(i))}var Gm={render:$m};export{Gm as default}; diff --git a/packages/bigframes/bigframes/display/table_widget_angular/README.md b/packages/bigframes/bigframes/display/table_widget_angular/README.md index 80af11fd0954..db09b5b9f56e 100644 --- a/packages/bigframes/bigframes/display/table_widget_angular/README.md +++ b/packages/bigframes/bigframes/display/table_widget_angular/README.md @@ -1,65 +1,48 @@ # TableWidgetAngular -This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 21.2.9. +This project is the Angular-based interactive Table Widget frontend for BigQuery DataFrames (``bigframes``). It is integrated into the Python backend using ``anywidget``. -## Development server +This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 21.2.9. -To start a local development server, run: +## Getting Started -```bash -npm start -# or -npx ng serve -``` +Ensure you have [Node.js](https://nodejs.org/) installed. -Once the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files. +1. Install dependencies: + ```bash + npm install + ``` -## Code scaffolding +2. Start the local development server: + ```bash + npm run start + ``` + Navigate to `http://localhost:4200/`. The application will automatically reload when you modify the source files under `src/`. -Angular CLI includes powerful code scaffolding tools. To generate a new component, run: +## Development & Code Scaffolding +To generate a new component, directive, or service: ```bash -npx ng generate component component-name +ng generate component component-name ``` For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run: - ```bash -npx ng generate --help +ng generate --help ``` -## Building - -To build the project run: - -```bash -npm run build -# or -npx ng build -``` - -This will compile your project and store the build artifacts in the `dist/` directory. By default, the production build optimizes your application for performance and speed. - -## Running unit tests - -To execute unit tests with the [Vitest](https://vitest.dev/) test runner, use the following command: +## Running Tests +To execute unit tests: ```bash npm run test -# or -npx ng test ``` -## Running end-to-end tests - -For end-to-end (e2e) testing, run: +## Packaging for Python +Before testing the widget inside a Jupyter notebook or committing changes, compile the Angular app and bundle it so that the Python backend can load it: ```bash -npx ng e2e +npm run build:widget ``` -Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs. - -## Additional Resources - -For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page. +This command compiles the project in production mode and then triggers `bundle.js` (via `esbuild`) to bundle the browser artifacts into a single unified ES module file at `../table_widget_angular.js`. diff --git a/packages/bigframes/bigframes/display/table_widget_angular/bundle.js b/packages/bigframes/bigframes/display/table_widget_angular/bundle.js index 8138b055fef1..fb97ab8a3768 100644 --- a/packages/bigframes/bigframes/display/table_widget_angular/bundle.js +++ b/packages/bigframes/bigframes/display/table_widget_angular/bundle.js @@ -40,6 +40,7 @@ esbuild.build({ outfile: path.resolve(__dirname, '../table_widget_angular.js'), format: 'esm', logLevel: 'info', + minify: true, banner: { js: banner, }, diff --git a/packages/bigframes/bigframes/display/table_widget_angular/src/app/app.ts b/packages/bigframes/bigframes/display/table_widget_angular/src/app/app.ts index 343be0074708..51cd02b5eb88 100644 --- a/packages/bigframes/bigframes/display/table_widget_angular/src/app/app.ts +++ b/packages/bigframes/bigframes/display/table_widget_angular/src/app/app.ts @@ -19,50 +19,68 @@ import { DomSanitizer } from '@angular/platform-browser'; import { WidgetStateService } from './widget-state.service'; @Component({ - selector: 'app-root', + selector: '[app-root]', standalone: true, imports: [], + providers: [WidgetStateService], template: `
@if (errorMessage()) {
{{ errorMessage() }}
} -
-
- -
- {{ rowCountText() }} - -
+ }
`, styles: [` @@ -89,6 +107,7 @@ import { WidgetStateService } from './widget-state.service'; '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', sans-serif; margin: 0; padding: 0; + width: 100%; } .bigframes-widget * { @@ -127,7 +146,6 @@ import { WidgetStateService } from './widget-state.service'; .bigframes-widget .table-container { background-color: var(--bf-bg); margin: 0; - max-height: 620px; overflow: auto; padding: 0; } @@ -292,6 +310,113 @@ import { WidgetStateService } from './widget-state.service'; .bigframes-widget ::ng-deep .debug-info { border-top: 1px solid var(--bf-border-color); } + + .bigframes-widget .deferred-container { + align-items: center; + display: flex; + justify-content: center; + min-height: 220px; + padding: 24px; + width: 100%; + } + + .bigframes-widget .deferred-card { + background: linear-gradient( + 135deg, + rgba(255, 255, 255, 0.6), + rgba(255, 255, 255, 0.3) + ); + border: 1px solid rgba(255, 255, 255, 0.4); + border-radius: 16px; + box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.07); + display: flex; + flex-direction: column; + gap: 16px; + max-width: 500px; + padding: 32px; + text-align: center; + transition: all 0.3s ease-in-out; + } + + .bigframes-widget.bigframes-dark-mode .deferred-card { + background: linear-gradient( + 135deg, + rgba(32, 33, 36, 0.6), + rgba(32, 33, 36, 0.3) + ); + border: 1px solid rgba(255, 255, 255, 0.1); + box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.3); + } + + @media (prefers-color-scheme: dark) { + .bigframes-widget .deferred-card { + background: linear-gradient( + 135deg, + rgba(32, 33, 36, 0.6), + rgba(32, 33, 36, 0.3) + ); + border: 1px solid rgba(255, 255, 255, 0.1); + box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.3); + } + } + + .bigframes-widget .deferred-title { + font-size: 1.1rem; + font-weight: 600; + margin: 0; + } + + .bigframes-widget .deferred-estimate { + color: var(--bf-null-fg); + font-size: 0.9rem; + margin: 0; + } + + .bigframes-widget .run-query-button { + align-items: center; + background-color: var(--bf-fg); + border: 1px solid var(--bf-fg); + border-radius: 8px; + color: var(--bf-bg); + cursor: pointer; + display: inline-flex; + font-size: 14px; + font-weight: 600; + gap: 8px; + justify-content: center; + padding: 10px 20px; + transition: transform 0.20s ease, opacity 0.20s ease; + } + + .bigframes-widget .run-query-button:hover { + opacity: 0.90; + transform: translateY(-1px); + } + + .bigframes-widget .run-query-button:active { + transform: translateY(0); + } + + .bigframes-widget .run-query-button:disabled { + cursor: not-allowed; + opacity: 0.60; + } + + .bigframes-widget .spinner { + animation: spin 1s linear infinite; + border: 2px solid currentColor; + border-radius: 50%; + border-top-color: transparent; + display: inline-block; + height: 12px; + width: 12px; + } + + @keyframes spin { + to { + transform: rotate(360deg); + } + } `] }) export class App { @@ -307,6 +432,9 @@ export class App { protected readonly pageSize = this.state.pageSize; protected readonly page = this.state.page; protected readonly rowCount = this.state.rowCount; + protected readonly isDeferredMode = this.state.isDeferredMode; + protected readonly dryRunInfo = this.state.dryRunInfo; + protected readonly isLoading = signal(false); // Computed properties for formatting and display states protected readonly sanitizedHtml = computed(() => @@ -357,21 +485,34 @@ export class App { protected readonly isDarkMode = signal(false); private themeObserver: MutationObserver | null = null; - @ViewChild('tableContainer', { static: true }) + @ViewChild('tableContainer') tableContainerRef!: ElementRef; + private isHeightInitialized = false; + constructor() { effect(() => { // Setup dependencies for reactive effect const _html = this.state.tableHtml(); const _sort = this.state.sortContext(); const _orderable = this.state.orderableColumns(); + const deferred = this.isDeferredMode(); + if (deferred) { + this.isHeightInitialized = false; + } // Schedule DOM post-processing once the innerHTML render completes setTimeout(() => { this.applySortIndicators(); + this.lockInitialHeight(); }, 0); }); + + effect(() => { + if (!this.state.startExecution()) { + this.isLoading.set(false); + } + }); } ngOnInit() { @@ -382,6 +523,11 @@ export class App { this.themeObserver?.disconnect(); } + protected handleRunQuery() { + this.isLoading.set(true); + this.state.setStartExecution(true); + } + protected handlePageChange(direction: number) { const nextPage = this.page() + direction; this.state.setPage(nextPage); @@ -504,6 +650,20 @@ export class App { }); } + private lockInitialHeight() { + if (this.isHeightInitialized) return; + const container = this.tableContainerRef?.nativeElement; + if (!container) return; + + const table = container.querySelector('table'); + if (table) { + const tableHeight = (table as HTMLElement).offsetHeight; + if (tableHeight > 0) { + container.style.height = `${tableHeight + 2}px`; + this.isHeightInitialized = true; + } + } + } private initThemeDetection() { this.updateTheme(); diff --git a/packages/bigframes/bigframes/display/table_widget_angular/src/app/widget-state.service.spec.ts b/packages/bigframes/bigframes/display/table_widget_angular/src/app/widget-state.service.spec.ts index 3ad922c91048..563f9fa75a54 100644 --- a/packages/bigframes/bigframes/display/table_widget_angular/src/app/widget-state.service.spec.ts +++ b/packages/bigframes/bigframes/display/table_widget_angular/src/app/widget-state.service.spec.ts @@ -52,6 +52,7 @@ describe('WidgetStateService', () => { TestBed.configureTestingModule({ providers: [ + WidgetStateService, { provide: 'ANYWIDGET_MODEL', useValue: mockModel } ] }); diff --git a/packages/bigframes/bigframes/display/table_widget_angular/src/app/widget-state.service.ts b/packages/bigframes/bigframes/display/table_widget_angular/src/app/widget-state.service.ts index 3ab51e1bdf54..9feea831a499 100644 --- a/packages/bigframes/bigframes/display/table_widget_angular/src/app/widget-state.service.ts +++ b/packages/bigframes/bigframes/display/table_widget_angular/src/app/widget-state.service.ts @@ -21,9 +21,7 @@ export interface SortItem { ascending: boolean; } -@Injectable({ - providedIn: 'root' -}) +@Injectable() export class WidgetStateService { readonly page = signal(0); readonly pageSize = signal(10); @@ -33,6 +31,9 @@ export class WidgetStateService { readonly sortContext = signal([]); readonly orderableColumns = signal([]); readonly errorMessage = signal(null); + readonly startExecution = signal(false); + readonly isDeferredMode = signal(false); + readonly dryRunInfo = signal(''); constructor(@Inject('ANYWIDGET_MODEL') private model: any) { if (model) { @@ -49,6 +50,9 @@ export class WidgetStateService { model.get('_error_message') ?? null; this.errorMessage.set(initialError); + this.startExecution.set(model.get('start_execution') ?? false); + this.isDeferredMode.set(model.get('is_deferred_mode') ?? false); + this.dryRunInfo.set(model.get('dry_run_info') ?? ''); // Register event listeners for anywidget updates model.on('change:page', () => { @@ -72,6 +76,15 @@ export class WidgetStateService { model.on('change:orderable_columns', () => { this.orderableColumns.set(model.get('orderable_columns')); }); + model.on('change:start_execution', () => { + this.startExecution.set(model.get('start_execution') ?? false); + }); + model.on('change:is_deferred_mode', () => { + this.isDeferredMode.set(model.get('is_deferred_mode') ?? false); + }); + model.on('change:dry_run_info', () => { + this.dryRunInfo.set(model.get('dry_run_info') ?? ''); + }); // Robust dual-listen pattern for error messages (with/without underscore) const handleErrorChange = () => { @@ -120,4 +133,12 @@ export class WidgetStateService { this.model.save_changes(); } } + + setStartExecution(startExecution: boolean) { + this.startExecution.set(startExecution); + if (this.model) { + this.model.set('start_execution', startExecution); + this.model.save_changes(); + } + } } diff --git a/packages/bigframes/bigframes/display/table_widget_angular/src/index.html b/packages/bigframes/bigframes/display/table_widget_angular/src/index.html index 1cc521412380..f5dda01b48aa 100644 --- a/packages/bigframes/bigframes/display/table_widget_angular/src/index.html +++ b/packages/bigframes/bigframes/display/table_widget_angular/src/index.html @@ -24,6 +24,6 @@ - +
diff --git a/packages/bigframes/bigframes/display/table_widget_angular/src/main.ts b/packages/bigframes/bigframes/display/table_widget_angular/src/main.ts index 32e4ea202bf2..3d515bb3d346 100644 --- a/packages/bigframes/bigframes/display/table_widget_angular/src/main.ts +++ b/packages/bigframes/bigframes/display/table_widget_angular/src/main.ts @@ -20,7 +20,8 @@ import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZonelessC function render({ model, el }: { model: any, el: HTMLElement }) { // Create a container for the Angular app - const appRoot = document.createElement('app-root'); + const appRoot = document.createElement('div'); + appRoot.setAttribute('app-root', ''); el.appendChild(appRoot); const appConfig: ApplicationConfig = { @@ -34,6 +35,7 @@ function render({ model, el }: { model: any, el: HTMLElement }) { createApplication(appConfig) .then((appRef) => { appRef.bootstrap(App, appRoot); + appRoot.removeAttribute('app-root'); }) .catch((err) => console.error(err)); } diff --git a/packages/bigframes/bigframes/session/deferred.py b/packages/bigframes/bigframes/session/deferred.py new file mode 100644 index 000000000000..75906e2a124b --- /dev/null +++ b/packages/bigframes/bigframes/session/deferred.py @@ -0,0 +1,76 @@ +# Copyright 2026 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. + +from __future__ import annotations + +from typing import Any, Callable, Optional, Union + +import pandas as pd + +import bigframes.dataframe +import bigframes.series + + +class DeferredBigQueryDataFrame: + """A proxy object that defers the execution of a BigQuery job until requested.""" + + def __init__( + self, + execution_func: Callable[ + [], + Union[ + bigframes.dataframe.DataFrame, + bigframes.series.Series, + pd.Series, + pd.DataFrame, + ], + ], + ): + self._execution_func = execution_func + self._result: Optional[ + Union[ + bigframes.dataframe.DataFrame, + bigframes.series.Series, + pd.Series, + pd.DataFrame, + ] + ] = None + + @property + def executed(self) -> bool: + return self._result is not None + + def execute( + self, + ) -> Union[ + bigframes.dataframe.DataFrame, + bigframes.series.Series, + pd.Series, + pd.DataFrame, + ]: + """Executes the deferred operation and returns the resulting DataFrame.""" + if self._result is None: + self._result = self._execution_func() + return self._result + + def _repr_mimebundle_(self, include=None, exclude=None): + from bigframes.display.anywidget import TableWidget + + return TableWidget(self)._repr_mimebundle_(include=include, exclude=exclude) # type: ignore + + def __getattr__(self, name: str) -> Any: + raise AttributeError( + f"'{type(self).__name__}' object has no attribute '{name}'. " + "This is a deferred object. Display it to run the query interactively." + ) diff --git a/packages/bigframes/mypy.ini b/packages/bigframes/mypy.ini index 7709eb200a35..e3f44c262ac6 100644 --- a/packages/bigframes/mypy.ini +++ b/packages/bigframes/mypy.ini @@ -44,3 +44,6 @@ ignore_missing_imports = True [mypy-anywidget] ignore_missing_imports = True + +[mypy-bigframes_vendored.*] +ignore_errors = True diff --git a/packages/bigframes/tests/js/table_widget_angular.test.js b/packages/bigframes/tests/js/table_widget_angular.test.js index 62af3cb26dc6..ad4724b5a6d2 100644 --- a/packages/bigframes/tests/js/table_widget_angular.test.js +++ b/packages/bigframes/tests/js/table_widget_angular.test.js @@ -32,7 +32,8 @@ describe('TableWidgetAngular', () => { }); it( - 'should bootstrap multiple widgets independently on their respective elements', + 'should bootstrap multiple widgets independently ' + + 'on their respective elements', async () => { const el1 = document.createElement('div'); document.body.appendChild(el1); @@ -78,13 +79,13 @@ describe('TableWidgetAngular', () => { // Wait for async angular bootstrap to complete await new Promise((resolve) => setTimeout(resolve, 200)); - const appRoot1 = el1.querySelector('app-root'); + const appRoot1 = el1.querySelector('.bigframes-widget'); expect(appRoot1).not.toBeNull(); expect(el1.textContent).toContain('Widget 1 Content'); expect(el1.textContent).toContain('100 total rows'); expect(el1.textContent).toContain('Page 1 of 10'); - const appRoot2 = el2.querySelector('app-root'); + const appRoot2 = el2.querySelector('.bigframes-widget'); expect(appRoot2).not.toBeNull(); expect(el2.textContent).toContain('Widget 2 Content'); expect(el2.textContent).toContain('200 total rows'); @@ -93,4 +94,84 @@ describe('TableWidgetAngular', () => { document.body.removeChild(el1); document.body.removeChild(el2); }); + + it( + 'should render deferred card and trigger execution on click', + async () => { + // Arrange + const el = document.createElement('div'); + document.body.appendChild(el); + + const state = { + is_deferred_mode: true, + dry_run_info: 'Estimated cost: $0.05', + start_execution: false, + table_html: '', + page_size: 10, + page: 0, + row_count: 0, + max_columns: 20, + }; + + const listeners = {}; + const model = { + get: jest.fn((prop) => state[prop]), + set: jest.fn((prop, val) => { + state[prop] = val; + }), + save_changes: jest.fn(), + on: jest.fn((event, callback) => { + listeners[event] = callback; + }), + }; + + // Act + render({ model, el }); + await new Promise((resolve) => setTimeout(resolve, 200)); + + // Assert (Initial state) + const estimate = el.querySelector('.deferred-estimate'); + expect(estimate).not.toBeNull(); + expect(estimate.textContent).toContain('Estimated cost: $0.05'); + + const runButton = el.querySelector('.run-query-button'); + expect(runButton).not.toBeNull(); + expect(runButton.textContent).toContain('Run Query'); + expect(el.querySelector('.table-container')).toBeNull(); + + // Act (Click Run Query) + runButton.click(); + + // Assert (Execution requested) + expect(model.set).toHaveBeenCalledWith('start_execution', true); + expect(model.save_changes).toHaveBeenCalled(); + expect(runButton.disabled).toBe(true); + expect(el.querySelector('.spinner')).not.toBeNull(); + + // Act (Simulate Python load completion) + state.is_deferred_mode = false; + state.table_html = '
Data Loaded
'; + state.row_count = 50; + + if (listeners['change:is_deferred_mode']) { + listeners['change:is_deferred_mode'](); + } + if (listeners['change:table_html']) { + listeners['change:table_html'](); + } + if (listeners['change:row_count']) { + listeners['change:row_count'](); + } + await new Promise((resolve) => setTimeout(resolve, 200)); + + // Assert (Transition to loaded state) + expect(el.querySelector('.deferred-container')).toBeNull(); + const tableContainer = el.querySelector('.table-container'); + expect(tableContainer).not.toBeNull(); + expect(el.textContent).toContain('Data Loaded'); + expect(el.textContent).toContain('50 total rows'); + + // Clean up + document.body.removeChild(el); + }); }); diff --git a/packages/bigframes/tests/unit/core/compile/sqlglot/sql/test_base.py b/packages/bigframes/tests/unit/core/compile/sqlglot/sql/test_base.py index 617f3636d403..edbb77b32c62 100644 --- a/packages/bigframes/tests/unit/core/compile/sqlglot/sql/test_base.py +++ b/packages/bigframes/tests/unit/core/compile/sqlglot/sql/test_base.py @@ -15,7 +15,9 @@ import datetime import decimal import re +import unittest.mock as mock +import bigframes_vendored.sqlglot.expressions as sge import numpy as np import pandas as pd import pyarrow as pa @@ -162,8 +164,6 @@ def test_literal_for_list(value: list, expected: str): def test_literal_null_type(): - import unittest.mock as mock - mock_dtype = mock.Mock() with mock.patch( "bigframes.core.compile.sqlglot.sql.base.sgt.from_bigframes_dtype", @@ -171,3 +171,21 @@ def test_literal_null_type(): ): got = sql.to_sql(sql.literal(None, dtype=mock_dtype)) assert got == "NULL" + + +@pytest.mark.parametrize( + ("arg", "safe"), + ( + pytest.param("abc", False, id="string"), + pytest.param(None, False, id="none"), + pytest.param("abc", True, id="safe_cast"), + ), +) +def test_cast_to_null_type_returns_flat_null(arg, safe): + assert sql.to_sql(sql.cast(arg, "NULL", safe=safe)) == "NULL" + + +def test_nested_cast_to_null_type_is_flattened(): + nested = sge.Cast(this=sge.Cast(this=sge.Null(), to="NULL"), to="INT64") + + assert sql.to_sql(nested) == "CAST(NULL AS INT64)" diff --git a/packages/bigframes/tests/unit/display/test_anywidget.py b/packages/bigframes/tests/unit/display/test_anywidget.py index acdbf182b133..a973b79ae03f 100644 --- a/packages/bigframes/tests/unit/display/test_anywidget.py +++ b/packages/bigframes/tests/unit/display/test_anywidget.py @@ -206,7 +206,7 @@ def test_json_column_converted_to_string_for_display(): with mock.patch.object(DataFrame, "__getitem__", return_value=mock_series): with mock.patch.object(DataFrame, "assign") as mock_assign: - df._prepare_display_df() + df._process_display_df() mock_assign.assert_called_once() _, kwargs = mock_assign.call_args @@ -236,7 +236,7 @@ def test_struct_column_with_nested_json_converted_to_string_for_display(): with mock.patch.object(DataFrame, "__getitem__", return_value=mock_series): with mock.patch.object(DataFrame, "assign") as mock_assign: - df._prepare_display_df() + df._process_display_df() mock_assign.assert_called_once() _, kwargs = mock_assign.call_args @@ -247,3 +247,241 @@ def test_struct_column_with_nested_json_converted_to_string_for_display(): assert isinstance(call_arg, SqlScalarOp) assert call_arg._output_type == STRING_DTYPE assert call_arg.sql_template == "TO_JSON_STRING({0})" + + +@pytest.fixture +def mock_df_deferred(): + with mock.patch("bigframes.display.anywidget._ANYWIDGET_INSTALLED", True): + df = mock.Mock(spec=bigframes.dataframe.DataFrame) + df.shape = (100, 4) + df.columns = ["A", "B", "C", "D"] + df.dtypes = { + "A": bigframes.dtypes.INT_DTYPE, + "B": bigframes.dtypes.STRING_DTYPE, + "C": bigframes.dtypes.FLOAT_DTYPE, + "D": bigframes.dtypes.BOOL_DTYPE, + } + + df.to_pandas_batches.return_value = iter( + [pd.DataFrame({"A": [1], "B": ["a"], "C": [1.0], "D": [True]})] + ) + + df.sort_values.return_value = df + + df._block = mock.Mock() + df._block.has_index = False + df._process_display_df.return_value = (df, None) + + yield df + + +@pytest.fixture +def mock_deferred_df(): + from bigframes.session.deferred import DeferredBigQueryDataFrame + + with mock.patch("bigframes.display.anywidget._ANYWIDGET_INSTALLED", True): + # We create a mock that subclasses DeferredBigQueryDataFrame so isinstance passes + class MockDeferredBigQueryDataFrame(DeferredBigQueryDataFrame): + def __init__(self): + pass + + df = mock.MagicMock(spec=MockDeferredBigQueryDataFrame) + df.__class__ = DeferredBigQueryDataFrame # type: ignore[assignment] + yield df + + +def test_init_raises_if_anywidget_not_installed(): + with mock.patch("bigframes.display.anywidget._ANYWIDGET_INSTALLED", False): + with pytest.raises(ImportError): + from bigframes.display.anywidget import TableWidget + + TableWidget(mock.Mock()) + + +def test_init_initializes_attributes(mock_df_deferred): + from bigframes.display.anywidget import TableWidget + + with bigframes.option_context("display.render_mode", "anywidget"): + with mock.patch.object(TableWidget, "_initial_load"): + widget = TableWidget(mock_df_deferred) + + assert widget._dataframe is mock_df_deferred + assert widget.page == 0 + assert widget.page_size > 0 + assert widget.orderable_columns == [ + "A", + "B", + "C", + "D", + ] + + +def test_init_calls_initial_load(mock_df_deferred): + from bigframes.display.anywidget import TableWidget + + with mock.patch.object(TableWidget, "_initial_load") as mock_load: + TableWidget(mock_df_deferred) + mock_load.assert_called_once() + + +def test_validate_page_clamping(mock_df_deferred): + from bigframes.display.anywidget import TableWidget + + with mock.patch.object(TableWidget, "_initial_load"): + widget = TableWidget(mock_df_deferred) + widget.row_count = 100 + widget.page_size = 10 + + widget.page = 5 + assert widget.page == 5 + + with pytest.raises(ValueError): + widget.page = -1 + + widget.page = 100 + assert widget.page == 9 + + +def test_validate_page_size(mock_df_deferred): + from bigframes.display.anywidget import TableWidget + + with bigframes.option_context("display.render_mode", "anywidget"): + with mock.patch.object(TableWidget, "_initial_load"): + widget = TableWidget(mock_df_deferred) + + widget.page_size = 50 + assert widget.page_size == 50 + + original_size = widget.page_size + widget.page_size = -5 + assert widget.page_size == original_size + + widget.page_size = 10000 + assert widget.page_size == 1000 + + +def test_page_size_change_resets_page_and_sort(mock_df_deferred): + from bigframes.display.anywidget import TableWidget + + with mock.patch.object(TableWidget, "_initial_load"): + widget = TableWidget(mock_df_deferred) + widget._initial_load_complete = True + widget.page = 5 + widget.sort_context = [{"column": "A", "ascending": True}] + + widget.page_size = 20 + + assert widget.page == 0 + assert widget.sort_context == [] + + +def test_page_size_change_resets_batches(mock_df_deferred): + from bigframes.display.anywidget import TableWidget + + with mock.patch.object(TableWidget, "_initial_load"): + widget = TableWidget(mock_df_deferred) + widget._initial_load_complete = True + + widget.page_size = 50 + + mock_df_deferred.to_pandas_batches.assert_called() + + +def test_sort_change_resets_batches(mock_df_deferred): + from bigframes.display.anywidget import TableWidget + + with bigframes.option_context("display.render_mode", "anywidget"): + with mock.patch.object(TableWidget, "_initial_load"): + widget = TableWidget(mock_df_deferred) + widget._initial_load_complete = True + + mock_df_deferred.to_pandas_batches.reset_mock() + + widget.sort_context = [{"column": "B", "ascending": False}] + + assert mock_df_deferred.to_pandas_batches.call_count >= 1 + + +def test_deferred_mode_initialization(mock_deferred_df): + from bigframes.display.anywidget import TableWidget + + with mock.patch.object(TableWidget, "_initial_load") as mock_load: + widget = TableWidget(mock_deferred_df) + + assert widget.is_deferred_mode is True + mock_load.assert_not_called() + + +def test_deferred_mode_execution(mock_deferred_df, mock_df_deferred): + from bigframes.display.anywidget import TableWidget + + mock_deferred_df.execute.return_value = mock_df_deferred + + widget = TableWidget(mock_deferred_df) + + assert widget.is_deferred_mode is True + + import bigframes + + with bigframes.option_context( + "display.render_mode", bigframes.options.display.render_mode + ): + widget.start_execution = True + + thread = getattr(widget, "_execution_thread", None) + if thread is not None: + thread.join(timeout=5) + + mock_deferred_df.execute.assert_called_once() + mock_df_deferred.to_pandas_batches.assert_called_once() + assert widget.is_deferred_mode is False + + +def test_deferred_mode_execution_updates_table_html(mock_deferred_df, mock_df_deferred): + from bigframes.display.anywidget import TableWidget + + mock_deferred_df.execute.return_value = mock_df_deferred + + batches = mock.MagicMock() + batch_df = pd.DataFrame({"A": [1], "B": ["a"], "C": [1.0], "D": [True]}) + batches.__iter__.return_value = iter([batch_df]) + batches.total_rows = 1 + mock_df_deferred.to_pandas_batches.return_value = batches + + with bigframes.option_context("display.render_mode", "anywidget"): + widget = TableWidget(mock_deferred_df) + widget.is_deferred_mode = True + widget._deferred_dataframe = mock_deferred_df + assert widget.table_html == "" + + widget.start_execution = True + thread = getattr(widget, "_execution_thread", None) + if thread is not None: + thread.join(timeout=5) + + assert widget.is_deferred_mode is False + assert widget.table_html != "" + assert "table" in widget.table_html + + +def test_deferred_mode_execution_error(mock_deferred_df): + from bigframes.display.anywidget import TableWidget + + mock_deferred_df.execute.side_effect = RuntimeError("Query Failed") + + with mock.patch.object(TableWidget, "_initial_load"): + widget = TableWidget(mock_deferred_df) + + import bigframes + + with bigframes.option_context( + "display.render_mode", bigframes.options.display.render_mode + ): + widget.start_execution = True + + thread = getattr(widget, "_execution_thread", None) + if thread is not None: + thread.join(timeout=5) + + assert widget.is_deferred_mode is True + assert widget._error_message == "Query Failed" diff --git a/packages/bigframes/tests/unit/display/test_html.py b/packages/bigframes/tests/unit/display/test_html.py index 9386dad8b1ff..a49d64b7690e 100644 --- a/packages/bigframes/tests/unit/display/test_html.py +++ b/packages/bigframes/tests/unit/display/test_html.py @@ -192,7 +192,7 @@ def test_repr_mimebundle_head(): mock_df = Mock() mock_df.columns = ["col1"] - mock_df._prepare_display_df.return_value = mock_df + mock_df._process_display_df.return_value = (mock_df, []) # Mock the call to retrieve_repr_request_results pandas_df = pd.DataFrame({"col1": [1, 2, 3]}) @@ -215,7 +215,7 @@ def test_repr_mimebundle_head(): bundle = bf_html.repr_mimebundle_head(mock_df) assert bundle == {"text/html": "", "text/plain": "text"} - mock_df._prepare_display_df.assert_called_once() + mock_df._process_display_df.assert_called_once() mock_df._block.retrieve_repr_request_results.assert_called_once() mock_create_html.assert_called_once() mock_create_text.assert_called_once() diff --git a/packages/bigframes/tests/unit/display/test_render_mode.py b/packages/bigframes/tests/unit/display/test_render_mode.py index 0cc1e1d80afe..338d6a216345 100644 --- a/packages/bigframes/tests/unit/display/test_render_mode.py +++ b/packages/bigframes/tests/unit/display/test_render_mode.py @@ -51,14 +51,25 @@ def test_repr_mimebundle_selection_logic(): ) mock_deferred.return_value = {"text/plain": "deferred"} - # Test deferred repr_mode + # Test deferred repr_mode when anywidget is available + with bpd.option_context("display.repr_mode", "deferred"): + bundle = bf_html.repr_mimebundle(mock_obj) + assert "application/vnd.jupyter.widget-view+json" in bundle[0] + mock_anywidget.assert_called_once() + mock_deferred.assert_not_called() + + mock_anywidget.reset_mock() + + # Test fallback to static deferred repr when anywidget fails + mock_anywidget.side_effect = Exception("Anywidget failed") with bpd.option_context("display.repr_mode", "deferred"): bundle = bf_html.repr_mimebundle(mock_obj) assert bundle == {"text/plain": "deferred"} mock_deferred.assert_called_once() - mock_head.assert_not_called() + mock_anywidget.side_effect = None mock_deferred.reset_mock() + mock_anywidget.reset_mock() # Test plaintext render_mode with bpd.option_context("display.render_mode", "plaintext"):