{ "nbformat": 4, "nbformat_minor": 5, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "version_major": 2, "version_minor": 0, "state": { "141ce958d68f4129aa6580cbe1023815": { "model_module": "jupyter-leaflet", "model_name": "LeafletMapModel", "model_module_version": "^0.20", "state": { "_dom_classes": [], "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletMapModel", "_view_count": null, "_view_module": "jupyter-leaflet", "_view_module_version": "^0.20", "_view_name": "LeafletMapView", "bottom": 106844, "bounce_at_zoom_limits": true, "box_zoom": true, "center": [ 31.89621446335144, 35.509872436523445 ], "close_popup_on_click": true, "controls": [ "IPY_MODEL_65cb00d507d448b897843232d2f98c81", "IPY_MODEL_c52bd4b97a34412ba12f3ff9621fe1f4", "IPY_MODEL_a578dec10236466084f061c838ec5c90", "IPY_MODEL_6236499794fb4e61a6c2aa7e52c63594", "IPY_MODEL_9619afab783143f09bd9911e099fb8f1", "IPY_MODEL_7261a0e6740d49fb940223d2ccb5b0c3", "IPY_MODEL_41a2b6d3eec04598aa3ea0e566ce17e9", "IPY_MODEL_771dae501e3b4753801d20c356873bbc" ], "crs": { "name": "EPSG3857", "custom": false }, "default_style": "IPY_MODEL_287a73cba1cc4d4e90a67aa08a54e02d", "double_click_zoom": true, "dragging": true, "dragging_style": "IPY_MODEL_983ad5f762864e6eb21d6093fed853b8", "east": 36.46362304687501, "fullscreen": false, "inertia": true, "inertia_deceleration": 3000, "inertia_max_speed": 1500, "interpolation": "bilinear", "keyboard": true, "keyboard_pan_offset": 80, "keyboard_zoom_offset": 1, "layers": [ "IPY_MODEL_d1f39369c8c649c680ad049035ceb0c9", "IPY_MODEL_4b437b03db424ade922c594c90120b09", "IPY_MODEL_35e0a0e19afe4b51a4faaf74aa9fa786" ], "layout": "IPY_MODEL_88abdc50e1c94ee5a9e5cec495755a42", "left": 156235, "max_zoom": 24, "min_zoom": null, "modisdate": "2026-08-04", "north": 32.24532861404601, "options": [ "bounce_at_zoom_limits", "box_zoom", "center", "close_popup_on_click", "double_click_zoom", "dragging", "fullscreen", "inertia", "inertia_deceleration", "inertia_max_speed", "interpolation", "keyboard", "keyboard_pan_offset", "keyboard_zoom_offset", "max_zoom", "min_zoom", "prefer_canvas", "scroll_wheel_zoom", "tap", "tap_tolerance", "touch_zoom", "world_copy_jump", "zoom", "zoom_animation_threshold", "zoom_delta", "zoom_snap" ], "panes": {}, "prefer_canvas": false, "right": 157624, "scroll_wheel_zoom": true, "south": 31.545771394936285, "style": "IPY_MODEL_287a73cba1cc4d4e90a67aa08a54e02d", "tap": true, "tap_tolerance": 15, "top": 106244, "touch_zoom": true, "west": 34.55612182617188, "window_url": "https://bifs166uyym-496ff2e9c6d22116-0-colab.googleusercontent.com/outputframe.html?vrz=colab-external_20260803-060053_RC00_958208889", "world_copy_jump": false, "zoom": 10, "zoom_animation_threshold": 4, "zoom_delta": 1, "zoom_snap": 1 } }, "65cb00d507d448b897843232d2f98c81": { "model_module": "jupyter-leaflet", "model_name": "LeafletWidgetControlModel", "model_module_version": "^0.20", "state": { "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletWidgetControlModel", "_view_count": null, "_view_module": "jupyter-leaflet", "_view_module_version": "^0.20", "_view_name": "LeafletWidgetControlView", "max_height": null, "max_width": null, "min_height": null, "min_width": null, "options": [ "position", "transparent_bg" ], "position": "topright", "transparent_bg": true, "widget": "IPY_MODEL_40822bcdecd042d8a0084dc988037141" } }, "c52bd4b97a34412ba12f3ff9621fe1f4": { "model_module": "jupyter-leaflet", "model_name": "LeafletWidgetControlModel", "model_module_version": "^0.20", "state": { "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletWidgetControlModel", "_view_count": null, "_view_module": "jupyter-leaflet", "_view_module_version": "^0.20", "_view_name": "LeafletWidgetControlView", "max_height": null, "max_width": null, "min_height": null, "min_width": null, "options": [ "position", "transparent_bg" ], "position": "topleft", "transparent_bg": true, "widget": "IPY_MODEL_a76f9fd31e834b36bc6adef14729233c" } }, "a578dec10236466084f061c838ec5c90": { "model_module": "jupyter-leaflet", "model_name": "LeafletZoomControlModel", "model_module_version": "^0.20", "state": { "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletZoomControlModel", "_view_count": null, "_view_module": "jupyter-leaflet", "_view_module_version": "^0.20", "_view_name": "LeafletZoomControlView", "options": [ "position", "zoom_in_text", "zoom_in_title", "zoom_out_text", "zoom_out_title" ], "position": "topleft", "zoom_in_text": "+", "zoom_in_title": "Zoom in", "zoom_out_text": "-", "zoom_out_title": "Zoom out" } }, "6236499794fb4e61a6c2aa7e52c63594": { "model_module": "jupyter-leaflet", "model_name": "LeafletFullScreenControlModel", "model_module_version": "^0.20", "state": { "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletFullScreenControlModel", "_view_count": null, "_view_module": "jupyter-leaflet", "_view_module_version": "^0.20", "_view_name": "LeafletFullScreenControlView", "options": [ "position" ], "position": "topleft" } }, "9619afab783143f09bd9911e099fb8f1": { "model_module": "jupyter-leaflet", "model_name": "LeafletDrawControlModel", "model_module_version": "^0.20", "state": { "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletDrawControlModel", "_view_count": null, "_view_module": "jupyter-leaflet", "_view_module_version": "^0.20", "_view_name": "LeafletDrawControlView", "circle": {}, "circlemarker": {}, "data": [], "edit": true, "marker": { "shapeOptions": { "color": "#3388ff" } }, "options": [ "position" ], "polygon": { "shapeOptions": {} }, "polyline": { "shapeOptions": {} }, "position": "topleft", "rectangle": { "shapeOptions": { "color": "#3388ff" } }, "remove": true } }, "7261a0e6740d49fb940223d2ccb5b0c3": { "model_module": "jupyter-leaflet", "model_name": "LeafletScaleControlModel", "model_module_version": "^0.20", "state": { "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletScaleControlModel", "_view_count": null, "_view_module": "jupyter-leaflet", "_view_module_version": "^0.20", "_view_name": "LeafletScaleControlView", "imperial": true, "max_width": 100, "metric": true, "options": [ "imperial", "max_width", "metric", "position", "update_when_idle" ], "position": "bottomleft", "update_when_idle": false } }, "41a2b6d3eec04598aa3ea0e566ce17e9": { "model_module": "jupyter-leaflet", "model_name": "LeafletMeasureControlModel", "model_module_version": "^0.20", "state": { "_custom_units": {}, "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletMeasureControlModel", "_view_count": null, "_view_module": "jupyter-leaflet", "_view_module_version": "^0.20", "_view_name": "LeafletMeasureControlView", "active_color": "orange", "capture_z_index": 10000, "completed_color": "#C8F2BE", "options": [ "active_color", "capture_z_index", "completed_color", "popup_options", "position", "primary_area_unit", "primary_length_unit", "secondary_area_unit", "secondary_length_unit" ], "popup_options": { "className": "leaflet-measure-resultpopup", "autoPanPadding": [ 10, 10 ] }, "position": "bottomleft", "primary_area_unit": "acres", "primary_length_unit": "kilometers", "secondary_area_unit": null, "secondary_length_unit": null } }, "771dae501e3b4753801d20c356873bbc": { "model_module": "jupyter-leaflet", "model_name": "LeafletAttributionControlModel", "model_module_version": "^0.20", "state": { "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletAttributionControlModel", "_view_count": null, "_view_module": "jupyter-leaflet", "_view_module_version": "^0.20", "_view_name": "LeafletAttributionControlView", "options": [ "position", "prefix" ], "position": "bottomright", "prefix": "ipyleaflet" } }, "287a73cba1cc4d4e90a67aa08a54e02d": { "model_module": "jupyter-leaflet", "model_name": "LeafletMapStyleModel", "model_module_version": "^0.20", "state": { "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletMapStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "cursor": "grab" } }, "983ad5f762864e6eb21d6093fed853b8": { "model_module": "jupyter-leaflet", "model_name": "LeafletMapStyleModel", "model_module_version": "^0.20", "state": { "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletMapStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "cursor": "move" } }, "d1f39369c8c649c680ad049035ceb0c9": { "model_module": "jupyter-leaflet", "model_name": "LeafletTileLayerModel", "model_module_version": "^0.20", "state": { "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletTileLayerModel", "_view_count": null, "_view_module": "jupyter-leaflet", "_view_module_version": "^0.20", "_view_name": "LeafletTileLayerView", "attribution": "© OpenStreetMap contributors", "base": true, "bottom": true, "bounds": null, "detect_retina": false, "loading": false, "max_native_zoom": null, "max_zoom": 30, "min_native_zoom": null, "min_zoom": 1, "name": "OpenStreetMap.Mapnik", "no_wrap": false, "opacity": 1, "options": [ "attribution", "bounds", "detect_retina", "max_native_zoom", "max_zoom", "min_native_zoom", "min_zoom", "no_wrap", "pm_ignore", "tile_size", "tms", "zoom_offset" ], "pane": "", "pm_ignore": true, "popup": null, "popup_max_height": null, "popup_max_width": 300, "popup_min_width": 50, "show_loading": false, "snap_ignore": true, "subitems": [], "tile_size": 256, "tms": false, "url": "https://tile.openstreetmap.org/{z}/{x}/{y}.png", "visible": true, "zoom_offset": 0 } }, "4b437b03db424ade922c594c90120b09": { "model_module": "jupyter-leaflet", "model_name": "LeafletTileLayerModel", "model_module_version": "^0.20", "state": { "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletTileLayerModel", "_view_count": null, "_view_module": "jupyter-leaflet", "_view_module_version": "^0.20", "_view_name": "LeafletTileLayerView", "attribution": "Google Earth Engine", "base": false, "bottom": true, "bounds": null, "detect_retina": false, "loading": false, "max_native_zoom": null, "max_zoom": 24, "min_native_zoom": null, "min_zoom": 0, "name": "AETI 2026-07", "no_wrap": false, "opacity": 1, "options": [ "attribution", "bounds", "detect_retina", "max_native_zoom", "max_zoom", "min_native_zoom", "min_zoom", "no_wrap", "pm_ignore", "tile_size", "tms", "zoom_offset" ], "pane": "", "pm_ignore": true, "popup": null, "popup_max_height": null, "popup_max_width": 300, "popup_min_width": 50, "show_loading": false, "snap_ignore": true, "subitems": [], "tile_size": 256, "tms": false, "url": "https://earthengine.googleapis.com/v1/projects/steel-sonar-428908-v8/maps/65d575132ae2c47a50a4417b636ae90a-a2600707b1be01bed59efa147dbf0ef9/tiles/{z}/{x}/{y}", "visible": true, "zoom_offset": 0 } }, "35e0a0e19afe4b51a4faaf74aa9fa786": { "model_module": "jupyter-leaflet", "model_name": "LeafletTileLayerModel", "model_module_version": "^0.20", "state": { "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletTileLayerModel", "_view_count": null, "_view_module": "jupyter-leaflet", "_view_module_version": "^0.20", "_view_name": "LeafletTileLayerView", "attribution": "Google Earth Engine", "base": false, "bottom": true, "bounds": null, "detect_retina": false, "loading": false, "max_native_zoom": null, "max_zoom": 24, "min_native_zoom": null, "min_zoom": 0, "name": "Study area", "no_wrap": false, "opacity": 0.4, "options": [ "attribution", "bounds", "detect_retina", "max_native_zoom", "max_zoom", "min_native_zoom", "min_zoom", "no_wrap", "pm_ignore", "tile_size", "tms", "zoom_offset" ], "pane": "", "pm_ignore": true, "popup": null, "popup_max_height": null, "popup_max_width": 300, "popup_min_width": 50, "show_loading": false, "snap_ignore": true, "subitems": [], "tile_size": 256, "tms": false, "url": "https://earthengine.googleapis.com/v1/projects/steel-sonar-428908-v8/maps/c5241cbe3eaca5efe768de9b57a36de2-1cfe047df2cdd0313b4b1abd317e6ca8/tiles/{z}/{x}/{y}", "visible": true, "zoom_offset": 0 } }, "88abdc50e1c94ee5a9e5cec495755a42": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": "600px", "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2631860b5af24f6293899f4f718a2beb": { "model_module": "jupyter-leaflet", "model_name": "LeafletMapStyleModel", "model_module_version": "^0.20", "state": { "_model_module": "jupyter-leaflet", "_model_module_version": "^0.20", "_model_name": "LeafletMapStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "cursor": "grab" } }, "40822bcdecd042d8a0084dc988037141": { "model_module": "@jupyter-widgets/controls", "model_name": "GridBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "GridBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "GridBoxView", "box_style": "", "children": [ "IPY_MODEL_dbd8d14f39a14ae2b692ab542f045463", "IPY_MODEL_e3051051145e448f9fecd1ca1700d90e" ], "layout": "IPY_MODEL_f187d58f42cb4bc89e663b111b8ff2a4" } }, "a76f9fd31e834b36bc6adef14729233c": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.map_widgets.SearchBar", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e7, o5) {\n if (this._$cssResult$ = true, o5 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e7;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e7 = void 0 !== s2 && 1 === s2.length;\n e7 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e7 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e7) => {\n const o5 = 1 === t3.length ? t3[0] : e7.reduce(((e8, s2, o6) => e8 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o6 + 1]), t3[0]);\n return new n(o5, t3, s);\n};\nvar S = (s2, o5) => {\n if (e) s2.adoptedStyleSheets = o5.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e7 of o5) {\n const o6 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o6.setAttribute(\"nonce\", n5), o6.textContent = e7.cssText, s2.appendChild(o6);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e7 = \"\";\n for (const s2 of t4.cssRules) e7 += s2.cssText;\n return r(e7);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r5 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r5 && e2(this.prototype, t3, r5);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e7, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e7?.call(this);\n }, set(s3) {\n const r5 = e7?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r5, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e7 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e7) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e7 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e7 && true === i4.reflect) {\n const r5 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r5 ? this.removeAttribute(e7) : this.setAttribute(e7, r5), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e7 = i4._$Eh.get(t3);\n if (void 0 !== e7 && this._$Em !== e7) {\n const t4 = i4.getPropertyOptions(e7), r5 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e7, this[e7] = r5.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e7 = [];\n let h4, o5 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r5, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r5 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o5 += n5 === T ? s3 + _ : c4 >= 0 ? (e7.push(r5), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o5 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e7];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e7;\n this.parts = [];\n let h4 = 0, o5 = 0;\n const n5 = t3.length - 1, r5 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e7 = I.nextNode()) && r5.length < n5; ) {\n if (1 === e7.nodeType) {\n if (e7.hasAttributes()) for (const t4 of e7.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o5++], s3 = e7.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r5.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e7.removeAttribute(t4);\n } else t4.startsWith(v) && (r5.push({ type: 6, index: h4 }), e7.removeAttribute(t4));\n if (M.test(e7.tagName)) {\n const t4 = e7.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e7.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e7.append(t4[s3], lt()), I.nextNode(), r5.push({ type: 2, index: ++h4 });\n e7.append(t4[i5], lt());\n }\n }\n } else if (8 === e7.nodeType) if (e7.data === m) r5.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e7.data.indexOf(v, t4 + 1)); ) r5.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e7) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e7 ? s2.o?.[e7] : s2.l;\n const o5 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o5 && (h4?._$AO?.(false), void 0 === o5 ? h4 = void 0 : (h4 = new o5(t3), h4._$AT(t3, s2, e7)), void 0 !== e7 ? (s2.o ??= [])[e7] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e7)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e7 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e7;\n let h4 = I.nextNode(), o5 = 0, n5 = 0, r5 = s2[0];\n for (; void 0 !== r5; ) {\n if (o5 === r5.index) {\n let i5;\n 2 === r5.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r5.type ? i5 = new r5.ctor(h4, r5.name, r5.strings, this, t3) : 6 === r5.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r5 = s2[++n5];\n }\n o5 !== r5?.index && (h4 = I.nextNode(), o5++);\n }\n return I.currentNode = w, e7;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e7) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e7, this.v = e7?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e7 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e7) this._$AH.p(i4);\n else {\n const t4 = new F(e7, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e7 = 0;\n for (const h4 of t3) e7 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e7], s2._$AI(h4), e7++;\n e7 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e7), i4.length = e7);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e7, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e7, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e7) {\n const h4 = this.strings;\n let o5 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o5 = !st(t3) || t3 !== this._$AH && t3 !== R, o5 && (this._$AH = t3);\n else {\n const e8 = t3;\n let n5, r5;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r5 = z(this, e8[s2 + n5], i4, n5), r5 === R && (r5 = this._$AH[n5]), o5 ||= !st(r5) || r5 !== this._$AH[n5], r5 === D ? t3 = D : t3 !== D && (t3 += (r5 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r5;\n }\n o5 && !e7 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e7, h4) {\n super(t3, i4, s2, e7, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e7 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e7);\n e7 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e7 = s2?.renderBefore ?? i4;\n let h4 = e7._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e7._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e7 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e7, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e7, r5) => {\n const { kind: n5, metadata: i4 } = r5;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r5.name, t3), \"accessor\" === n5) {\n const { name: o5 } = r5;\n return { set(r6) {\n const n6 = e7.get.call(this);\n e7.set.call(this, r6), this.requestUpdate(o5, n6, t3);\n }, init(e8) {\n return void 0 !== e8 && this.P(o5, void 0, t3), e8;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o5 } = r5;\n return function(r6) {\n const n6 = this[o5];\n e7.call(this, r6), this.requestUpdate(o5, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e7, o5) => \"object\" == typeof o5 ? r3(t3, e7, o5) : ((t4, e8, o6) => {\n const r5 = e8.hasOwnProperty(o6);\n return e8.constructor.createProperty(o6, r5 ? { ...t4, wrapped: true } : t4), r5 ? Object.getOwnPropertyDescriptor(e8, o6) : void 0;\n })(t3, e7, o5);\n}\n\n// node_modules/@lit/reactive-element/decorators/base.js\nvar e3 = (e7, t3, c4) => (c4.configurable = true, c4.enumerable = true, Reflect.decorate && \"object\" != typeof t3 && Object.defineProperty(e7, t3, c4), c4);\n\n// node_modules/@lit/reactive-element/decorators/query.js\nfunction e4(e7, r5) {\n return (n5, s2, i4) => {\n const o5 = (t3) => t3.renderRoot?.querySelector(e7) ?? null;\n if (r5) {\n const { get: e8, set: r6 } = \"object\" == typeof s2 ? n5 : i4 ?? /* @__PURE__ */ (() => {\n const t3 = /* @__PURE__ */ Symbol();\n return { get() {\n return this[t3];\n }, set(e9) {\n this[t3] = e9;\n } };\n })();\n return e3(n5, s2, { get() {\n let t3 = e8.call(this);\n return void 0 === t3 && (t3 = o5(this), (null !== t3 || this.hasUpdated) && r6.call(this, t3)), t3;\n } });\n }\n return e3(n5, s2, { get() {\n return o5(this);\n } });\n };\n}\n\n// node_modules/@lit/reactive-element/decorators/query-all.js\nvar e5;\nfunction r4(r5) {\n return (n5, o5) => e3(n5, o5, { get() {\n return (this.renderRoot ?? (e5 ??= document.createDocumentFragment())).querySelectorAll(r5);\n } });\n}\n\n// node_modules/@lit/reactive-element/decorators/query-assigned-elements.js\nfunction o4(o5) {\n return (e7, n5) => {\n const { slot: r5, selector: s2 } = o5 ?? {}, c4 = \"slot\" + (r5 ? `[name=${r5}]` : \":not([name])\");\n return e3(e7, n5, { get() {\n const t3 = this.renderRoot?.querySelector(c4), e8 = t3?.assignedElements(o5) ?? [];\n return void 0 === s2 ? e8 : e8.filter(((t4) => t4.matches(s2)));\n } });\n };\n}\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e6 = (t3) => (...e7) => ({ _$litDirective$: t3, values: e7 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e7, i4) {\n this.t = t3, this._$AM = e7, this.i = i4;\n }\n _$AS(t3, e7) {\n return this.update(t3, e7);\n }\n update(t3, e7) {\n return this.render(...e7);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e6(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r5 = !!s2[t4];\n r5 === this.st.has(t4) || this.nt?.has(t4) || (r5 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// node_modules/lit-html/directives/style-map.js\nvar ee = \"important\";\nvar ie = \" !\" + ee;\nvar se = e6(class extends i3 {\n constructor(e7) {\n if (super(e7), e7.type !== t2.ATTRIBUTE || \"style\" !== e7.name || e7.strings?.length > 2) throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return Object.keys(t3).reduce(((e7, r5) => {\n const s2 = t3[r5];\n return null == s2 ? e7 : e7 + `${r5 = r5.includes(\"-\") ? r5 : r5.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, \"-$&\").toLowerCase()}:${s2};`;\n }), \"\");\n }\n update(t3, [e7]) {\n const { style: r5 } = t3.element;\n if (void 0 === this.ft) return this.ft = new Set(Object.keys(e7)), this.render(e7);\n for (const t4 of this.ft) null == e7[t4] && (this.ft.delete(t4), t4.includes(\"-\") ? r5.removeProperty(t4) : r5[t4] = null);\n for (const t4 in e7) {\n const s2 = e7[t4];\n if (null != s2) {\n this.ft.add(t4);\n const e8 = \"string\" == typeof s2 && s2.endsWith(ie);\n t4.includes(\"-\") || e8 ? r5.setProperty(t4, e8 ? s2.slice(0, -11) : s2, e8 ? ee : \"\") : r5[t4] = s2;\n }\n }\n return R;\n }\n});\n\n// js/tab_panel.ts\nfunction convertToId(name) {\n return (name || \"\").trim().replace(\" \", \"-\").toLowerCase();\n}\nvar TabPanel = class extends h3 {\n constructor() {\n super(...arguments);\n this.tabs = [];\n this.index = 0;\n this.mode = 1 /* HIDE_ON_SECOND_CLICK */;\n this.alignment = \"left\" /* LEFT */;\n }\n static get componentName() {\n return `tab-panel`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n ::slotted(*) {\n display: none;\n }\n\n ::slotted(.show-tab) {\n display: block;\n }\n\n .container {\n padding: 0;\n width: 100%;\n }\n\n .tab-container {\n align-items: center;\n display: flex;\n flex-direction: row;\n }\n\n .tab-container.center {\n justify-content: center;\n }\n\n .tab-container.left {\n justify-content: flex-start;\n }\n\n .tab-container.right {\n justify-content: flex-end;\n }\n\n .tab-container button {\n border-radius: 5px;\n height: 28px;\n margin: 2px 0 2px 8px;\n user-select: none;\n }\n\n .tab-container button.icon {\n font-size: 16px;\n width: 28px;\n }\n\n .tab-container button.name {\n padding: 0 8px;\n }\n `\n ];\n }\n render() {\n return ke`\n
\n \n ${this.renderTabs()}\n
\n \n \n `;\n }\n update(changedProperties) {\n super.update(changedProperties);\n if (changedProperties.has(\"index\") && changedProperties.get(\"index\") != null) {\n this.updateSlotChildren();\n }\n }\n updateSlotChildren() {\n if (!this.tabContentElements) {\n return;\n }\n this.tabContentElements.forEach((element, i4) => {\n element.classList.remove(\"show-tab\");\n const id = convertToId(this.tabs[i4].name);\n element.setAttribute(\"id\", `tabpanel-${id}-${i4}`);\n element.setAttribute(\"role\", \"tabpanel\");\n element.setAttribute(\"aria-labelledby\", `tab-${id}-${i4}`);\n });\n this.tabContentElements[this.index]?.classList.add(\"show-tab\");\n }\n renderTabs() {\n return this.tabs.map((tab, i4) => {\n const id = convertToId(this.tabs[i4].name);\n return ke` {\n this.onTabClick(i4);\n }}>\n ${tab.icon ? ke`${tab.icon}` : D}\n ${tab.name}\n `;\n });\n }\n onTabClick(index) {\n switch (this.mode) {\n case 1 /* HIDE_ON_SECOND_CLICK */:\n this.index = this.index === index ? -1 : index;\n break;\n case 0 /* ALWAYS_SHOW */:\n default:\n this.index = index;\n }\n this.dispatchEvent(new CustomEvent(\"tab-changed\", {\n detail: index\n }));\n }\n};\n__decorateClass([\n n4({ type: Array })\n], TabPanel.prototype, \"tabs\", 2);\n__decorateClass([\n n4({ type: Number })\n], TabPanel.prototype, \"index\", 2);\n__decorateClass([\n n4({ type: Number })\n], TabPanel.prototype, \"mode\", 2);\n__decorateClass([\n n4({ type: String })\n], TabPanel.prototype, \"alignment\", 2);\n__decorateClass([\n r4(\".tab\")\n], TabPanel.prototype, \"tabElements\", 2);\n__decorateClass([\n o4()\n], TabPanel.prototype, \"tabContentElements\", 2);\nif (!customElements.get(TabPanel.componentName)) {\n customElements.define(TabPanel.componentName, TabPanel);\n}\n\n// node_modules/lit-html/directives/unsafe-html.js\nvar le = class extends i3 {\n constructor(i4) {\n if (super(i4), this.it = D, i4.type !== t2.CHILD) throw Error(this.constructor.directiveName + \"() can only be used in child bindings\");\n }\n render(t3) {\n if (t3 === D || null == t3) return this._t = void 0, this.it = t3;\n if (t3 === R) return t3;\n if (\"string\" != typeof t3) throw Error(this.constructor.directiveName + \"() called with a non-string value\");\n if (t3 === this.it) return this._t;\n this.it = t3;\n const i4 = [t3];\n return i4.raw = i4, this._t = { _$litType$: this.constructor.resultType, strings: i4, values: [] };\n }\n};\nle.directiveName = \"unsafeHTML\", le.resultType = 1;\nvar ae = e6(le);\n\n// js/container.ts\nvar Container = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.icon = \"\";\n this.title = \"\";\n this.collapsed = false;\n this.hideCloseButton = false;\n this.compactMode = false;\n this.noHeader = false;\n this.reverseHeader = false;\n }\n static get componentName() {\n return `widget-container`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n .container {\n background: var(--jp-layout-color1);\n border-radius: 4.5px;\n box-shadow: 4px 5px 8px 0px #9e9e9e;\n }\n\n div {\n background-color: var(--colab-primary-surface-color, --jp-layout-color1, white);\n }\n\n .header {\n display: flex;\n gap: 4px;\n padding: 4px;\n }\n\n .reversed {\n flex-direction: row-reverse;\n }\n\n .icon {\n align-items: center;\n display: flex;\n font-size: 20px;\n height: 28px;\n justify-content: center;\n padding: 0 4px;\n }\n\n .widget-container {\n padding: 8px 12px 12px 12px;\n }\n\n .hidden {\n display: none;\n }\n\n .header-button {\n font-size: 16px;\n height: 28px;\n width: 28px;\n }\n\n .compact-header-button {\n background: transparent;\n font-size: 16px;\n height: 28px;\n width: 28px;\n }\n\n .header-text {\n align-content: center;\n flex-grow: 1;\n padding: 0 12px 0 0;\n }\n\n .left-padding {\n padding-left: 8px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"icon\", \"icon\"],\n [\"collapsed\", \"collapsed\"],\n [\"title\", \"title\"],\n [\"hide_close_button\", \"hideCloseButton\"]\n ]);\n }\n render() {\n return ke`\n
\n ${this.noHeader ? D : this.renderHeader()}\n
\n \n
\n
\n `;\n }\n renderHeader() {\n return this.compactMode ? this.renderCompactHeader() : ke`\n
\n ${this.renderIcon()}\n ${this.title ? this.renderTitle() : D}\n ${this.renderCollapseButton()}\n ${this.renderCloseButton()}\n
`;\n }\n renderCompactHeader() {\n return ke`
\n ${this.renderCollapseButton()}\n ${this.title && !this.collapsed ? this.renderTitle() : D}\n ${this.renderCloseButton()}\n
`;\n }\n renderCloseButton() {\n if (this.hideCloseButton) {\n return D;\n }\n return ke`\n \n \n \n `;\n }\n renderTitle() {\n return ke`${this.title}`;\n }\n onCloseButtonClicked() {\n this.dispatchEvent(new CustomEvent(\"close-clicked\", {}));\n }\n onCollapseToggled() {\n this.collapsed = !this.collapsed;\n this.dispatchEvent(new CustomEvent(\"collapse-clicked\", {}));\n }\n renderIcon() {\n return ke`\n ${this.icon}\n `;\n }\n renderCollapseButton() {\n let icon;\n if (this.compactMode) {\n icon = this.renderIcon();\n } else if (this.collapsed) {\n icon = ke``;\n } else {\n icon = ke``;\n }\n return ke`\n ${icon}\n `;\n }\n};\n__decorateClass([\n n4({ type: String })\n], Container.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], Container.prototype, \"title\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"collapsed\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"hideCloseButton\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"compactMode\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"noHeader\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"reverseHeader\", 2);\nif (!customElements.get(Container.componentName)) {\n customElements.define(Container.componentName, Container);\n}\n\n// js/search_bar.ts\nvar SearchBar = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.collapsed = true;\n this.tab_index = 0;\n this.locationModel = JSON.stringify({\n search: \"\",\n results: [],\n selected: \"\",\n additional_html: \"\"\n });\n this.datasetModel = JSON.stringify({\n search: \"\",\n results: [],\n selected: \"\",\n additional_html: \"\"\n });\n }\n static get componentName() {\n return `search-bar`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n .row {\n display: flex;\n gap: 6px;\n }\n\n .input-container {\n max-width: 320px;\n }\n\n .input-container > p {\n margin: 8px 3px;\n }\n\n input.search {\n margin: 2px 2px 8px 2px;\n width: calc(100% - 4px);\n }\n\n ul.results {\n list-style-type: none;\n margin: 0;\n margin-bottom: 4px;\n padding: 8px 0;\n }\n\n label.result {\n align-items: center;\n display: flex;\n margin-bottom: 4px;\n }\n\n .import-button, .reset-button {\n margin: 0 2px 2px 2px;\n padding: 0 8px;\n white-space: nowrap;\n }\n\n .dataset-select {\n margin-bottom: 2px;\n margin-right: 2px;\n }\n\n .additional-html-container {\n max-height: 300px;\n overflow: auto;\n padding: 8px 0;\n }\n\n .additional-html-container pre {\n white-space: break-spaces;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"collapsed\", \"collapsed\"],\n [\"tab_index\", \"tab_index\"],\n [\"location_model\", \"locationModel\"],\n [\"dataset_model\", \"datasetModel\"]\n ]);\n }\n render() {\n return ke`\n \n {\n this.tab_index = e7.detail;\n }}\n .mode=\"${0 /* ALWAYS_SHOW */}\">\n
\n ${this.renderLocationSearch()}\n
\n
\n ${this.renderDatasetSearch()}\n
\n \n `;\n }\n renderLocationSearch() {\n const locationModel = JSON.parse(this.locationModel);\n const helpText = ke`

\n Find your point of interest (by place name,\n address, or coordinates, e.g. 40,-100)\n

`;\n const searchInput = ke` {\n if (e7.key === \"Enter\") {\n e7.preventDefault();\n const locationModel2 = JSON.parse(this.locationModel);\n locationModel2.search = this.locationSearch.value || \"\";\n this.locationModel = JSON.stringify(locationModel2);\n }\n }}\" />`;\n const renderedInputs = [helpText, searchInput];\n if (locationModel.results.length) {\n const results = ke`\n ${locationModel.results.map((result) => ke`\n
  • \n \n
  • `)}\n `;\n renderedInputs.push(ke`
      \n ${results}\n
    `);\n }\n if (locationModel.additional_html) {\n renderedInputs.push(ke`
    \n ${ae(locationModel.additional_html)}\n
    `);\n }\n if (locationModel.search || locationModel.results.length || locationModel.selected) {\n renderedInputs.push(ke` {\n this.locationModel = JSON.stringify({\n search: \"\",\n results: [],\n selected: \"\",\n additional_html: \"\"\n });\n if (this.locationSearch) {\n this.locationSearch.value = \"\";\n }\n }}\">Reset`);\n }\n return renderedInputs;\n }\n renderDatasetSearch() {\n const datasetModel = JSON.parse(this.datasetModel);\n const helpText = ke`

    \n Find a dataset by GEE data catalog name or keywords, e.g. elevation\n

    `;\n const searchInput = ke` {\n if (e7.key === \"Enter\") {\n e7.preventDefault();\n const datasetModel2 = JSON.parse(this.datasetModel);\n datasetModel2.search = this.datasetSearch?.value || \"\";\n this.datasetModel = JSON.stringify(datasetModel2);\n }\n }}\" />`;\n const renderedInputs = [helpText, searchInput];\n const importButton = ke` {\n this.model?.send({ type: \"click\", id: \"import\" });\n }}\">\n Reveal Code\n `;\n const results = ke`\n {\n const input = e7.target;\n const datasetModel2 = JSON.parse(this.datasetModel);\n datasetModel2.selected = input.value || \"\";\n this.datasetModel = JSON.stringify(datasetModel2);\n }}\">\n ${datasetModel.results.map((result) => ke`\n \n `)}\n \n `;\n renderedInputs.push(\n ke`
    \n ${importButton}\n ${results}\n
    `\n );\n if (datasetModel.additional_html) {\n renderedInputs.push(ke`
    \n ${ae(datasetModel.additional_html)}\n
    `);\n }\n return renderedInputs;\n }\n};\n__decorateClass([\n n4()\n], SearchBar.prototype, \"collapsed\", 2);\n__decorateClass([\n n4()\n], SearchBar.prototype, \"tab_index\", 2);\n__decorateClass([\n n4()\n], SearchBar.prototype, \"locationModel\", 2);\n__decorateClass([\n n4()\n], SearchBar.prototype, \"datasetModel\", 2);\n__decorateClass([\n e4(\".location-search\")\n], SearchBar.prototype, \"locationSearch\", 2);\n__decorateClass([\n r4(\".location-results input\")\n], SearchBar.prototype, \"locationResults\", 2);\n__decorateClass([\n e4(\".dataset-search\")\n], SearchBar.prototype, \"datasetSearch\", 2);\nif (!customElements.get(SearchBar.componentName)) {\n customElements.define(SearchBar.componentName, SearchBar);\n}\nasync function render({ model, el }) {\n loadFonts();\n const row = document.createElement(SearchBar.componentName);\n row.model = model;\n el.appendChild(row);\n}\nvar search_bar_default = { render };\nexport {\n SearchBar,\n search_bar_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\nlit-html/directives/unsafe-html.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\nlit-html/directives/style-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "collapsed": true, "dataset_model": "{\"search\": \"\", \"results\": [], \"selected\": \"\", \"additional_html\": \"\"}", "layout": "IPY_MODEL_6649bc3169674a42abd007c305534047", "location_model": "{\"search\": \"\", \"results\": [], \"selected\": \"\", \"additional_html\": \"\"}", "tab_index": 0 } }, "dbd8d14f39a14ae2b692ab542f045463": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.map_widgets.LayerManager", "_dom_classes": [], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nasync function unpackModels(modelIds, manager) {\n return Promise.all(\n modelIds.map((id) => manager.get_model(id.slice(\"IPY_MODEL_\".length)))\n );\n}\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nasync function updateChildren(container, model, property = \"children\") {\n let children = model.get(property);\n if (!Array.isArray(children)) {\n children = [children];\n }\n const child_models = await unpackModels(children, model.widget_manager);\n const child_views = await Promise.all(\n child_models.map((model2) => model2.widget_manager.create_view(model2))\n );\n container.innerHTML = ``;\n for (const child_view of child_views) {\n container.appendChild(child_view.el);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/container.ts\nvar Container = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.icon = \"\";\n this.title = \"\";\n this.collapsed = false;\n this.hideCloseButton = false;\n this.compactMode = false;\n this.noHeader = false;\n this.reverseHeader = false;\n }\n static get componentName() {\n return `widget-container`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n .container {\n background: var(--jp-layout-color1);\n border-radius: 4.5px;\n box-shadow: 4px 5px 8px 0px #9e9e9e;\n }\n\n div {\n background-color: var(--colab-primary-surface-color, --jp-layout-color1, white);\n }\n\n .header {\n display: flex;\n gap: 4px;\n padding: 4px;\n }\n\n .reversed {\n flex-direction: row-reverse;\n }\n\n .icon {\n align-items: center;\n display: flex;\n font-size: 20px;\n height: 28px;\n justify-content: center;\n padding: 0 4px;\n }\n\n .widget-container {\n padding: 8px 12px 12px 12px;\n }\n\n .hidden {\n display: none;\n }\n\n .header-button {\n font-size: 16px;\n height: 28px;\n width: 28px;\n }\n\n .compact-header-button {\n background: transparent;\n font-size: 16px;\n height: 28px;\n width: 28px;\n }\n\n .header-text {\n align-content: center;\n flex-grow: 1;\n padding: 0 12px 0 0;\n }\n\n .left-padding {\n padding-left: 8px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"icon\", \"icon\"],\n [\"collapsed\", \"collapsed\"],\n [\"title\", \"title\"],\n [\"hide_close_button\", \"hideCloseButton\"]\n ]);\n }\n render() {\n return ke`\n
    \n ${this.noHeader ? D : this.renderHeader()}\n
    \n \n
    \n
    \n `;\n }\n renderHeader() {\n return this.compactMode ? this.renderCompactHeader() : ke`\n
    \n ${this.renderIcon()}\n ${this.title ? this.renderTitle() : D}\n ${this.renderCollapseButton()}\n ${this.renderCloseButton()}\n
    `;\n }\n renderCompactHeader() {\n return ke`
    \n ${this.renderCollapseButton()}\n ${this.title && !this.collapsed ? this.renderTitle() : D}\n ${this.renderCloseButton()}\n
    `;\n }\n renderCloseButton() {\n if (this.hideCloseButton) {\n return D;\n }\n return ke`\n \n \n \n `;\n }\n renderTitle() {\n return ke`${this.title}`;\n }\n onCloseButtonClicked() {\n this.dispatchEvent(new CustomEvent(\"close-clicked\", {}));\n }\n onCollapseToggled() {\n this.collapsed = !this.collapsed;\n this.dispatchEvent(new CustomEvent(\"collapse-clicked\", {}));\n }\n renderIcon() {\n return ke`\n ${this.icon}\n `;\n }\n renderCollapseButton() {\n let icon;\n if (this.compactMode) {\n icon = this.renderIcon();\n } else if (this.collapsed) {\n icon = ke``;\n } else {\n icon = ke``;\n }\n return ke`\n ${icon}\n `;\n }\n};\n__decorateClass([\n n4({ type: String })\n], Container.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], Container.prototype, \"title\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"collapsed\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"hideCloseButton\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"compactMode\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"noHeader\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"reverseHeader\", 2);\nif (!customElements.get(Container.componentName)) {\n customElements.define(Container.componentName, Container);\n}\n\n// js/layer_manager.ts\nvar LayerManager = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.visible = false;\n this.tabIndex = 0;\n this.collapsed = true;\n }\n static get componentName() {\n return `layer-manager`;\n }\n static {\n this.styles = [\n legacyStyles,\n i`\n .row {\n align-items: center;\n display: flex;\n gap: 4px;\n height: 28px;\n }\n\n .visibility-checkbox {\n margin: 2px;\n }\n\n .layer-manager-rows {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"children\", null],\n [\"visible\", \"visible\"]\n ]);\n }\n render() {\n return ke`\n \n
    \n
    \n
    \n \n \n All layers on/off\n
    \n \n
    \n
    \n \n `;\n }\n onLayerVisibilityChanged(_event) {\n this.visible = !this.visible;\n }\n};\n__decorateClass([\n n4()\n], LayerManager.prototype, \"visible\", 2);\n__decorateClass([\n n4()\n], LayerManager.prototype, \"tabIndex\", 2);\n__decorateClass([\n n4()\n], LayerManager.prototype, \"collapsed\", 2);\nif (!customElements.get(LayerManager.componentName)) {\n customElements.define(LayerManager.componentName, LayerManager);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(LayerManager.componentName);\n manager.model = model;\n el.appendChild(manager);\n updateChildren(manager, model);\n model.on(\"change:children\", () => {\n updateChildren(manager, model);\n });\n}\nvar layer_manager_default = { render };\nexport {\n LayerManager,\n layer_manager_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "children": [ "IPY_MODEL_15cc1057b5fc4b099bfc7fa51b528c34", "IPY_MODEL_ad71c38e9dfa482d9e27303656b859ca", "IPY_MODEL_659d3999ffe74d12a158814c9ce35327" ], "layout": "IPY_MODEL_326eb6d27c7c4e0387c2db417f493f48", "visible": true } }, "e3051051145e448f9fecd1ca1700d90e": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.Toolbar", "_dom_classes": [], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e6, o5) {\n if (this._$cssResult$ = true, o5 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e6;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e6 = void 0 !== s2 && 1 === s2.length;\n e6 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e6 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e6) => {\n const o5 = 1 === t3.length ? t3[0] : e6.reduce(((e7, s2, o6) => e7 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o6 + 1]), t3[0]);\n return new n(o5, t3, s);\n};\nvar S = (s2, o5) => {\n if (e) s2.adoptedStyleSheets = o5.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e6 of o5) {\n const o6 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o6.setAttribute(\"nonce\", n5), o6.textContent = e6.cssText, s2.appendChild(o6);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e6 = \"\";\n for (const s2 of t4.cssRules) e6 += s2.cssText;\n return r(e6);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r5 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r5 && e2(this.prototype, t3, r5);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e6, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e6?.call(this);\n }, set(s3) {\n const r5 = e6?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r5, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e6 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e6) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e6 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e6 && true === i4.reflect) {\n const r5 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r5 ? this.removeAttribute(e6) : this.setAttribute(e6, r5), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e6 = i4._$Eh.get(t3);\n if (void 0 !== e6 && this._$Em !== e6) {\n const t4 = i4.getPropertyOptions(e6), r5 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e6, this[e6] = r5.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e6 = [];\n let h4, o5 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r5, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r5 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o5 += n5 === T ? s3 + _ : c4 >= 0 ? (e6.push(r5), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o5 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e6];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e6;\n this.parts = [];\n let h4 = 0, o5 = 0;\n const n5 = t3.length - 1, r5 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e6 = I.nextNode()) && r5.length < n5; ) {\n if (1 === e6.nodeType) {\n if (e6.hasAttributes()) for (const t4 of e6.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o5++], s3 = e6.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r5.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e6.removeAttribute(t4);\n } else t4.startsWith(v) && (r5.push({ type: 6, index: h4 }), e6.removeAttribute(t4));\n if (M.test(e6.tagName)) {\n const t4 = e6.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e6.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e6.append(t4[s3], lt()), I.nextNode(), r5.push({ type: 2, index: ++h4 });\n e6.append(t4[i5], lt());\n }\n }\n } else if (8 === e6.nodeType) if (e6.data === m) r5.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e6.data.indexOf(v, t4 + 1)); ) r5.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e6) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e6 ? s2.o?.[e6] : s2.l;\n const o5 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o5 && (h4?._$AO?.(false), void 0 === o5 ? h4 = void 0 : (h4 = new o5(t3), h4._$AT(t3, s2, e6)), void 0 !== e6 ? (s2.o ??= [])[e6] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e6)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e6 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e6;\n let h4 = I.nextNode(), o5 = 0, n5 = 0, r5 = s2[0];\n for (; void 0 !== r5; ) {\n if (o5 === r5.index) {\n let i5;\n 2 === r5.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r5.type ? i5 = new r5.ctor(h4, r5.name, r5.strings, this, t3) : 6 === r5.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r5 = s2[++n5];\n }\n o5 !== r5?.index && (h4 = I.nextNode(), o5++);\n }\n return I.currentNode = w, e6;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e6) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e6, this.v = e6?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e6 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e6) this._$AH.p(i4);\n else {\n const t4 = new F(e6, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e6 = 0;\n for (const h4 of t3) e6 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e6], s2._$AI(h4), e6++;\n e6 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e6), i4.length = e6);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e6, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e6, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e6) {\n const h4 = this.strings;\n let o5 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o5 = !st(t3) || t3 !== this._$AH && t3 !== R, o5 && (this._$AH = t3);\n else {\n const e7 = t3;\n let n5, r5;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r5 = z(this, e7[s2 + n5], i4, n5), r5 === R && (r5 = this._$AH[n5]), o5 ||= !st(r5) || r5 !== this._$AH[n5], r5 === D ? t3 = D : t3 !== D && (t3 += (r5 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r5;\n }\n o5 && !e6 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e6, h4) {\n super(t3, i4, s2, e6, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e6 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e6);\n e6 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e6 = s2?.renderBefore ?? i4;\n let h4 = e6._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e6._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e6 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e6, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e6, r5) => {\n const { kind: n5, metadata: i4 } = r5;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r5.name, t3), \"accessor\" === n5) {\n const { name: o5 } = r5;\n return { set(r6) {\n const n6 = e6.get.call(this);\n e6.set.call(this, r6), this.requestUpdate(o5, n6, t3);\n }, init(e7) {\n return void 0 !== e7 && this.P(o5, void 0, t3), e7;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o5 } = r5;\n return function(r6) {\n const n6 = this[o5];\n e6.call(this, r6), this.requestUpdate(o5, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e6, o5) => \"object\" == typeof o5 ? r3(t3, e6, o5) : ((t4, e7, o6) => {\n const r5 = e7.hasOwnProperty(o6);\n return e7.constructor.createProperty(o6, r5 ? { ...t4, wrapped: true } : t4), r5 ? Object.getOwnPropertyDescriptor(e7, o6) : void 0;\n })(t3, e6, o5);\n}\n\n// node_modules/@lit/reactive-element/decorators/base.js\nvar e3 = (e6, t3, c4) => (c4.configurable = true, c4.enumerable = true, Reflect.decorate && \"object\" != typeof t3 && Object.defineProperty(e6, t3, c4), c4);\n\n// node_modules/@lit/reactive-element/decorators/query-all.js\nvar e4;\nfunction r4(r5) {\n return (n5, o5) => e3(n5, o5, { get() {\n return (this.renderRoot ?? (e4 ??= document.createDocumentFragment())).querySelectorAll(r5);\n } });\n}\n\n// node_modules/@lit/reactive-element/decorators/query-assigned-elements.js\nfunction o4(o5) {\n return (e6, n5) => {\n const { slot: r5, selector: s2 } = o5 ?? {}, c4 = \"slot\" + (r5 ? `[name=${r5}]` : \":not([name])\");\n return e3(e6, n5, { get() {\n const t3 = this.renderRoot?.querySelector(c4), e7 = t3?.assignedElements(o5) ?? [];\n return void 0 === s2 ? e7 : e7.filter(((t4) => t4.matches(s2)));\n } });\n };\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e5 = (t3) => (...e6) => ({ _$litDirective$: t3, values: e6 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e6, i4) {\n this.t = t3, this._$AM = e6, this.i = i4;\n }\n _$AS(t3, e6) {\n return this.update(t3, e6);\n }\n update(t3, e6) {\n return this.render(...e6);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e5(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r5 = !!s2[t4];\n r5 === this.st.has(t4) || this.nt?.has(t4) || (r5 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nasync function unpackModels(modelIds, manager) {\n return Promise.all(\n modelIds.map((id) => manager.get_model(id.slice(\"IPY_MODEL_\".length)))\n );\n}\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nasync function updateChildren(container, model, property = \"children\") {\n let children = model.get(property);\n if (!Array.isArray(children)) {\n children = [children];\n }\n const child_models = await unpackModels(children, model.widget_manager);\n const child_views = await Promise.all(\n child_models.map((model2) => model2.widget_manager.create_view(model2))\n );\n container.innerHTML = ``;\n for (const child_view of child_views) {\n container.appendChild(child_view.el);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/container.ts\nvar Container = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.icon = \"\";\n this.title = \"\";\n this.collapsed = false;\n this.hideCloseButton = false;\n this.compactMode = false;\n this.noHeader = false;\n this.reverseHeader = false;\n }\n static get componentName() {\n return `widget-container`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n .container {\n background: var(--jp-layout-color1);\n border-radius: 4.5px;\n box-shadow: 4px 5px 8px 0px #9e9e9e;\n }\n\n div {\n background-color: var(--colab-primary-surface-color, --jp-layout-color1, white);\n }\n\n .header {\n display: flex;\n gap: 4px;\n padding: 4px;\n }\n\n .reversed {\n flex-direction: row-reverse;\n }\n\n .icon {\n align-items: center;\n display: flex;\n font-size: 20px;\n height: 28px;\n justify-content: center;\n padding: 0 4px;\n }\n\n .widget-container {\n padding: 8px 12px 12px 12px;\n }\n\n .hidden {\n display: none;\n }\n\n .header-button {\n font-size: 16px;\n height: 28px;\n width: 28px;\n }\n\n .compact-header-button {\n background: transparent;\n font-size: 16px;\n height: 28px;\n width: 28px;\n }\n\n .header-text {\n align-content: center;\n flex-grow: 1;\n padding: 0 12px 0 0;\n }\n\n .left-padding {\n padding-left: 8px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"icon\", \"icon\"],\n [\"collapsed\", \"collapsed\"],\n [\"title\", \"title\"],\n [\"hide_close_button\", \"hideCloseButton\"]\n ]);\n }\n render() {\n return ke`\n
    \n ${this.noHeader ? D : this.renderHeader()}\n
    \n \n
    \n
    \n `;\n }\n renderHeader() {\n return this.compactMode ? this.renderCompactHeader() : ke`\n
    \n ${this.renderIcon()}\n ${this.title ? this.renderTitle() : D}\n ${this.renderCollapseButton()}\n ${this.renderCloseButton()}\n
    `;\n }\n renderCompactHeader() {\n return ke`
    \n ${this.renderCollapseButton()}\n ${this.title && !this.collapsed ? this.renderTitle() : D}\n ${this.renderCloseButton()}\n
    `;\n }\n renderCloseButton() {\n if (this.hideCloseButton) {\n return D;\n }\n return ke`\n \n \n \n `;\n }\n renderTitle() {\n return ke`${this.title}`;\n }\n onCloseButtonClicked() {\n this.dispatchEvent(new CustomEvent(\"close-clicked\", {}));\n }\n onCollapseToggled() {\n this.collapsed = !this.collapsed;\n this.dispatchEvent(new CustomEvent(\"collapse-clicked\", {}));\n }\n renderIcon() {\n return ke`\n ${this.icon}\n `;\n }\n renderCollapseButton() {\n let icon;\n if (this.compactMode) {\n icon = this.renderIcon();\n } else if (this.collapsed) {\n icon = ke``;\n } else {\n icon = ke``;\n }\n return ke`\n ${icon}\n `;\n }\n};\n__decorateClass([\n n4({ type: String })\n], Container.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], Container.prototype, \"title\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"collapsed\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"hideCloseButton\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"compactMode\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"noHeader\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], Container.prototype, \"reverseHeader\", 2);\nif (!customElements.get(Container.componentName)) {\n customElements.define(Container.componentName, Container);\n}\n\n// node_modules/lit-html/directives/style-map.js\nvar ee = \"important\";\nvar ie = \" !\" + ee;\nvar se = e5(class extends i3 {\n constructor(e6) {\n if (super(e6), e6.type !== t2.ATTRIBUTE || \"style\" !== e6.name || e6.strings?.length > 2) throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return Object.keys(t3).reduce(((e6, r5) => {\n const s2 = t3[r5];\n return null == s2 ? e6 : e6 + `${r5 = r5.includes(\"-\") ? r5 : r5.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, \"-$&\").toLowerCase()}:${s2};`;\n }), \"\");\n }\n update(t3, [e6]) {\n const { style: r5 } = t3.element;\n if (void 0 === this.ft) return this.ft = new Set(Object.keys(e6)), this.render(e6);\n for (const t4 of this.ft) null == e6[t4] && (this.ft.delete(t4), t4.includes(\"-\") ? r5.removeProperty(t4) : r5[t4] = null);\n for (const t4 in e6) {\n const s2 = e6[t4];\n if (null != s2) {\n this.ft.add(t4);\n const e7 = \"string\" == typeof s2 && s2.endsWith(ie);\n t4.includes(\"-\") || e7 ? r5.setProperty(t4, e7 ? s2.slice(0, -11) : s2, e7 ? ee : \"\") : r5[t4] = s2;\n }\n }\n return R;\n }\n});\n\n// js/tab_panel.ts\nfunction convertToId(name) {\n return (name || \"\").trim().replace(\" \", \"-\").toLowerCase();\n}\nvar TabPanel = class extends h3 {\n constructor() {\n super(...arguments);\n this.tabs = [];\n this.index = 0;\n this.mode = 1 /* HIDE_ON_SECOND_CLICK */;\n this.alignment = \"left\" /* LEFT */;\n }\n static get componentName() {\n return `tab-panel`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n ::slotted(*) {\n display: none;\n }\n\n ::slotted(.show-tab) {\n display: block;\n }\n\n .container {\n padding: 0;\n width: 100%;\n }\n\n .tab-container {\n align-items: center;\n display: flex;\n flex-direction: row;\n }\n\n .tab-container.center {\n justify-content: center;\n }\n\n .tab-container.left {\n justify-content: flex-start;\n }\n\n .tab-container.right {\n justify-content: flex-end;\n }\n\n .tab-container button {\n border-radius: 5px;\n height: 28px;\n margin: 2px 0 2px 8px;\n user-select: none;\n }\n\n .tab-container button.icon {\n font-size: 16px;\n width: 28px;\n }\n\n .tab-container button.name {\n padding: 0 8px;\n }\n `\n ];\n }\n render() {\n return ke`\n
    \n \n ${this.renderTabs()}\n
    \n \n \n `;\n }\n update(changedProperties) {\n super.update(changedProperties);\n if (changedProperties.has(\"index\") && changedProperties.get(\"index\") != null) {\n this.updateSlotChildren();\n }\n }\n updateSlotChildren() {\n if (!this.tabContentElements) {\n return;\n }\n this.tabContentElements.forEach((element, i4) => {\n element.classList.remove(\"show-tab\");\n const id = convertToId(this.tabs[i4].name);\n element.setAttribute(\"id\", `tabpanel-${id}-${i4}`);\n element.setAttribute(\"role\", \"tabpanel\");\n element.setAttribute(\"aria-labelledby\", `tab-${id}-${i4}`);\n });\n this.tabContentElements[this.index]?.classList.add(\"show-tab\");\n }\n renderTabs() {\n return this.tabs.map((tab, i4) => {\n const id = convertToId(this.tabs[i4].name);\n return ke` {\n this.onTabClick(i4);\n }}>\n ${tab.icon ? ke`${tab.icon}` : D}\n ${tab.name}\n `;\n });\n }\n onTabClick(index) {\n switch (this.mode) {\n case 1 /* HIDE_ON_SECOND_CLICK */:\n this.index = this.index === index ? -1 : index;\n break;\n case 0 /* ALWAYS_SHOW */:\n default:\n this.index = index;\n }\n this.dispatchEvent(new CustomEvent(\"tab-changed\", {\n detail: index\n }));\n }\n};\n__decorateClass([\n n4({ type: Array })\n], TabPanel.prototype, \"tabs\", 2);\n__decorateClass([\n n4({ type: Number })\n], TabPanel.prototype, \"index\", 2);\n__decorateClass([\n n4({ type: Number })\n], TabPanel.prototype, \"mode\", 2);\n__decorateClass([\n n4({ type: String })\n], TabPanel.prototype, \"alignment\", 2);\n__decorateClass([\n r4(\".tab\")\n], TabPanel.prototype, \"tabElements\", 2);\n__decorateClass([\n o4()\n], TabPanel.prototype, \"tabContentElements\", 2);\nif (!customElements.get(TabPanel.componentName)) {\n customElements.define(TabPanel.componentName, TabPanel);\n}\n\n// js/toolbar.ts\nvar Toolbar = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.expanded = false;\n }\n static get componentName() {\n return `toolbar-panel`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n .hide {\n display: none;\n }\n\n .expanded {\n display: block; !important\n }\n\n slot[name=\"extra-tools\"] {\n margin-top: 4px;\n }\n\n ::slotted([slot=\"main-tools\"]),\n ::slotted([slot=\"extra-tools\"]) {\n align-items: center;\n display: inline-grid;\n grid-template-columns: auto auto auto;\n grid-gap: 4px;\n justify-items: center;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"main_tools\", null],\n [\"extra_tools\", null],\n [\"expanded\", \"expanded\"]\n ]);\n }\n render() {\n return ke`\n \n
    \n \n \n
    \n \n `;\n }\n};\n__decorateClass([\n n4()\n], Toolbar.prototype, \"expanded\", 2);\nif (!customElements.get(Toolbar.componentName)) {\n customElements.define(Toolbar.componentName, Toolbar);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(Toolbar.componentName);\n manager.model = model;\n el.appendChild(manager);\n const mainToolsEl = document.createElement(\"div\");\n mainToolsEl.slot = \"main-tools\";\n manager.appendChild(mainToolsEl);\n updateChildren(mainToolsEl, model, \"main_tools\");\n model.on(\"change:main_tools\", () => {\n updateChildren(mainToolsEl, model, \"main_tools\");\n });\n const extraToolsEl = document.createElement(\"div\");\n extraToolsEl.slot = \"extra-tools\";\n manager.appendChild(extraToolsEl);\n updateChildren(extraToolsEl, model, \"extra_tools\");\n model.on(\"change:extra_tools\", () => {\n updateChildren(extraToolsEl, model, \"extra_tools\");\n });\n}\nvar toolbar_default = { render };\nexport {\n Toolbar,\n toolbar_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\nlit-html/directives/style-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "expanded": false, "extra_tools": [ "IPY_MODEL_9ee8686650864cf1a7ad534fa04d8484", "IPY_MODEL_59df93d6bcd94eaf9a0228c06006c037", "IPY_MODEL_99ea936c1ae34272b5c089c34d6161b4", "IPY_MODEL_2df00c06e0754ad5900b1838da7e06c4", "IPY_MODEL_9f88f133eb7e4c048b9c992b68c975b7", "IPY_MODEL_49b4815684a0451db3445f66a16ac932", "IPY_MODEL_c98c57ca00c548199be956d51249b66d", "IPY_MODEL_26c76c1cb7104826a53eeaf1b6319038", "IPY_MODEL_d5e9d6a6c1aa4bde952e704a629b230a", "IPY_MODEL_dd304f1604b64854a29f2a852706a083", "IPY_MODEL_98443954ce3742c7804619d4c1157ae0" ], "layout": "IPY_MODEL_838294f1f31b44eba369cdd85b0b9ece", "main_tools": [ "IPY_MODEL_9a427790ecee460bb5d1e1d8a344adac", "IPY_MODEL_784adf423a5943128b1b9badb4dc7c93", "IPY_MODEL_5c2f300c4b14448eb9bcddb38fd31f76", "IPY_MODEL_abb18ba61c1c4174bcb40172022f78e5", "IPY_MODEL_dc4ce492a934497c8cad2c10d106965e", "IPY_MODEL_040046ccfea84fb18171fe40c31139db" ] } }, "f187d58f42cb4bc89e663b111b8ff2a4": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": "0px 10px", "grid_row": null, "grid_template_areas": null, "grid_template_columns": "auto auto", "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": "visible", "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6649bc3169674a42abd007c305534047": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "326eb6d27c7c4e0387c2db417f493f48": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "838294f1f31b44eba369cdd85b0b9ece": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "15cc1057b5fc4b099bfc7fa51b528c34": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.map_widgets.LayerManagerRow", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/layer_manager_row.ts\nvar LayerManagerRow = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.name = \"\";\n this.visible = true;\n this.opacity = 1;\n this.isLoading = false;\n this.isConfirmDialogVisible = false;\n }\n static get componentName() {\n return `layer-manager-row`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n .row {\n align-items: center;\n display: flex;\n gap: 4px;\n }\n\n .layer-name {\n cursor: pointer;\n flex-grow: 1;\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .row-button {\n font-size: 16px;\n height: 28px;\n width: 28px;\n }\n\n .layer-opacity-slider {\n width: 70px;\n }\n\n .layer-visibility-checkbox {\n margin: 2px;\n }\n\n .spinner {\n -webkit-animation: spin 2s linear infinite;\n animation: spin 2s linear infinite;\n border-radius: 50%;\n border: 4px solid var(--jp-widgets-input-border-color);\n border-top: 4px solid var(--jp-widgets-color);\n height: 12px;\n width: 12px;\n }\n\n @-webkit-keyframes spin {\n 0% {\n -webkit-transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n }\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n\n button.loading .spinner,\n button.loading:hover .close-icon,\n button.done-loading .close-icon {\n display: block;\n }\n\n button.loading .close-icon,\n button.loading:hover .spinner,\n button.done-loading .spinner {\n display: none;\n }\n\n .remove-layer-text {\n flex-grow: 1;\n padding-left: 22px;\n }\n\n .confirm-deletion-container {\n margin-top: 4px;\n }\n\n .confirm-deletion-container button {\n height: 28px;\n width: 70px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"name\", \"name\"],\n [\"visible\", \"visible\"],\n [\"opacity\", \"opacity\"],\n [\"is_loading\", \"isLoading\"]\n ]);\n }\n render() {\n return ke`\n
    \n \n \n ${this.name}\n \n \n \n settings\n \n \n
    \n delete
    \n \n
    \n ${this.renderConfirmDialog()}\n `;\n }\n renderConfirmDialog() {\n if (!this.isConfirmDialogVisible) {\n return D;\n }\n return ke`\n
    \n Remove layer?\n \n No\n \n \n Yes\n \n
    \n `;\n }\n onLayerVisibilityChanged(_event) {\n this.visible = !this.visible;\n }\n onLayerOpacityChanged(event) {\n const target = event.target;\n this.opacity = parseFloat(target.value);\n }\n onSettingsClicked(_2) {\n this.model?.send({ type: \"click\", id: \"settings\" });\n }\n onDeleteClicked(_2) {\n this.isConfirmDialogVisible = true;\n }\n confirmDeletion(_2) {\n this.model?.send({ type: \"click\", id: \"delete\" });\n }\n cancelDeletion(_2) {\n this.isConfirmDialogVisible = false;\n }\n};\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"name\", 2);\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"visible\", 2);\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"opacity\", 2);\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"isLoading\", 2);\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"isConfirmDialogVisible\", 2);\nif (!customElements.get(LayerManagerRow.componentName)) {\n customElements.define(LayerManagerRow.componentName, LayerManagerRow);\n}\nfunction render({ model, el }) {\n loadFonts();\n const row = document.createElement(LayerManagerRow.componentName);\n row.model = model;\n el.appendChild(row);\n}\nvar layer_manager_row_default = { render };\nexport {\n LayerManagerRow,\n layer_manager_row_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "is_loading": false, "layout": "IPY_MODEL_752571d7eb714fc38fe861f586438909", "name": "OpenStreetMap.Mapnik", "opacity": 1, "visible": true } }, "ad71c38e9dfa482d9e27303656b859ca": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.map_widgets.LayerManagerRow", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/layer_manager_row.ts\nvar LayerManagerRow = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.name = \"\";\n this.visible = true;\n this.opacity = 1;\n this.isLoading = false;\n this.isConfirmDialogVisible = false;\n }\n static get componentName() {\n return `layer-manager-row`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n .row {\n align-items: center;\n display: flex;\n gap: 4px;\n }\n\n .layer-name {\n cursor: pointer;\n flex-grow: 1;\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .row-button {\n font-size: 16px;\n height: 28px;\n width: 28px;\n }\n\n .layer-opacity-slider {\n width: 70px;\n }\n\n .layer-visibility-checkbox {\n margin: 2px;\n }\n\n .spinner {\n -webkit-animation: spin 2s linear infinite;\n animation: spin 2s linear infinite;\n border-radius: 50%;\n border: 4px solid var(--jp-widgets-input-border-color);\n border-top: 4px solid var(--jp-widgets-color);\n height: 12px;\n width: 12px;\n }\n\n @-webkit-keyframes spin {\n 0% {\n -webkit-transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n }\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n\n button.loading .spinner,\n button.loading:hover .close-icon,\n button.done-loading .close-icon {\n display: block;\n }\n\n button.loading .close-icon,\n button.loading:hover .spinner,\n button.done-loading .spinner {\n display: none;\n }\n\n .remove-layer-text {\n flex-grow: 1;\n padding-left: 22px;\n }\n\n .confirm-deletion-container {\n margin-top: 4px;\n }\n\n .confirm-deletion-container button {\n height: 28px;\n width: 70px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"name\", \"name\"],\n [\"visible\", \"visible\"],\n [\"opacity\", \"opacity\"],\n [\"is_loading\", \"isLoading\"]\n ]);\n }\n render() {\n return ke`\n
    \n \n \n ${this.name}\n \n \n \n settings\n \n \n
    \n delete
    \n \n
    \n ${this.renderConfirmDialog()}\n `;\n }\n renderConfirmDialog() {\n if (!this.isConfirmDialogVisible) {\n return D;\n }\n return ke`\n
    \n Remove layer?\n \n No\n \n \n Yes\n \n
    \n `;\n }\n onLayerVisibilityChanged(_event) {\n this.visible = !this.visible;\n }\n onLayerOpacityChanged(event) {\n const target = event.target;\n this.opacity = parseFloat(target.value);\n }\n onSettingsClicked(_2) {\n this.model?.send({ type: \"click\", id: \"settings\" });\n }\n onDeleteClicked(_2) {\n this.isConfirmDialogVisible = true;\n }\n confirmDeletion(_2) {\n this.model?.send({ type: \"click\", id: \"delete\" });\n }\n cancelDeletion(_2) {\n this.isConfirmDialogVisible = false;\n }\n};\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"name\", 2);\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"visible\", 2);\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"opacity\", 2);\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"isLoading\", 2);\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"isConfirmDialogVisible\", 2);\nif (!customElements.get(LayerManagerRow.componentName)) {\n customElements.define(LayerManagerRow.componentName, LayerManagerRow);\n}\nfunction render({ model, el }) {\n loadFonts();\n const row = document.createElement(LayerManagerRow.componentName);\n row.model = model;\n el.appendChild(row);\n}\nvar layer_manager_row_default = { render };\nexport {\n LayerManagerRow,\n layer_manager_row_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "is_loading": false, "layout": "IPY_MODEL_492b554be7464042a84634d06cea9d04", "name": "AETI 2026-07", "opacity": 1, "visible": true } }, "659d3999ffe74d12a158814c9ce35327": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.map_widgets.LayerManagerRow", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/layer_manager_row.ts\nvar LayerManagerRow = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.name = \"\";\n this.visible = true;\n this.opacity = 1;\n this.isLoading = false;\n this.isConfirmDialogVisible = false;\n }\n static get componentName() {\n return `layer-manager-row`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n .row {\n align-items: center;\n display: flex;\n gap: 4px;\n }\n\n .layer-name {\n cursor: pointer;\n flex-grow: 1;\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .row-button {\n font-size: 16px;\n height: 28px;\n width: 28px;\n }\n\n .layer-opacity-slider {\n width: 70px;\n }\n\n .layer-visibility-checkbox {\n margin: 2px;\n }\n\n .spinner {\n -webkit-animation: spin 2s linear infinite;\n animation: spin 2s linear infinite;\n border-radius: 50%;\n border: 4px solid var(--jp-widgets-input-border-color);\n border-top: 4px solid var(--jp-widgets-color);\n height: 12px;\n width: 12px;\n }\n\n @-webkit-keyframes spin {\n 0% {\n -webkit-transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n }\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n\n button.loading .spinner,\n button.loading:hover .close-icon,\n button.done-loading .close-icon {\n display: block;\n }\n\n button.loading .close-icon,\n button.loading:hover .spinner,\n button.done-loading .spinner {\n display: none;\n }\n\n .remove-layer-text {\n flex-grow: 1;\n padding-left: 22px;\n }\n\n .confirm-deletion-container {\n margin-top: 4px;\n }\n\n .confirm-deletion-container button {\n height: 28px;\n width: 70px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"name\", \"name\"],\n [\"visible\", \"visible\"],\n [\"opacity\", \"opacity\"],\n [\"is_loading\", \"isLoading\"]\n ]);\n }\n render() {\n return ke`\n
    \n \n \n ${this.name}\n \n \n \n settings\n \n \n
    \n delete
    \n \n
    \n ${this.renderConfirmDialog()}\n `;\n }\n renderConfirmDialog() {\n if (!this.isConfirmDialogVisible) {\n return D;\n }\n return ke`\n
    \n Remove layer?\n \n No\n \n \n Yes\n \n
    \n `;\n }\n onLayerVisibilityChanged(_event) {\n this.visible = !this.visible;\n }\n onLayerOpacityChanged(event) {\n const target = event.target;\n this.opacity = parseFloat(target.value);\n }\n onSettingsClicked(_2) {\n this.model?.send({ type: \"click\", id: \"settings\" });\n }\n onDeleteClicked(_2) {\n this.isConfirmDialogVisible = true;\n }\n confirmDeletion(_2) {\n this.model?.send({ type: \"click\", id: \"delete\" });\n }\n cancelDeletion(_2) {\n this.isConfirmDialogVisible = false;\n }\n};\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"name\", 2);\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"visible\", 2);\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"opacity\", 2);\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"isLoading\", 2);\n__decorateClass([\n n4()\n], LayerManagerRow.prototype, \"isConfirmDialogVisible\", 2);\nif (!customElements.get(LayerManagerRow.componentName)) {\n customElements.define(LayerManagerRow.componentName, LayerManagerRow);\n}\nfunction render({ model, el }) {\n loadFonts();\n const row = document.createElement(LayerManagerRow.componentName);\n row.model = model;\n el.appendChild(row);\n}\nvar layer_manager_row_default = { render };\nexport {\n LayerManagerRow,\n layer_manager_row_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "is_loading": false, "layout": "IPY_MODEL_06b15b2921cc4c2482c504476f5808f9", "name": "Study area", "opacity": 0.4, "visible": true } }, "9a427790ecee460bb5d1e1d8a344adac": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "point_scan", "layout": "IPY_MODEL_eadec7ac55424ec2a066eaa938ca0219", "primary": true, "tooltip_text": "Inspector" } }, "784adf423a5943128b1b9badb4dc7c93": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "bar_chart", "layout": "IPY_MODEL_1890bfba6d464ecf910912c2e763db2b", "primary": true, "tooltip_text": "Plotting" } }, "5c2f300c4b14448eb9bcddb38fd31f76": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "history", "layout": "IPY_MODEL_10aecfbcf2fe4eb7994f16125908fae3", "primary": true, "tooltip_text": "Create timelapse" } }, "abb18ba61c1c4174bcb40172022f78e5": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "map", "layout": "IPY_MODEL_29191c2dfbf1465faa05e80662d7c64d", "primary": true, "tooltip_text": "Change basemap" } }, "dc4ce492a934497c8cad2c10d106965e": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "code", "layout": "IPY_MODEL_594b8699136b43ccb93b396f1b9a999c", "primary": true, "tooltip_text": "Convert Earth Engine JavaScript to Python" } }, "040046ccfea84fb18171fe40c31139db": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "add", "layout": "IPY_MODEL_55965ae5faba437a9f69f5d1e3574ca4", "primary": true, "tooltip_text": "Expand toolbar" } }, "9ee8686650864cf1a7ad534fa04d8484": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "ink_eraser", "layout": "IPY_MODEL_32a52e2f75004746a17d386d790c5834", "primary": true, "tooltip_text": "Remove all drawn features" } }, "59df93d6bcd94eaf9a0228c06006c037": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "upload", "layout": "IPY_MODEL_a3b8066a5b7f40d4b56005a1ecbde597", "primary": true, "tooltip_text": "Open local vector/raster data" } }, "99ea936c1ae34272b5c089c34d6161b4": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "manufacturing", "layout": "IPY_MODEL_7ec82f3014d145858538de7f4f217a37", "primary": true, "tooltip_text": "WhiteboxTools for local geoprocessing" } }, "2df00c06e0754ad5900b1838da7e06c4": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "dns", "layout": "IPY_MODEL_351123ab72f94221a23a4feb6029e10c", "primary": true, "tooltip_text": "GEE Toolbox for cloud computing" } }, "9f88f133eb7e4c048b9c992b68c975b7": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "fast_forward", "layout": "IPY_MODEL_97258a4709d04ee197f173a0db635931", "primary": true, "tooltip_text": "Activate timeslider" } }, "49b4815684a0451db3445f66a16ac932": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "pan_tool_alt", "layout": "IPY_MODEL_d6f877e0b3e74d649d76f8debad212de", "primary": true, "tooltip_text": "Collect training samples" } }, "c98c57ca00c548199be956d51249b66d": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "show_chart", "layout": "IPY_MODEL_b44ff515722440b6b7184ef29e6e8e90", "primary": true, "tooltip_text": "Creating and plotting transects" } }, "26c76c1cb7104826a53eeaf1b6319038": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "shuffle", "layout": "IPY_MODEL_b31aca3768ed479ab12c7db01b8a14be", "primary": true, "tooltip_text": "Sankey plots" } }, "d5e9d6a6c1aa4bde952e704a629b230a": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "image", "layout": "IPY_MODEL_65b92042d2184eb48a6908d995851251", "primary": true, "tooltip_text": "Planet imagery" } }, "dd304f1604b64854a29f2a852706a083": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "target", "layout": "IPY_MODEL_5c9b982118944842a718ac939e9dfe86", "primary": true, "tooltip_text": "Get COG/STAC pixel value" } }, "98443954ce3742c7804619d4c1157ae0": { "model_module": "anywidget", "model_name": "AnyModel", "model_module_version": "~0.9.*", "state": { "_anywidget_id": "geemap.toolbar.ToolbarItem", "_dom_classes": [ "geemap-colab" ], "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n if (decorator = decorators[i4])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n constructor(t3, e5, o4) {\n if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t3, this.t = e5;\n }\n get styleSheet() {\n let t3 = this.o;\n const s2 = this.t;\n if (e && void 0 === t3) {\n const e5 = void 0 !== s2 && 1 === s2.length;\n e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n }\n return t3;\n }\n toString() {\n return this.cssText;\n }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n if (true === t4._$cssResult$) return t4.cssText;\n if (\"number\" == typeof t4) return t4;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s2) + t3[o5 + 1]), t3[0]);\n return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n else for (const e5 of o4) {\n const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n let e5 = \"\";\n for (const s2 of t4.cssRules) e5 += s2.cssText;\n return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n switch (s2) {\n case Boolean:\n t3 = t3 ? l : null;\n break;\n case Object:\n case Array:\n t3 = null == t3 ? t3 : JSON.stringify(t3);\n }\n return t3;\n}, fromAttribute(t3, s2) {\n let i4 = t3;\n switch (s2) {\n case Boolean:\n i4 = null !== t3;\n break;\n case Number:\n i4 = null === t3 ? null : Number(t3);\n break;\n case Object:\n case Array:\n try {\n i4 = JSON.parse(t3);\n } catch (t4) {\n i4 = null;\n }\n }\n return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n static addInitializer(t3) {\n this._$Ei(), (this.l ??= []).push(t3);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t3, s2 = y) {\n if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n void 0 !== r4 && e2(this.prototype, t3, r4);\n }\n }\n static getPropertyDescriptor(t3, s2, i4) {\n const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n return this[s2];\n }, set(t4) {\n this[s2] = t4;\n } };\n return { get() {\n return e5?.call(this);\n }, set(s3) {\n const r4 = e5?.call(this);\n h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n }, configurable: true, enumerable: true };\n }\n static getPropertyOptions(t3) {\n return this.elementProperties.get(t3) ?? y;\n }\n static _$Ei() {\n if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n const t3 = n2(this);\n t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(d(\"finalized\"))) return;\n if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n for (const i4 of s2) this.createProperty(i4, t4[i4]);\n }\n const t3 = this[Symbol.metadata];\n if (null !== t3) {\n const s2 = litPropertyMetadata.get(t3);\n if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [t4, s2] of this.elementProperties) {\n const i4 = this._$Eu(t4, s2);\n void 0 !== i4 && this._$Eh.set(i4, t4);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s2) {\n const i4 = [];\n if (Array.isArray(s2)) {\n const e5 = new Set(s2.flat(1 / 0).reverse());\n for (const s3 of e5) i4.unshift(c(s3));\n } else void 0 !== s2 && i4.push(c(s2));\n return i4;\n }\n static _$Eu(t3, s2) {\n const i4 = s2.attribute;\n return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n }\n addController(t3) {\n (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n }\n removeController(t3) {\n this._$EO?.delete(t3);\n }\n _$E_() {\n const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n t3.size > 0 && (this._$Ep = t3);\n }\n createRenderRoot() {\n const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return S(t3, this.constructor.elementStyles), t3;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n }\n enableUpdating(t3) {\n }\n disconnectedCallback() {\n this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n }\n attributeChangedCallback(t3, s2, i4) {\n this._$AK(t3, i4);\n }\n _$EC(t3, s2) {\n const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n if (void 0 !== e5 && true === i4.reflect) {\n const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n }\n }\n _$AK(t3, s2) {\n const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n if (void 0 !== e5 && this._$Em !== e5) {\n const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n }\n }\n requestUpdate(t3, s2, i4) {\n if (void 0 !== t3) {\n if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n this.P(t3, s2, i4);\n }\n false === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t3, s2, i4) {\n this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n }\n async _$ET() {\n this.isUpdatePending = true;\n try {\n await this._$ES;\n } catch (t4) {\n Promise.reject(t4);\n }\n const t3 = this.scheduleUpdate();\n return null != t3 && await t3, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t5, s3] of this._$Ep) this[t5] = s3;\n this._$Ep = void 0;\n }\n const t4 = this.constructor.elementProperties;\n if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n }\n let t3 = false;\n const s2 = this._$AL;\n try {\n t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n } catch (s3) {\n throw t3 = false, this._$EU(), s3;\n }\n t3 && this._$AE(s2);\n }\n willUpdate(t3) {\n }\n _$AE(t3) {\n this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t3) {\n return true;\n }\n update(t3) {\n this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n }\n updated(t3) {\n }\n firstUpdated(t3) {\n }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n const s2 = t3.length - 1, e5 = [];\n let h4, o4 = 2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\", n5 = T;\n for (let i5 = 0; i5 < s2; i5++) {\n const s3 = t3[i5];\n let r4, l2, c4 = -1, a2 = 0;\n for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n }\n return [N(t3, o4 + (t3[s2] || \"\") + (2 === i4 ? \"\" : 3 === i4 ? \"\" : \"\")), e5];\n};\nvar B = class _B {\n constructor({ strings: t3, _$litType$: i4 }, s2) {\n let e5;\n this.parts = [];\n let h4 = 0, o4 = 0;\n const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n const t4 = this.el.content.firstChild;\n t4.replaceWith(...t4.childNodes);\n }\n for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n if (1 === e5.nodeType) {\n if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n if (M.test(e5.tagName)) {\n const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n if (i5 > 0) {\n e5.textContent = c3 ? c3.emptyScript : \"\";\n for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n e5.append(t4[i5], lt());\n }\n }\n } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n else {\n let t4 = -1;\n for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n }\n h4++;\n }\n }\n static createElement(t3, i4) {\n const s2 = w.createElement(\"template\");\n return s2.innerHTML = t3, s2;\n }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n if (i4 === R) return i4;\n let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n const o4 = st(i4) ? void 0 : i4._$litDirective$;\n return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n constructor(t3, i4) {\n this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t3) {\n const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n I.currentNode = e5;\n let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n for (; void 0 !== r4; ) {\n if (o4 === r4.index) {\n let i5;\n 2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n }\n o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n }\n return I.currentNode = w, e5;\n }\n p(t3) {\n let i4 = 0;\n for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n }\n};\nvar et = class _et {\n get _$AU() {\n return this._$AM?._$AU ?? this.v;\n }\n constructor(t3, i4, s2, e5) {\n this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n }\n get parentNode() {\n let t3 = this._$AA.parentNode;\n const i4 = this._$AM;\n return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t3, i4 = this) {\n t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n }\n O(t3) {\n return this._$AA.parentNode.insertBefore(t3, this._$AB);\n }\n T(t3) {\n this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n }\n _(t3) {\n this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n }\n $(t3) {\n const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n if (this._$AH?._$AD === e5) this._$AH.p(i4);\n else {\n const t4 = new F(e5, this), s3 = t4.u(this.options);\n t4.p(i4), this.T(s3), this._$AH = t4;\n }\n }\n _$AC(t3) {\n let i4 = V.get(t3.strings);\n return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n }\n k(t3) {\n g(this._$AH) || (this._$AH = [], this._$AR());\n const i4 = this._$AH;\n let s2, e5 = 0;\n for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n }\n _$AR(t3 = this._$AA.nextSibling, i4) {\n for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n const i5 = t3.nextSibling;\n t3.remove(), t3 = i5;\n }\n }\n setConnected(t3) {\n void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n }\n};\nvar G = class {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t3, i4, s2, e5, h4) {\n this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n }\n _$AI(t3, i4 = this, s2, e5) {\n const h4 = this.strings;\n let o4 = false;\n if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n else {\n const e6 = t3;\n let n5, r4;\n for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n }\n o4 && !e5 && this.j(t3);\n }\n j(t3) {\n t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n }\n};\nvar Y = class extends G {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t3) {\n this.element[this.name] = t3 === D ? void 0 : t3;\n }\n};\nvar Z = class extends G {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t3) {\n this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n }\n};\nvar q = class extends G {\n constructor(t3, i4, s2, e5, h4) {\n super(t3, i4, s2, e5, h4), this.type = 5;\n }\n _$AI(t3, i4 = this) {\n if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n }\n handleEvent(t3) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n }\n};\nvar K = class {\n constructor(t3, i4, s2) {\n this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t3) {\n z(this, t3);\n }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n const e5 = s2?.renderBefore ?? i4;\n let h4 = e5._$litPart$;\n if (void 0 === h4) {\n const t4 = s2?.renderBefore ?? null;\n e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n }\n return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n }\n createRenderRoot() {\n const t3 = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n }\n update(t3) {\n const e5 = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this.o?.setConnected(true);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this.o?.setConnected(false);\n }\n render() {\n return R;\n }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n const { kind: n5, metadata: i4 } = r4;\n let s2 = globalThis.litPropertyMetadata.get(i4);\n if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n const { name: o4 } = r4;\n return { set(r5) {\n const n6 = e5.get.call(this);\n e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n }, init(e6) {\n return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n } };\n }\n if (\"setter\" === n5) {\n const { name: o4 } = r4;\n return function(r5) {\n const n6 = this[o4];\n e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n };\n }\n throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n const r4 = e6.hasOwnProperty(o5);\n return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n constructor(t3) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t3, e5, i4) {\n this.t = t3, this._$AM = e5, this.i = i4;\n }\n _$AS(t3, e5) {\n return this.update(t3, e5);\n }\n update(t3, e5) {\n return this.render(...e5);\n }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n constructor(s2) {\n if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t3) {\n return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n }\n update(t3, [s2]) {\n if (void 0 === this.st) {\n this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n return this.render(s2);\n }\n const i4 = t3.element.classList;\n for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n for (const t4 in s2) {\n const r4 = !!s2[t4];\n r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n }\n return R;\n }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n .legacy-button {\n align-items: center;\n background-color: var(--jp-layout-color2);\n border-width: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n justify-content: center;\n line-height: var(--jp-widgets-inline-height);\n padding: 0;\n user-select: none;\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button:hover:enabled,\n .legacy-button:focus:enabled {\n box-shadow: 0 2px 2px 0\n rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n 0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n }\n\n .legacy-slider {\n -webkit-appearance: none;\n appearance: none;\n background: var(--jp-layout-color3);\n border-radius: 3px;\n height: 4px;\n outline: none;\n }\n\n .legacy-slider::-webkit-slider-thumb,\n .legacy-slider::-moz-range-thumb {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border-radius: 50%;\n cursor: pointer;\n height: var(--jp-widgets-slider-handle-size);\n width: var(--jp-widgets-slider-handle-size);\n }\n\n .legacy-text {\n color: var(--jp-widgets-label-color);\n font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n vertical-align: middle;\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: 28px;\n line-height: 28px;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-select[disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .legacy-text-input {\n background: var(--jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n }\n\n .legacy-text-input:disabled {\n opacity: var(--jp-widgets-disabled-opacity);\n }\n\n .legacy-color {\n align-self: stretch;\n background: var(--jp-widgets-input-background-color);\n border-left: none;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex-grow: 0;\n flex-shrink: 0;\n height: var(--jp-widgets-inline-height);\n outline: none !important;\n padding: 0 2px;\n width: var(--jp-widgets-inline-height);\n }\n\n .legacy-radio {\n margin: 0;\n vertical-align: middle;\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-button.active {\n background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n color: var(--jp-ui-font-color1);\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n 0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n 0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n }\n\n .legacy-button.primary {\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-inverse-font-color1);\n }\n\n .legacy-button.primary.active {\n background-color: var(--jp-brand-color0);\n color: var(--jp-ui-inverse-font-color0);\n }\n\n .legacy-select {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--jp-widgets-input-background-color);\n background-image: var(--jp-widgets-dropdown-arrow);\n background-position: right center;\n background-repeat: no-repeat;\n background-size: 20px;\n border-radius: 0;\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n box-shadow: none;\n box-sizing: border-box;\n color: var(--jp-widgets-input-color);\n flex: 1 1 var(--jp-widgets-inline-width-short);\n font-size: var(--jp-widgets-font-size);\n height: inherit;\n min-width: 0;\n outline: none !important;\n padding-left: calc(var(--jp-widgets-input-padding)* 2);\n padding-right: 20px;\n vertical-align: top;\n }\n\n .legacy-input {\n box-sizing: border-box;\n background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n color: var(--jp-widgets-input-color);\n flex-grow: 1;\n flex-shrink: 1;\n font-size: var(--jp-widgets-font-size);\n min-width: 0;\n outline: none !important;\n padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n height: var(--jp-widgets-inline-height);\n line-height: var(--jp-widgets-inline-height);\n }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n if (!document.querySelector(\".custom-fonts\")) {\n const styleElement = document.createElement(\"style\");\n styleElement.classList.add(\"custom-fonts\");\n styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n document.body.appendChild(styleElement);\n }\n}\nfunction reverseMap(map) {\n const reversedMap = /* @__PURE__ */ new Map();\n for (const [key, value] of map.entries()) {\n if (value != null) {\n reversedMap.set(value, key);\n }\n }\n return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n constructor() {\n super(...arguments);\n this._model = void 0;\n }\n onCustomMessage(_msg) {\n }\n viewNameToModelName() {\n return reverseMap(this.modelNameToViewName());\n }\n set model(model) {\n this._model = model;\n for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n if (widgetKey) {\n this[widgetKey] = model.get(modelKey);\n model.on(`change:${String(modelKey)}`, () => {\n this[widgetKey] = model.get(modelKey);\n });\n }\n }\n model.on(\"msg:custom\", (msg) => {\n this.onCustomMessage?.(msg);\n });\n }\n get model() {\n return this._model;\n }\n updated(changedProperties) {\n const viewToModelMap = this.viewNameToModelName();\n for (const [viewProp, _2] of changedProperties) {\n const castViewProp = viewProp;\n if (viewToModelMap.has(castViewProp)) {\n const modelProp = viewToModelMap.get(castViewProp);\n this._model?.set(\n modelProp,\n this[castViewProp]\n );\n }\n }\n this._model?.save_changes();\n }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n @font-face {\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n format(\"woff2\");\n }\n\n .material-symbols-outlined {\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n direction: ltr;\n display: inline-block;\n font-family: \"Material Symbols Outlined\";\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n }\n`;\nvar flexStyles = i`\n .vertical-flex {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .horizontal-flex {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 8px;\n }\n\n input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n width: 100%;\n }\n\n select {\n width: 100%;\n }\n\n .horizontal-flex .legacy-text {\n flex-shrink: 0;\n }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n constructor() {\n super(...arguments);\n this.active = false;\n this.primary = true;\n this.icon = \"\";\n this.tooltip_text = \"\";\n }\n static get componentName() {\n return `tool-button`;\n }\n static {\n this.styles = [\n legacyStyles,\n materialStyles,\n i`\n button {\n font-size: 16px !important;\n height: 32px;\n padding: 0px 0px 0px 4px;\n width: 32px;\n }\n `\n ];\n }\n modelNameToViewName() {\n return /* @__PURE__ */ new Map([\n [\"active\", \"active\"],\n [\"primary\", \"primary\"],\n [\"icon\", \"icon\"],\n [\"tooltip_text\", \"tooltip_text\"]\n ]);\n }\n render() {\n return ke`\n \n ${this.icon}\n `;\n }\n onClick(_2) {\n this.active = !this.active;\n }\n};\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n loadFonts();\n const manager = document.createElement(ToolbarItem.componentName);\n manager.model = model;\n el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n ToolbarItem,\n toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n (**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/is-server.js:\n (**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n (**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n\nlit-html/directives/class-map.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *)\n*/\n", "_model_module": "anywidget", "_model_module_version": "~0.9.*", "_model_name": "AnyModel", "_view_count": null, "_view_module": "anywidget", "_view_module_version": "~0.9.*", "_view_name": "AnyView", "active": false, "icon": "question_mark", "layout": "IPY_MODEL_d938ed917be24380bdddbe8f891214e8", "primary": true, "tooltip_text": "Get help" } }, "752571d7eb714fc38fe861f586438909": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "492b554be7464042a84634d06cea9d04": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "06b15b2921cc4c2482c504476f5808f9": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "eadec7ac55424ec2a066eaa938ca0219": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1890bfba6d464ecf910912c2e763db2b": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "10aecfbcf2fe4eb7994f16125908fae3": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "29191c2dfbf1465faa05e80662d7c64d": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "594b8699136b43ccb93b396f1b9a999c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "55965ae5faba437a9f69f5d1e3574ca4": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "32a52e2f75004746a17d386d790c5834": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "a3b8066a5b7f40d4b56005a1ecbde597": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "7ec82f3014d145858538de7f4f217a37": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "351123ab72f94221a23a4feb6029e10c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "97258a4709d04ee197f173a0db635931": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d6f877e0b3e74d649d76f8debad212de": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b44ff515722440b6b7184ef29e6e8e90": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b31aca3768ed479ab12c7db01b8a14be": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "65b92042d2184eb48a6908d995851251": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5c9b982118944842a718ac939e9dfe86": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d938ed917be24380bdddbe8f891214e8": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } } } } } }, "cells": [ { "id": "cell-000", "cell_type": "markdown", "metadata": { "id": "cell-000" }, "source": [ "# 📗 Notebook 2 — WaPOR Data Pipeline: from FAO Cloud to Earth Engine\n", "# الدفتر ٢ — خط بيانات WaPOR: من سحابة الفاو إلى محرك الأرض\n", "\n", "**English** — This notebook builds a complete monthly AETI **ImageCollection** for your region, checks which months are available, and (optionally) exports copies into your own Earth Engine asset folder.\n", "\n", "**العربية** — يبني هذا الدفتر مجموعة صور شهرية كاملة للتبخر-نتح لمنطقتك، ويفحص الأشهر المتوفرة، ويصدّر (اختيارياً) نسخاً إلى مجلد الأصول الخاص بك في محرك الأرض.\n", "\n", "**Old workflow vs new | الطريقة القديمة مقابل الجديدة**\n", "\n", "| Old (2023) | New (this notebook) |\n", "|---|---|\n", "| Download TIFFs to PC | Nothing to download |\n", "| Georeference & convert locally | FAO files read as-is |\n", "| Upload to Google Cloud Storage | Not needed |\n", "| Ingest into EE with CLI | `ee.Image.loadGeoTIFF()` reads FAO's bucket directly |\n" ] }, { "id": "cell-001", "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "cell-001", "outputId": "48d0b6a2-ceeb-4631-c5e3-a9c63b5d02c3" }, "source": [ "# @title 🔑 Authenticate with Google Earth Engine | المصادقة مع محرك جوجل الأرضي\n", "# Run this cell, follow the link, and paste nothing — Colab handles it automatically.\n", "import ee\n", "\n", "# ⚠️ CHANGE THIS to your own Earth Engine Cloud project ID\n", "# ⚠️ غيّر هذا إلى معرّف مشروعك الخاص في Earth Engine\n", "PROJECT_ID = \"steel-sonar-428908-v8\" # e.g. \"gw-tool-jordan\"\n", "\n", "ee.Authenticate()\n", "ee.Initialize(project=PROJECT_ID)\n", "print(\"✅ Earth Engine ready! Project:\", PROJECT_ID)" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "✅ Earth Engine ready! Project: steel-sonar-428908-v8\n" ] } ], "execution_count": 1 }, { "id": "cell-002", "cell_type": "code", "metadata": { "id": "cell-002" }, "source": [ "# @title ⚙️ Configuration | الإعدادات\n", "REGION = \"PAL\" # PAL = Jericho | JAF = Al Jafr | ERB = Erbil\n", "MAPSET = \"L3-AETI-M\" # Level-3 monthly actual evapotranspiration\n", "SCALE_FACTOR = 0.1 # WaPOR raw values -> mm/month\n", "BUCKET = \"fao-gismgr-wapor-3-data\"\n", "PREFIX = f\"DATA/WAPOR-3/MOSAICSET/{MAPSET}/WAPOR-3.{MAPSET}.{REGION}.\"" ], "outputs": [], "execution_count": 2 }, { "id": "cell-003", "cell_type": "markdown", "metadata": { "id": "cell-003" }, "source": [ "## 1. Which months are available? | ما هي الأشهر المتوفرة؟\n", "\n", "The FAO bucket is public, so we can list its files with a simple web request.\n", "مستودع الفاو عام، لذلك يمكننا سرد ملفاته بطلب ويب بسيط.\n" ] }, { "id": "cell-004", "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "cell-004", "outputId": "75ea51d3-ce10-46f4-870f-70954812b444" }, "source": [ "import requests\n", "\n", "def list_available_months(bucket, prefix):\n", " \"\"\"List available YYYY-MM months for a WaPOR mapset+region.\"\"\"\n", " months, page_token = [], None\n", " while True:\n", " params = {\"prefix\": prefix, \"fields\": \"items(name),nextPageToken\"}\n", " if page_token:\n", " params[\"pageToken\"] = page_token\n", " r = requests.get(\n", " f\"https://storage.googleapis.com/storage/v1/b/{bucket}/o\", params=params\n", " ).json()\n", " for item in r.get(\"items\", []):\n", " name = item[\"name\"]\n", " if name.endswith(\".tif\"):\n", " months.append(name.split(\".\")[-2]) # the YYYY-MM part\n", " page_token = r.get(\"nextPageToken\")\n", " if not page_token:\n", " break\n", " return sorted(months)\n", "\n", "available = list_available_months(BUCKET, PREFIX)\n", "print(f\"{len(available)} months available for {REGION}:\")\n", "print(\"first:\", available[0], \"| last:\", available[-1])" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "103 months available for PAL:\n", "first: 2018-01 | last: 2026-07\n" ] } ], "execution_count": 3 }, { "id": "cell-005", "cell_type": "markdown", "metadata": { "id": "cell-005" }, "source": [ "## 2. Build the ImageCollection | بناء مجموعة الصور\n", "\n", "Each image gets a proper **date property** (`system:time_start`) so Earth Engine can filter and chart it like any catalog dataset.\n" ] }, { "id": "cell-006", "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "cell-006", "outputId": "27395438-258c-4fc3-b4de-e39c04a59976" }, "source": [ "def wapor_month_image(month):\n", " \"\"\"One month of AETI as an EE image, in mm/month, with its date set.\"\"\"\n", " uri = f\"gs://{BUCKET}/{PREFIX}{month}.tif\"\n", " return (\n", " ee.Image.loadGeoTIFF(uri)\n", " .multiply(SCALE_FACTOR)\n", " .rename(\"AETI\")\n", " .set(\"system:time_start\", ee.Date(month + \"-01\").millis())\n", " .set(\"month\", month)\n", " )\n", "\n", "aeti_collection = ee.ImageCollection([wapor_month_image(m) for m in available])\n", "print(\"Images in collection:\", aeti_collection.size().getInfo())\n", "\n", "# The study-area geometry comes free with the images:\n", "aoi = ee.Image.loadGeoTIFF(f\"gs://{BUCKET}/{PREFIX}{available[0]}.tif\").geometry()\n", "print(\"Study area (km²):\", round(aoi.area(maxError=1).getInfo() / 1e6))" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Images in collection: 103\n", "Study area (km²): 951\n" ] } ], "execution_count": 7 }, { "id": "cell-007", "cell_type": "markdown", "metadata": { "id": "cell-007" }, "source": [ "## 3. Visualize | العرض" ] }, { "id": "cell-008", "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 621, "referenced_widgets": [ "141ce958d68f4129aa6580cbe1023815", "65cb00d507d448b897843232d2f98c81", "c52bd4b97a34412ba12f3ff9621fe1f4", "a578dec10236466084f061c838ec5c90", "6236499794fb4e61a6c2aa7e52c63594", "9619afab783143f09bd9911e099fb8f1", "7261a0e6740d49fb940223d2ccb5b0c3", "41a2b6d3eec04598aa3ea0e566ce17e9", "771dae501e3b4753801d20c356873bbc", "287a73cba1cc4d4e90a67aa08a54e02d", "983ad5f762864e6eb21d6093fed853b8", "d1f39369c8c649c680ad049035ceb0c9", "4b437b03db424ade922c594c90120b09", "35e0a0e19afe4b51a4faaf74aa9fa786", "88abdc50e1c94ee5a9e5cec495755a42", "2631860b5af24f6293899f4f718a2beb", "40822bcdecd042d8a0084dc988037141", "a76f9fd31e834b36bc6adef14729233c", "dbd8d14f39a14ae2b692ab542f045463", "e3051051145e448f9fecd1ca1700d90e", "f187d58f42cb4bc89e663b111b8ff2a4", "6649bc3169674a42abd007c305534047", "326eb6d27c7c4e0387c2db417f493f48", "838294f1f31b44eba369cdd85b0b9ece", "15cc1057b5fc4b099bfc7fa51b528c34", "ad71c38e9dfa482d9e27303656b859ca", "659d3999ffe74d12a158814c9ce35327", "9a427790ecee460bb5d1e1d8a344adac", "784adf423a5943128b1b9badb4dc7c93", "5c2f300c4b14448eb9bcddb38fd31f76", "abb18ba61c1c4174bcb40172022f78e5", "dc4ce492a934497c8cad2c10d106965e", "040046ccfea84fb18171fe40c31139db", "9ee8686650864cf1a7ad534fa04d8484", "59df93d6bcd94eaf9a0228c06006c037", "99ea936c1ae34272b5c089c34d6161b4", "2df00c06e0754ad5900b1838da7e06c4", "9f88f133eb7e4c048b9c992b68c975b7", "49b4815684a0451db3445f66a16ac932", "c98c57ca00c548199be956d51249b66d", "26c76c1cb7104826a53eeaf1b6319038", "d5e9d6a6c1aa4bde952e704a629b230a", "dd304f1604b64854a29f2a852706a083", "98443954ce3742c7804619d4c1157ae0", "752571d7eb714fc38fe861f586438909", "492b554be7464042a84634d06cea9d04", "06b15b2921cc4c2482c504476f5808f9", "eadec7ac55424ec2a066eaa938ca0219", "1890bfba6d464ecf910912c2e763db2b", "10aecfbcf2fe4eb7994f16125908fae3", "29191c2dfbf1465faa05e80662d7c64d", "594b8699136b43ccb93b396f1b9a999c", "55965ae5faba437a9f69f5d1e3574ca4", "32a52e2f75004746a17d386d790c5834", "a3b8066a5b7f40d4b56005a1ecbde597", "7ec82f3014d145858538de7f4f217a37", "351123ab72f94221a23a4feb6029e10c", "97258a4709d04ee197f173a0db635931", "d6f877e0b3e74d649d76f8debad212de", "b44ff515722440b6b7184ef29e6e8e90", "b31aca3768ed479ab12c7db01b8a14be", "65b92042d2184eb48a6908d995851251", "5c9b982118944842a718ac939e9dfe86", "d938ed917be24380bdddbe8f891214e8" ] }, "id": "cell-008", "outputId": "efc838d9-4fdc-4946-9a47-247147f071c8" }, "source": [ "import geemap\n", "\n", "center = aoi.centroid(1).coordinates().getInfo()\n", "Map = geemap.Map(center=[center[1], center[0]], zoom=11)\n", "vis = {\"min\": 0, \"max\": 150, \"palette\": [\"white\", \"yellow\", \"green\", \"darkgreen\"]}\n", "Map.addLayer(wapor_month_image(available[-1]), vis, f\"AETI {available[-1]}\")\n", "Map.addLayer(aoi, {\"color\": \"red\"}, \"Study area\", True, 0.4)\n", "Map" ], "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "Map(center=[31.970851084948762, 35.465239377943476], controls=(WidgetControl(options=['position', 'transparent…" ], "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, "model_id": "141ce958d68f4129aa6580cbe1023815" } }, "metadata": { "application/vnd.jupyter.widget-view+json": { "colab": { "custom_widget_manager": { "url": "https://ssl.gstatic.com/colaboratory-static/widgets/colab-cdn-widget-manager/2b70e893a8ba7c0f/manager.min.js" } } } } } ], "execution_count": 8 }, { "id": "cell-009", "cell_type": "markdown", "metadata": { "id": "cell-009" }, "source": [ "## 4. Regional mean time series | السلسلة الزمنية للمتوسط الإقليمي" ] }, { "id": "cell-010", "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 407 }, "id": "cell-010", "outputId": "bb29757f-c8aa-4a95-af39-f213cdd1b244" }, "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "def region_mean(img):\n", " mean = img.reduceRegion(\n", " reducer=ee.Reducer.mean(), geometry=aoi, scale=100, maxPixels=1e9\n", " ).get(\"AETI\")\n", " return ee.Feature(None, {\"month\": img.get(\"month\"), \"mean_aeti\": mean})\n", "\n", "fc = aeti_collection.map(region_mean).getInfo()\n", "df = pd.DataFrame([f[\"properties\"] for f in fc[\"features\"]]).sort_values(\"month\")\n", "\n", "ax = df.plot(x=\"month\", y=\"mean_aeti\", figsize=(14, 4), legend=False,\n", " title=f\"Regional mean AETI — {REGION}\")\n", "ax.set_ylabel(\"mm/month\"); ax.grid(True)\n", "plt.xticks(range(0, len(df), 6), df[\"month\"][::6], rotation=45)\n", "plt.tight_layout(); plt.show()" ], "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " " ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "
    " ], "image/png": "iVBORw0KGgoAAAANSUhEUgAABW0AAAGGCAYAAAAAW6PhAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Xd4W+X5N/Dv0fTee287zt5x9gYChBFGCS2zjBYoo6XA2zLSUmZLKZTyg5IGKAmUsMMOZJHhDGfYcWzHe29bkm1Z+7x/HB3FTuzEQ9I5Oro/15WLRFakRw8n0tF97uf7MCzLsiCEEEIIIYQQQgghhBAiCjKhB0AIIYQQQgghhBBCCCHkDCraEkIIIYQQQgghhBBCiIhQ0ZYQQgghhBBCCCGEEEJEhIq2hBBCCCGEEEIIIYQQIiJUtCWEEEIIIYQQQgghhBARoaItIYQQQgghhBBCCCGEiAgVbQkhhBBCCCGEEEIIIUREqGhLCCGEEEIIIYQQQgghIkJFW0IIIYQQQgghhBBCCBERKtoSQgghhHiZpUuXYunSpUIPAwDw9ttvg2EY1NTUCD0UQgghhBBCRIOKtoQQQgghbsYXKvlfCoUC8fHxuOWWW9DY2Cj08IiblZSUgGEY+Pj4QKPRDHmfpUuXDjpmBv7KyckBgGF/fvavXbt2oaamBgzD4K9//asbX+kZ/PPzv+RyOZKSknDVVVfh+PHj59xfo9HAx8cHDMOgpKRkyMe85ZZbEBAQ4OKRE0IIIYS4h0LoARBCCCGEeKs//elPSE1NhcFgQH5+Pt5++23s3bsXJ0+ehI+Pj8ue9/vvv3fZY5PRe++99xATE4Pu7m589NFH+OUvfznk/RISEvDss8+ec3twcDAA4L///e+g2999911s3779nNsnTJiA/v5+J41+fG644QasWbMGVqsVJSUleP311/HNN98gPz8f06ZNc9xv69atYBgGMTEx2Lx5M55++mnhBk0IIYQQ4gZUtCWEEEIIEcgll1yCWbNmAQB++ctfIiIiAs8//zy++OILXHfddS57XpVK5bLHJqPDsiy2bNmC9evXo7q6Gps3bx62aBscHIyf//znwz7W2T/Lz8/H9u3bh/w7YomjmDFjxqDxLViwAGvXrsXrr7+ON954w3H7e++9hzVr1iA5ORlbtmyhoi0hhBBCJI/iEQghhBBCRGLRokUAgMrKykG3l5aW4pprrkFYWBh8fHwwa9YsfPHFF+f8/cLCQixZsgS+vr5ISEjA008/jU2bNp2TGTtUpm1bWxtuv/12REdHw8fHB1OnTsU777wz6D4Dl9S/+eabSE9Ph1qtxuzZs3H48OFzxnLLLbcgLS0NPj4+iImJwW233YbOzs4xzQ2/9L2urg6XXXYZAgICEB8fj9deew0AUFRUhOXLl8Pf399R2DubRqPBAw88gMTERKjVamRkZOD555+HzWYbdL+//vWvmD9/PsLDw+Hr64uZM2fio48+OufxGIbBvffei88++wyTJk2CWq3GxIkT8e233474de3btw81NTX42c9+hp/97GfYs2cPGhoaRjk70rF8+XIAQHV1teO2uro6/PTTT445qq6uxv79+4UaIiGEEEKIW1CnLSGEEEKISPCF1dDQUMdtxcXFWLBgAeLj4/Hoo4/C398fH374Ia688kp8/PHHuOqqqwAAjY2NWLZsGRiGwWOPPQZ/f3+89dZbUKvVF3ze/v5+LF26FBUVFbj33nuRmpqKrVu34pZbboFGo8H9998/6P5btmxBT08P7rrrLjAMgxdeeAFXX301qqqqoFQqAQDbt29HVVUVbr31VsTExKC4uBhvvvkmiouLkZ+fD4ZhRj0/VqsVl1xyCRYvXowXXngBmzdvxr333gt/f3/84Q9/wI033oirr74a//d//4ebbroJeXl5SE1NBQDo9XosWbIEjY2NuOuuu5CUlIT9+/fjscceQ3NzM15++WXH8/zjH//A2rVrceONN8JkMuGDDz7Atddeiy+//BKXXnrpoDHt3bsXn3zyCX79618jMDAQr7zyCtatW4e6ujqEh4df8DVt3rwZ6enpmD17NiZNmgQ/Pz+8//77ePjhh4d8/R0dHefc7uvrC39//1HOpjjxFywGzt37778Pf39/XHbZZfD19UV6ejo2b96M+fPnCzVMQgghhBDXYwkhhBBCiFtt2rSJBcD+8MMPbHt7O1tfX89+9NFHbGRkJKtWq9n6+nrHfVesWMFOnjyZNRgMjttsNhs7f/58NjMz03HbfffdxzIMwx47dsxxW2dnJxsWFsYCYKurqx23L1myhF2yZInjzy+//DILgH3vvfcct5lMJjYvL48NCAhgdTody7IsW11dzQJgw8PD2a6uLsd9P//8cxYAu23bNsdter3+nNf9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qFGjMH78ePz85z/Hz372M2zZsgX33Xcfli5diq+//homk0npISqCuZzMarXi448/hsViwVVXXQUAWLBgAe677z48+OCDuOmmm3Dddddh3759frcakNmcWXl5ufM1esaMGdixYweCgoIAAPPmzcPbb78N4NTzMXwdc+klJSvGdO7uueceERYWJl555RVx9913i6CgIPHBBx+I3bt3i/fee09IkiT+97//KT1MRTAb14xGo7j44ovF0qVLRXNzsxDCtoInNjZW/PDDD+LWW28V06dPF+3t7QqP1POYzendfffdYurUqaKhoeGkj5eVlYkrr7xSLF682JmbP2EurnV2dp7UD/rtt98W48aNE0uXLhX79u1zftxfepn1xGzkvfPOO+Kll1466WPV1dUiMjLS5aoLf9n5wFzkFRUViQMHDjj/vGLFChEYGCieffZZ8cQTT4hrrrlGZGRknNTH1V8wmzNrb28Xo0ePFrt37xbt7e3i9ddfFzExMUKSJOfzsT+uRGYup6qqqhK33367MBgMYuTIkeKKK64Qe/bsEUajUfzvf/8TCxcuFEuWLBGtra1KD9XjmM3pvffeeyIhIUG8+eabYvHixaK+vt75ud///vdCp9Od9FztL5hL77Bo64V6vnkrLCwUd999t7jxxhvFuHHjxP/7f//vpK+dPn26uOOOOzw9RMUwG3k9s3nxxRfFlClTxMyZM8Vvf/tbERIS4szigw8+EIMGDfKrbZbMpnc++ugjkZOTI/74xz+KlpaWkz73zjvviOTkZL9sPcJc5P20cPTOO+84i5OOdgArVqwQe/fuVWJ4imI2Z+bIqLOzUwwdOlRs27bN+bnPP//c73+vmMsJjky6urrE4sWLxVdffeX83IYNG0R8fLyzXY2/YTbyjEajMJvNYuHChWLDhg1CCCGuueYaER4eLrKysk5pI+EvmIu8mpoacdddd4kJEyaIvLy8kz735z//WSQmJoqKigqFRqcsZiOvpKREXHLJJWL8+PEntQMQwnYDNisrS3z00UdKDlERzKV3dEqv9KXea2pqQmRkJDQaDSwWC7RaLTIyMvDyyy+jq6sLs2fPRmJiIgDblighBAwGA9LT0xUeufsxG3k9szGbzdDpdPj1r3+NqKgorFmzBkePHsXvf/97/AfkDXIAABFlSURBVPrXvwYAGAwGhIeHKzxqz2A28ior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j9m4xlzkMRt5zEYes3GNuShDp/QA/I3JZEJTUxOuuuoqAIDVaoVGo0F6ejoaGhoAAEIICCEQFhaGP/zhDyd9nS9jNvKYjTxmI4/ZuMZc5DEbecxGHrNxjbnIYzbymI08ZuMac5HHbOQxG3nMxjXmogwm52EJCQl49913MXPmTACAxWIBAKSkpDgnsiRJ0Gg0JzV1liTJ84P1MGYjj9nIYzbymI1rzEUes5HHbOQxG9eYizxmI4/ZyGM2rjEXecxGHrORx2xcYy7KYNFWAVlZWQBsdxz0ej0A2x2Jmpoa59c899xzePPNN52n7fnLRGc28piNPGYjj9m4xlzkMRt5zEYes3GNuchjNvKYjTxm4xpzkcds5DEbeczGNebieWyPoCCNRgMhhHMSO+5OPPHEE3jmmWewe/du6HT++U/EbOQxG3nMRh6zcY25yGM28piNPGbjGnORx2zkMRt5zMY15iKP2chjNvKYjWvMxXO40lZhjnPgdDodUlNT8X//93944YUXsGPHDowZM0bh0SmL2chjNvKYjTxm4xpzkcds5DEbeczGNeYij9nIYzbymI1rzEUes5HHbOQxG9eYi2ew9K0wxx0JvV6PN954A+Hh4di4cSPGjRun8MiUx2zkMRt5zEYes3GNuchjNvKYjTxm4xpzkcds5DEbeczGNeYij9nIYzbymI1rzMUzuNJWJc4//3wAwObNmzFhwgSFR6MuzEYes5HHbOQxG9eYizxmI4/ZyGM2rjEXecxGHrORx2xcYy7ymI08ZiOP2bjGXNxLEo41zaS49vZ2hISEKD0MVWI28piNPGYjj9m4xlzkMRt5zEYes3GNuchjNvKYjTxm4xpzkcds5DEbeczGNebiPizaEhEREREREREREakI2yMQERERERERERERqQiLtkREREREREREREQqwqItERERERERERERkYqwaEtERERERERERESkIizaEhEREREREREREakIi7ZEREREREREREREKsKiLRERERGRGz311FMYO3as0sMgIiIiIi/Coi0RERERUT+RJAmfffaZ0sMgIiIiIi/Hoi0RERERERERERGRirBoS0REREQ+Z86cOVi2bBmWL1+OqKgoJCQk4I033kB7ezt+9rOfISwsDJmZmfj222+df2fdunWYNGkSDAYDkpKS8PDDD8NsNp/0Pe+55x48+OCDiI6ORmJiIp566inn5wcNGgQAuPzyyyFJkvPPDv/+978xaNAgRERE4Nprr0Vra6s7IyAiIiIiL8aiLRERERH5pH/+85+IjY3F9u3bsWzZMtx5551YsmQJpk2bhl27dmHhwoW46aab0NHRgWPHjmHx4sWYOHEi9u7di1dffRVvvfUWnnnmmVO+Z0hICLZt24YXXngBTz/9NFauXAkAyM3NBQD84x//wPHjx51/BoDCwkJ89tln+Oqrr/DVV19h3bp1eP755z0XBhERERF5FUkIIZQeBBERERFRf5ozZw4sFgs2bNgAALBYLIiIiMAVV1yBf/3rXwCAqqoqJCUlYcuWLfjyyy/xySef4NChQ5AkCQDwt7/9DQ899BCam5uh0WhO+Z4AMGnSJMybN89ZgJUkCZ9++ikuu+wy59c89dRT+H//7/+hqqoKYWFhAIAHH3wQ69evx9atWz0RBxERERF5Ga60JSIiIiKfNHr0aOf/12q1iImJwahRo5wfS0hIAADU1NTg0KFDmDp1qrNgCwDTp09HW1sbKioqXH5PAEhKSkJNTc0ZxzJo0CBnwfZs/h4RERER+ScWbYmIiIjIJ+n1+pP+LEnSSR9zFGitVus5fc/e/P2+/j0iIiIi8k8s2hIRERGR3xs2bBi2bNmCnp3DNm3ahLCwMAwYMKDX30ev18NisbhjiERERETkR1i0JSIiIiK/d9ddd6G8vBzLli3D4cOH8fnnn+PJJ5/EfffdB42m95fMgwYNwurVq1FVVYXGxkY3jpiIiIiIfBmLtkRERETk91JSUvDNN99g+/btGDNmDO644w4sXboUjz322Fl9nz/+8Y9YuXIlUlNTkZOT46bREhEREZGvk0TPPWBEREREREREREREpCiutCUiIiIiIiIiIiJSERZtiYiIiIiIiIiIiFSERVsiIiIiIiIiIiIiFWHRloiIiIiIiIiIiEhFWLQlIiIiIiIiIiIiUhEWbYmIiIiIiIiIiIhUhEVbIiIiIiIiIiIiIhVh0ZaIiIiIiIiIiIhIRVi0JSIiIiIiIiIiIlIRFm2JiIiIiIiIiIiIVIRFWyIiIiIiIiIiIiIVYdGWiIiIiIiIiIiISEX+P1w58PJv+ZRWAAAAAElFTkSuQmCC\n" }, "metadata": {} } ], "execution_count": 9 }, { "id": "cell-011", "cell_type": "markdown", "metadata": { "id": "cell-011" }, "source": [ "## 5. (Optional) Export copies to your own assets | (اختياري) تصدير نسخ إلى أصولك\n", "\n", "The groundwater model (Notebook 3) reads WaPOR **directly from FAO's bucket**, so this step is *not required*. But exporting to your own assets is useful when you want faster repeated access, or a snapshot that never changes.\n", "\n", "نموذج المياه الجوفية (الدفتر ٣) يقرأ مباشرة من مستودع الفاو، لذا هذه الخطوة *غير مطلوبة*. لكنها مفيدة إذا أردت وصولاً متكرراً أسرع أو نسخة ثابتة.\n" ] }, { "id": "cell-012", "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 17 }, "id": "cell-012", "outputId": "c703ecf0-d1f2-4a0f-dc05-187e7f5caead" }, "source": [ "EXPORT_AETI = False # set True to run the exports\n", "AETI_FOLDER = f\"projects/{PROJECT_ID}/assets/WAPOR_AETI_{REGION}\"\n", "\n", "if EXPORT_AETI:\n", " try:\n", " ee.data.createAsset({\"type\": \"Folder\"}, AETI_FOLDER)\n", " print(\"Created folder:\", AETI_FOLDER)\n", " except Exception as e:\n", " print(\"Folder exists or error:\", e)\n", "\n", " for month in available:\n", " img = wapor_month_image(month)\n", " task = ee.batch.Export.image.toAsset(\n", " image=img,\n", " description=f\"AETI_{REGION}_{month}\",\n", " assetId=f\"{AETI_FOLDER}/AETI_{month.replace('-', '_')}\",\n", " scale=20,\n", " region=aoi.bounds(1),\n", " maxPixels=1e13,\n", " )\n", " task.start()\n", " print(f\"Started {len(available)} export tasks — monitor at https://code.earthengine.google.com/tasks\")" ], "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " " ] }, "metadata": {} } ], "execution_count": 10 }, { "id": "cell-013", "cell_type": "markdown", "metadata": { "id": "cell-013" }, "source": [ "## ✏️ Exercises | تمارين\n", "\n", "1. Run the notebook with `REGION = \"ERB\"` (Iraq) and compare the number of available months.\n", "2. Look at other mapsets in the WaPOR catalog, e.g. `L3-T-M` (transpiration) or `L3-NPP-D` (net primary production, dekadal): change `MAPSET` and explore.\n", "3. In section 4, which month had the highest regional AETI ever? What crop season is that?\n", "\n", "**Next | التالي**: Notebook 3 — the groundwater model itself.\n" ] } ] }